def __init__(self, group, data): image = assets.load_image(data['src']) ItemImage.__init__(self, data.get('left', 0), data.get('top', 0), image) self.image = image if 'rollover_src' in data: self.rollover_image = assets.load_image(data['rollover_src']) self.set_rollover_image(self.rollover_image) else: self.rollover_image = None if 'selected_src' in data: self.selected_image = assets.load_image(data['selected_src']) else: self.selected_image = None if 'value' in data: self.value = data['value'] def handle_select(item, args): group.select(self) self.add_event_handler(ItemEvent.CLICK, handle_select) # Sounds if 'sound_click_handler' in data: self.add_event_handler(ItemEvent.CLICK, data['sound_click_handler']) if 'sound_mouse_enter_handler' in data: self.add_event_handler(ItemEvent.MOUSE_ENTER, data['sound_mouse_enter_handler'])
def create_image(self, data): if 'image' in data: image = data['image'] else: image = assets.load_image(data['src']) item = ItemImage(data.get('left', 0), data.get('top', 0), image, hit_over_transparent = data.get("hit_over_transparent", False)) if 'rollover_src' in data: item.rollover_image = assets.load_image(data['rollover_src']) item.set_rollover_image(item.rollover_image) else: item.rollover_image = None return [item]
def initialize(self): """ Initialize the stage. Its preferred to add initialization code in the function instead of the constructor, because this function is invoked before show stage for first time and after release the memory of the previous stage. """ self.set_closed_handler(self.exit) self.__mouser_cursor_item = ItemImage(0, 0, assets.load_image('cursor.png')) self.__mouse_pointer = (6, 0) self.reset_mouse_cursor() stream = file('data/fonts.yaml', 'r') fonts = load(stream) self.named_items = {} self.named_fonts = {} for font in fonts: loaded_font = assets.load_font(fonts[font]['file_name'], fonts[font]['size']) setattr(self, font, loaded_font) self.named_fonts[font] = loaded_font # Load the sound self.click_sound = assets.load_sound('DGI_Click.ogg') self.mouse_enter_sound = assets.load_sound('DGI_Roll_Over.ogg') self.turn_page_sound = assets.load_sound('DGI_page_turn.ogg') self.data_sounds = { 'sound_click_handler': getattr(self, 'handle_sound_click'), 'sound_mouse_enter_handler': getattr(self, 'handle_sound_mouse_enter') }
def __init__(self, data): image = assets.load_image(data['src']) ItemImage.__init__(self, data.get('left', 0), data.get('top', 0), image) self.image = image if 'rollover_src' in data: self.rollover_image = assets.load_image(data['rollover_src']) else: self.rollover_image = None if 'pressed_src' in data: self.pressed_image = assets.load_image(data['pressed_src']) else: self.pressed_image = None if 'click_handler' in data: self.click_handler = data['click_handler'] else: self.click_handler = None # Sounds if 'sound_click_handler' in data: self.sound_click_handler = data['sound_click_handler'] else: self.sound_click_handler = None if 'sound_mouse_enter_handler' in data: self.sound_mouse_enter_handler = data['sound_mouse_enter_handler'] else: self.sound_mouse_enter_handler = None if 'disabled_src' in data: self.disabled_image = assets.load_image(data['disabled_src']) self.on = True self.turn_off() else: self.disabled_image = None self.on = False self.turn_on()
def __init__(self, stage, left, top, src, value): self.stage = stage image = assets.load_image(src) self.item = ItemImage(left, top, image) self.item.add_event_handler(ItemEvent.CLICK, self.handle_click) self.text = ItemText(left, top, stage.font, 0, str(value), width=self.item.get_width(), height=self.item.get_height(), h_align=2, v_align=2) self.value = value
def __init__(self, left, top, min, max, velocity, good, src, points, collision): self.left = left self.top = top self.min = min self.max = max self.velocity = velocity self.good = good image = assets.load_image(src) self.item = ItemImage(0, 0, image) self.points = points self.collision = collision if max: self.delta = random.choice([-1, 1]) self.delta = random.choice([-1.5, -1, 1, 1.5]) else: self.delta = 0 if DEBUG: self.debug_item = ItemRect(self.get_left(), self.get_top(), self.get_width(), self.get_height(), border=(255, 255, 255))
def __init__(self, stage): global DEFAULT_NAME, DEFAULT_ROOM self.go_to_last = False self.dialog = None self.paginator = None self.background = Layer() self.foreground = Layer() self.focus_group = FocusGroup() self.stage = stage self.current_callback = None self.current_id = None data = self.data = DictClass(load(file('data/common/activity.yaml'))) self.clock_image = ItemImage(0, 0, assets.load_image(data.clock.src)) layers = self.layers = DictClass() for k, i in data.layers.items(): layers[k] = self.create_items(i) self.layers.main.name_input.set_focus_group(self.focus_group) self.layers.main.name_input.set_on_enter(self.handle_next) self.layers.main.name_input.set_text(DEFAULT_NAME) self.layers.main.room_input.set_focus_group(self.focus_group) self.layers.main.room_input.set_on_enter(self.handle_next) self.layers.main.room_input.set_text(DEFAULT_ROOM) self.current_layers = [layers.main.layer] text_box = self.layers.post.text_box = self.create_text_box( data.text_box) self.layers.post.layer.add(text_box) for item in self.stage.create_items_from_yaml(data["background"], self): self.background.add(item) for item in self.stage.create_items_from_yaml(data["foreground"], self): self.foreground.add(item) self.stage.start_timer('msgclock', 15000, self.update_messages_tick)
def initialize(self): GameStage.initialize(self) stream = file('data/fonts.yaml', 'r') fonts = load(stream) for font in fonts: setattr( self, font, assets.load_font(fonts[font]['file_name'], fonts[font]['size'])) self.data = DictClass(load(file('data/memory.yaml'))) self.game_over_layer = Layer() image = assets.load_image( self.data.game_over[self.game.datastore.datamodel.character].src) item = ItemImage(self.data.game_over.left, self.data.game_over.top, image) self.game_over_layer.add(item) self.main_layer = Layer() self.top_layer = Layer() self.time = self.data.time.max self.timer = DictClass({}) image = assets.load_image(self.data.time.src) self.timer['skin'] = ItemImage(self.data.time.left, self.data.time.top, image) self.timer['value'] = ItemText(self.data.time.left, self.data.time.top, self.font, 0, format_time(self.time), width=image.get_width(), height=image.get_height(), h_align=2, v_align=2) self.top_layer.add(self.timer.skin) self.top_layer.add(self.timer.value) self.score = 0 self.score_board = DictClass({}) image = assets.load_image(self.data.score.src) self.score_board['skin'] = ItemImage(self.data.score.left, self.data.score.top, image) self.score_board['value'] = ItemText(self.data.score.left, self.data.score.top, self.font, 0, str(self.score), width=image.get_width(), height=image.get_height(), h_align=2, v_align=2) self.top_layer.add(self.score_board.skin) self.top_layer.add(self.score_board.value) self.deck = [] image_back = assets.load_image(self.data.board.card_back) for k in range(0, len(self.data.board.cards)): image = assets.load_image(self.data.board.cards[k]) self.deck.append([ Card(self, k, image, image_back), Card(self, k, image, image_back) ]) self.range = self.data.start self.cards = [] self.deal() # Load the sound self.card_flip_sound = assets.load_sound('DGI_card_flip.ogg') self.item_found_sound = assets.load_sound('DGI_item_found.ogg') self.wrong_sound = assets.load_sound('DGI_wrong.ogg') self.lose_bell_sound = assets.load_sound('DGI_lose_bell.ogg') self.lose_music_sound = assets.load_sound('DGI_lose_music.ogg')
def initialize(self): GameStage.initialize(self) stream = file('data/fonts.yaml', 'r') fonts = load(stream) for font in fonts: setattr( self, font, assets.load_font(fonts[font]['file_name'], fonts[font]['size'])) self.data = DictClass(load(file('data/asteroids.yaml'))) self.game_over_layer = Layer() image = assets.load_image( self.data.game_over[self.game.datastore.datamodel.character].src) item = ItemImage(self.data.game_over.left, self.data.game_over.top, image) self.game_over_layer.add(item) self.main_layer = Layer() self.top_layer = Layer() self.time = self.data.time.max self.timer = DictClass({}) image = assets.load_image(self.data.time.src) self.timer['skin'] = ItemImage(self.data.time.left, self.data.time.top, image) self.timer['value'] = ItemText(self.data.time.left, self.data.time.top, self.font, 0, format_time(self.time), width=image.get_width(), height=image.get_height(), h_align=2, v_align=2) self.top_layer.add(self.timer.skin) self.top_layer.add(self.timer.value) self.score = 0 self.score_board = DictClass({}) image = assets.load_image(self.data.score.src) self.score_board['skin'] = ItemImage(self.data.score.left, self.data.score.top, image) self.score_board['value'] = ItemText(self.data.score.left, self.data.score.top, self.font, 0, str(self.score), width=image.get_width(), height=image.get_height(), h_align=2, v_align=2) self.top_layer.add(self.score_board.skin) self.top_layer.add(self.score_board.value) self.level = self.data.start self.asteroids = [] self.max_width = 0 self.max_height = 0 for a in self.data.asteroids: item = assets.load_image(a) if self.max_width < item.get_width(): self.max_width = item.get_width() if self.max_height < item.get_height(): self.max_height = item.get_height() self.max_col = int(SCREEN_WIDTH / self.max_width) self.max_row = int(SCREEN_HEIGHT / self.max_height) self.margin_left = (SCREEN_WIDTH % self.max_width) / 2 self.margin_top = (SCREEN_HEIGHT % self.max_height) / 2 # Load the sound self.click_sound = assets.load_sound('DGI_Click.ogg') self.item_found_sound = assets.load_sound('DGI_item_found.ogg') self.wrong_sound = assets.load_sound('DGI_wrong.ogg') self.lose_bell_sound = assets.load_sound('DGI_lose_bell.ogg') self.lose_music_sound = assets.load_sound('DGI_lose_music.ogg')
def initialize(self): GameStage.initialize(self) stream = file('data/fonts.yaml', 'r') fonts = load(stream) for font in fonts: setattr( self, font, assets.load_font(fonts[font]['file_name'], fonts[font]['size'])) self.data = DictClass(load(file('data/invaders.yaml'))) self.good = self.data.start.good self.velocity = self.data.start.velocity self.interval = self.data.start.interval self.game_over_layer = Layer() image = assets.load_image( self.data.bad[self.game.datastore.datamodel.character].src) item = ItemImage(self.data.bad.left, self.data.bad.top, image) self.game_over_layer.add(item) image = assets.load_image( self.data.game_over[self.game.datastore.datamodel.character].src) item = ItemImage(self.data.game_over.left, self.data.game_over.top, image) self.game_over_layer.add(item) image = assets.load_image( self.data.good[self.game.datastore.datamodel.character].src) self.good_indicator = ItemImage(self.data.good.left, self.data.good.top, image) self.text_indicators = [] self.main_layer = Layer() self.top_layer = Layer() self.score = 0 self.score_board = DictClass({}) image = assets.load_image(self.data.score.src) self.score_board['skin'] = ItemImage(self.data.score.left, self.data.score.top, image) self.score_board['value'] = ItemText(self.data.score.left, self.data.score.top, self.font, 0, str(self.score), width=image.get_width(), height=image.get_height(), h_align=2, v_align=2) self.top_layer.add(self.score_board.skin) self.top_layer.add(self.score_board.value) data = DictClass(load(file('data/map/common.yaml'))) params = data.character[self.game.datastore.datamodel.character] params['base'] = data.character.base[ self.game.datastore.datamodel.character].big self.character_animation = Character(**params) self.character = self.character_animation.item self.character.set_left( (SCREEN_WIDTH - self.character.get_width()) / 2) self.character.set_top(SCREEN_HEIGHT - self.character.get_height()) left = self.character.get_left() + self.data.collision.left top = self.character.get_top() + self.data.collision.top width = self.character.get_width( ) - self.data.collision.left - self.data.collision.right height = self.character.get_height( ) - self.data.collision.top - self.data.collision.bottom if DEBUG: self.debug_character = ItemRect(left, top, width, height, border=(255, 255, 255)) self.invaders = [] # Load the sound self.item_found_sound = assets.load_sound('DGI_item_found.ogg') self.lose_hit_sound = assets.load_sound('DGI_lose_hit.ogg') self.lose_music_sound = assets.load_sound('DGI_lose_music.ogg')