#!/usr/bin/python # encoding: utf-8 __author__ = 'oddBit' import kivy kivy.require('1.8.0') from kivy.app import App from kivy.lang import Builder from MapCanvas import MapCanvas from MainMenu import MainMenu from kivy.uix.boxlayout import BoxLayout from kivy.clock import Clock from kivy.core.window import Window from kivy.uix.image import Image from SettingsJson import settings_json from kivy.core.audio import SoundLoader from HelpMenu import HelpMenu from kivy.utils import platform from data.gameData import * try: from revmob import RevMob as revmob use_ads = True except ImportError: use_ads = False Builder.load_file('gameScreen.kv') Builder.load_file('mainMenu.kv') if use_ads: if platform() == 'android': REVMOB_APP_ID = 'android_id' elif platform() == 'ios': REVMOB_APP_ID = 'ios_id' else: REVMOB_APP_ID = 'unknown platform for RevMob' revmob.start_session(REVMOB_APP_ID) class HexTap(App): def __init__(self, **kwargs): super(HexTap, self).__init__(**kwargs) self.difficulty = 1 self.first_run = True self.current_state = 'mainMenu' self.content = BoxLayout() self.main_menu = MainMenu() self.help_menu = HelpMenu() self.game_map = None self.content.add_widget(self.main_menu) self.music = SoundLoader.load('assets/audio/music.ogg') self.soundsOption = True self.musicOption = False self.hardcoreOption = False def safe_options_loading(self): if type(self.soundsOption) == bool or type(self.soundsOption) == int: pass elif self.soundsOption == 'True' or '1' in self.soundsOption: self.soundsOption = True else: self.soundsOption = False if type(self.musicOption) == bool or type(self.musicOption) == int: pass elif self.musicOption == 'True' or '1' in self.musicOption: self.musicOption = True else: self.musicOption = False if type(self.hardcoreOption) == bool or type(self.hardcoreOption) == int: pass elif self.hardcoreOption == 'True' or '1' in self.hardcoreOption: self.hardcoreOption = True else: self.hardcoreOption = False def build(self): self.use_kivy_settings = False self.soundsOption = self.config.get('sound', 'soundsOption') self.musicOption = self.config.get('sound', 'musicOption') self.hardcoreOption = self.config.get('game', 'hardcoreOption') self.safe_options_loading() Clock.schedule_interval(self.update, 1. / 1.5) return self.content def show_help(self): self.content.clear_widgets() self.content.add_widget(self.help_menu) def generate_main_menu(self): self.content.clear_widgets() self.content.add_widget(self.main_menu) def new_game(self): if use_ads: revmob.show_popup() self.content.clear_widgets() self.content.add_widget(Image(source='assets/graphics/ui/loading.png', size=Window.size, allow_stretch=True)) Clock.schedule_once(self.post_splash) def post_splash(self, dt): rows, cols = map_sizes[self.difficulty-1] self.game_map = MapCanvas(cols, rows, self.difficulty, self.hardcoreOption, self.soundsOption, self.musicOption) self.content.clear_widgets() self.content.add_widget(self.game_map) def update(self, dt): if self.main_menu.start_game: self.new_game() self.main_menu.start_game = False if self.main_menu.show_help: self.show_help() self.main_menu.show_help = False if self.help_menu.back_to_main: self.generate_main_menu() self.help_menu.back_to_main = False if self.game_map and self.game_map.return_to_menu: self.generate_main_menu() self.game_map.return_to_menu = False if self.musicOption and self.music.state == 'stop': self.music.play() elif not self.musicOption and self.music.state == 'play': self.music.stop() def build_config(self, config): try: config.setdefaults('sound', { 'musicOption': '0', 'soundsOption': '1' }) config.setdefaults('game', { 'hardcoreOption': '0' }) except TypeError: config.setdefaults('sound', { 'musicOption': False, 'soundsOption': True }) config.setdefaults('game', { 'hardcoreOption': False }) def build_settings(self, settings): settings.add_json_panel('hexTap options', self.config, data=settings_json) def on_config_change(self, config, section, key, value): if key == 'musicOption': if type(value) == bool or type(value) == int: self.musicOption = value elif value == 'True' or '1' in value: self.musicOption = True else: self.musicOption = False elif key == 'soundsOption': if type(value) == bool or type(value) == int: self.soundsOption = value elif value == 'True' or '1' in value: self.soundsOption = True else: self.soundsOption = False elif key == 'hardcoreOption': if type(value) == bool or type(value) == int: self.hardcoreOption = value elif value == 'True' or '1' in value: self.hardcoreOption = True else: self.hardcoreOption = False def on_pause(self): return True def on_resume(self): pass if __name__ == '__main__': HexTap().run()