from __future__ import print_function __author__ = 'oddBit' from kivy.uix.floatlayout import FloatLayout from HexScatter import HexScatter, StarCounter from MapGenerator import MapGenerator from kivy.core.window import Window from kivy.uix.image import Image from data.gameData import * class MapCanvas(FloatLayout): def __init__(self, cols, rows, difficulty, hardcoreOption, soundsOption, musicOptions, **kwargs): super(MapCanvas, self).__init__(**kwargs) self.soundsOption = soundsOption self.musicOption = musicOptions self.hardcore_option = hardcoreOption self.tile_map = None self.counter = None self.map_generator = MapGenerator(cols, rows) self.hex_tiles = self.map_generator.generate_map(difficulty, hardcoreOption) self.difficulty = difficulty tile_map = self.build_map_tiles() self.add_tile_map(tile_map) self.star_counter = StarCounter(23) self.add_counter(self.star_counter) self.return_to_menu = False self.enemy_turn_splash = None self.tile_too_far_splash = None def add_tile_map(self, tile_map): for tile in tile_map.tiles: if tile.player: px = tile.player.x py = tile.player.y break self.tile_map = tile_map self.tile_map.pos = (-px + Window.size[0] / 2, -py + Window.size[1] / 2) self.add_widget(self.tile_map) def add_counter(self, counter): self.counter = counter self.add_widget(self.counter) def go_to_main_menu(self): self.tile_map.popup.dismiss() self.return_to_menu = True def reload_level(self, new_map=False, new_difficulty=0): if new_difficulty: self.difficulty = new_difficulty if self.tile_map.popup: self.tile_map.popup.dismiss() self.clear_widgets() self.tile_map = None if new_map: self.hex_tiles = None print (new_difficulty) rows, cols = map_sizes[new_difficulty-1] self.map_generator = MapGenerator(cols, rows) self.hex_tiles = self.map_generator.generate_map(self.difficulty, self.hardcore_option) tile_map = self.build_map_tiles() self.add_tile_map(tile_map) self.star_counter = StarCounter(23) self.add_counter(self.star_counter) def show_enemy_turn_splash(self): self.enemy_turn_splash = Image(source='assets/graphics/ui/enemyTurn.png', size_hint=(1, 1), pos_hint={'x': 0, 'y': 0}) self.add_widget(self.enemy_turn_splash) def remove_enemy_turn_splash(self): if self.enemy_turn_splash: self.remove_widget(self.enemy_turn_splash) def show_too_far_splash(self): self.tile_too_far_splash = Image(source='assets/graphics/ui/tileTooFar.png', size_hint=(1, 1), pos_hint={'x': 0, 'y': 0}) self.add_widget(self.tile_too_far_splash) def remove_tile_too_far_splash(self, dt): if self.tile_too_far_splash: self.remove_widget(self.tile_too_far_splash) def build_map_tiles(self): return HexScatter(self.hex_tiles, self.difficulty, self.soundsOption, self.musicOption, size=[18 * 120 + 1080, 22 * 120 + 1920], pos=[0, 0], auto_bring_to_front=False)