コード例 #1
0
    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'])
コード例 #2
0
 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]
コード例 #3
0
    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')
                            }
コード例 #4
0
    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()
コード例 #5
0
 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
コード例 #6
0
 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))
コード例 #7
0
    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)
コード例 #8
0
    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')
コード例 #9
0
    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')
コード例 #10
0
    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')