Ejemplo n.º 1
0
    def loop(self, screen):
        Image.loop(self, screen)

        if self.anim.boum:
            self.anim.explosion.update_animation(state="boum")
            explosion_pos = Vector2()
            if self.anim.player.anim.direction:
                explosion_pos = (
                    self.anim.player.pos
                    + engine.screen_size * self.anim.player.screen_relative_pos
                    + Vector2(self.anim.player.size.x, 0)
                )
            else:
                explosion_pos = (
                    self.anim.player.pos
                    + engine.screen_size * self.anim.player.screen_relative_pos
                    - Vector2(self.anim.player.size.x, 0)
                )
            img_manager.show_image(
                self.anim.explosion.img,
                engine.screen,
                pos=explosion_pos - level_manager.level.screen_pos,
                new_size=Vector2(36, 36),
            )
            if self.anim.explosion.index == 6:
                self.anim.boum = False
Ejemplo n.º 2
0
 def __init__(self,pos,size=None, angle=0, relative=False, path="", parallax_factor=1.0, move=False):
     Image.__init__(self,
                    pos,
                    size=size,
                    angle=angle,
                    relative=relative,
                    path=path,
                    parallax_factor=parallax_factor)
     self.move = move
Ejemplo n.º 3
0
    def init(self):

        self.font = sfml.Font.from_file("data/font/SILKWONDER.ttf")
        self.screen_pos = Vector2()
        self.time = 0
        self.player = Image(Vector2())

        self.dialog = False
        self.last_checkpoint = Vector2()
        self.cat = Image(Vector2(),path="data/sprites/text/CatPortrait.png",size=Vector2(79,74))
        self.cat.init_image(size=Vector2(79,74))
        self.cat.pos = engine.screen_size-self.cat.size
        self.ferret = Image(Vector2(),path="data/sprites/text/FerretPortrait.png",size=Vector2(73,74))
        self.ferret.init_image(size=Vector2(73,74))

        self.ferret.pos = Vector2(0,engine.screen_size.y)-Vector2(0,self.cat.size.y)
Ejemplo n.º 4
0
 def init(self):
     self.text = Image(path='data/sprites/text/logo-dorian_sred-2b_gameboy.png',
                       pos=Vector2(0,16),
                       size=Vector2(160, 128))
     self.text.init_image()
     snd_manager.set_playlist(['data/sound/logo_dorian_8bit.ogg'])
     self.screen_pos = Vector2()
Ejemplo n.º 5
0
class Kwakwa(Scene):
    def init(self):
        self.loading_screen = LoadingScreen()
        self.loading_screen.init_method = [GameState(CONST.startup)]
        self.loading_screen.init()
        self.text = Image('data/sprites/text/kwakwa.png',
                          engine.get_screen_size()/2)
        self.text.pos = self.text.pos-self.text.size/2
        self.count = 4 * CONST.framerate
        snd_manager.play_music("data/sound/pissed_off_duck.wav")

    def loop(self, screen):
        img_manager.draw_rect(screen,Vector2(),Rect(Vector2(0,0),engine.get_screen_size()),(255,255,255))
        self.text.loop(screen, Vector2())
        if snd_manager.check_music_status():
            from engine.level_manager import switch_level
            switch_level(self.loading_screen)
Ejemplo n.º 6
0
class Dorian(Scene):
    def init(self):
        self.text = Image(path='data/sprites/text/logo-dorian_sred-2b_gameboy.png',
                          pos=Vector2(0,16),
                          size=Vector2(160, 128))
        self.text.init_image()
        snd_manager.set_playlist(['data/sound/logo_dorian_8bit.ogg'])
        self.screen_pos = Vector2()
    def loop(self, screen):
        img_manager.draw_rect(screen, Vector2(), Rect(Vector2(0, 0), engine.get_screen_size()), (255, 255, 255))
        self.text.loop(screen)

        if snd_manager.get_music_status():
            from engine.level_manager import switch_level

            switch_level(TitleScreen())
        snd_manager.update_music_status()
Ejemplo n.º 7
0
 def init(self):
     self.loading_screen = LoadingScreen()
     self.loading_screen.init_method = [GameState(CONST.startup)]
     self.loading_screen.init()
     self.text = Image('data/sprites/text/kwakwa.png',
                       engine.get_screen_size()/2)
     self.text.pos = self.text.pos-self.text.size/2
     self.count = 4 * CONST.framerate
     snd_manager.play_music("data/sound/pissed_off_duck.wav")
Ejemplo n.º 8
0
    def init(self):
        snd_manager.set_playlist(['data/music/menu_gbjam.ogg'])
        self.img = img_manager.load_image("data/sprites/text/Title.png")
        self.font = sfml.Font.from_file("data/font/SILKWONDER.ttf")
        self.text = sfml.Text("PRESS START", self.font, 10)
        self.text.position = (58,63)
        self.text.color = sfml.Color.BLACK
        self.screen_pos = Vector2()
        self.time = 0
        self.dialog = False

        self.cat = Image(Vector2(),path="data/sprites/text/CatPortrait.png",size=Vector2(79,74))
        self.cat.init_image(size=Vector2(79,74))
        self.cat.pos = engine.screen_size-self.cat.size
        self.ferret = Image(Vector2(),path="data/sprites/text/FerretPortrait.png",size=Vector2(73,74))
        self.ferret.init_image(size=Vector2(73,74))

        self.ferret.pos = Vector2(0,engine.screen_size.y)-Vector2(0,self.cat.size.y)
Ejemplo n.º 9
0
 def __init__(self,pos,size,button_img='',button_text='',font='',show=False,margin=10):
     GameObject.__init__(self)
     self.pos = pos
     self.size = size
     self.update_rect(self)
     self.button_image = None
     self.show = show
     if button_img != '':
         self.button_image = Image(button_img, pos, size=size)
     self.text = Text(pos, size[1]-margin, font, text=button_text)
Ejemplo n.º 10
0
class TitleScreen(Scene):
    def init(self):
        snd_manager.set_playlist(['data/music/menu_gbjam.ogg'])
        self.img = img_manager.load_image("data/sprites/text/Title.png")
        self.font = sfml.Font.from_file("data/font/SILKWONDER.ttf")
        self.text = sfml.Text("PRESS START", self.font, 10)
        self.text.position = (58,63)
        self.text.color = sfml.Color.BLACK
        self.screen_pos = Vector2()
        self.time = 0
        self.dialog = False

        self.cat = Image(Vector2(),path="data/sprites/text/CatPortrait.png",size=Vector2(79,74))
        self.cat.init_image(size=Vector2(79,74))
        self.cat.pos = engine.screen_size-self.cat.size
        self.ferret = Image(Vector2(),path="data/sprites/text/FerretPortrait.png",size=Vector2(73,74))
        self.ferret.init_image(size=Vector2(73,74))

        self.ferret.pos = Vector2(0,engine.screen_size.y)-Vector2(0,self.cat.size.y)
    def loop(self, screen):
        img_manager.draw_rect(screen, Vector2(), Rect(Vector2(0, 0), engine.get_screen_size()), (255, 255, 255))
        self.cat.loop(screen)
        self.ferret.loop(screen)

        if not self.dialog:
            img_manager.show_image(self.img,screen,Vector2(0,-48))


            if (self.time % 20) > 10:
                img_manager.buffer.draw(self.text)

            self.time += 1
        if not self.dialog and (input_manager.get_button("A") or input_manager.get_button("B")):
            snd_manager.set_playlist(["data/music/intro_BOSS1_gbjam.ogg","data/music/BOSS1_gbjam.ogg"])
            self.dialog = 1
            engine.show_dialog = True
            engine.textbox.set_text("Fury", "General Meow, you are still alive")
        if self.dialog == 1 and engine.textbox.finished:
            if input_manager.get_button('A') or input_manager.get_button('B'):
                self.dialog = 2
                engine.textbox.set_text("General Meow", "I'm not easy to kill. Don't forget it")
        if self.dialog == 2 and engine.textbox.finished:
            if input_manager.get_button('A') or input_manager.get_button('B'):
                self.dialog = 3
                engine.textbox.set_text("Fury","I won't miss you next time")
        if self.dialog == 3 and engine.textbox.finished:
            if input_manager.get_button('A') or input_manager.get_button('B'):
                engine.show_dialog = False
                from engine.level_manager import switch_level
                switch_level(GameState(CONST.startup))
        snd_manager.update_music_status()
Ejemplo n.º 11
0
 def init(self):
     #self.loading_screen = LoadingScreen()
     #self.loading_screen.init_method = [GameState(CONST.startup)]
     #self.loading_screen.init()
     self.text = Image(path='data/sprites/text/kwakwa_logo.png',
                       pos=Vector2(),
                       size=Vector2(160,144))
     self.text.init_image()
     self.count = 4 * CONST.framerate
     snd_manager.play_music("data/sound/logo_kwa_8bit.ogg")
     self.screen_pos = Vector2()
     self.game_over = False
Ejemplo n.º 12
0
class Kwakwa(Scene):
    def init(self):
        #self.loading_screen = LoadingScreen()
        #self.loading_screen.init_method = [GameState(CONST.startup)]
        #self.loading_screen.init()
        self.text = Image(path='data/sprites/text/kwakwa_logo.png',
                          pos=Vector2(),
                          size=Vector2(160,144))
        self.text.init_image()
        self.count = 4 * CONST.framerate
        snd_manager.play_music("data/sound/logo_kwa_8bit.ogg")
        self.screen_pos = Vector2()
        self.game_over = False

    def loop(self, screen):
        img_manager.draw_rect(screen,Vector2(),Rect(Vector2(0,0),engine.get_screen_size()),(255,255,255))
        self.text.loop(screen)
        if snd_manager.get_music_status():
            from engine.level_manager import switch_level
            switch_level(Dorian())
        snd_manager.update_music_status()
Ejemplo n.º 13
0
class ButtonGUI(GameObject):
    def __init__(self,pos,size,button_img='',button_text='',font='',show=False,margin=10):
        GameObject.__init__(self)
        self.pos = pos
        self.size = size
        self.update_rect(self)
        self.button_image = None
        self.show = show
        if button_img != '':
            self.button_image = Image(button_img, pos, size=size)
        self.text = Text(pos, size[1]-margin, font, text=button_text)
    def set_text(self,text):
        self.text.change_text(text)
    def loop(self,screen,screen_pos):
        if self.show:
            if self.button_image:
                self.button_image.loop(screen,screen_pos)
            if self.button_text:
                self.button_text.loop(screen,screen_pos)
    
    def execute_event(self):
        GameObject.execute_event(self)
Ejemplo n.º 14
0
 def init_dialog_text(self):
     self.dialog_text = Text(pos=engine.get_screen_size()*Vector2(self.dialog_margin,1-self.dialog_y_size+self.dialog_margin),
                             size=engine.get_screen_size()*Vector2(1-2*self.dialog_margin,self.dialog_y_size/2-1.5*self.dialog_margin).y,
                             font=self.dialog_font,
                             text="",
                             relative=True)
     self.dialog_text2 = Text(pos=engine.get_screen_size()*Vector2(self.dialog_margin,1-self.dialog_y_size/2+self.dialog_margin),
                              size=engine.get_screen_size()*Vector2(1-2*self.dialog_margin,self.dialog_y_size/2-1.5*self.dialog_margin).y,
                              font=self.dialog_font,
                              text="",
                              relative=True)
     self.dialog_box = Image(path=self.dialog_box_image,
                             pos=(engine.get_screen_size()*Vector2(0,1-self.dialog_y_size)).get_tuple(),
                             size=(engine.get_screen_size()*Vector2(1.0, self.dialog_y_size)).get_tuple(),
                             relative=True)
Ejemplo n.º 15
0
class Dialog(Scene):
    def init(self):

        self.font = sfml.Font.from_file("data/font/SILKWONDER.ttf")
        self.screen_pos = Vector2()
        self.time = 0
        self.player = Image(Vector2())

        self.dialog = False
        self.last_checkpoint = Vector2()
        self.cat = Image(Vector2(),path="data/sprites/text/CatPortrait.png",size=Vector2(79,74))
        self.cat.init_image(size=Vector2(79,74))
        self.cat.pos = engine.screen_size-self.cat.size
        self.ferret = Image(Vector2(),path="data/sprites/text/FerretPortrait.png",size=Vector2(73,74))
        self.ferret.init_image(size=Vector2(73,74))

        self.ferret.pos = Vector2(0,engine.screen_size.y)-Vector2(0,self.cat.size.y)

    def loop(self, screen):
        img_manager.draw_rect(screen, Vector2(), Rect(Vector2(0, 0), engine.get_screen_size()), (255, 255, 255))
        self.cat.loop(screen)
        self.ferret.loop(screen)
        if not self.dialog:
            snd_manager.set_playlist(["data/music/intro_BOSS1_gbjam.ogg","data/music/BOSS1_gbjam.ogg"])
            self.dialog = 1
            engine.show_dialog = True
            engine.textbox.set_text("Fury", "I'm coming for you, General Meow")
        if self.dialog == 1 and engine.textbox.finished:
            if input_manager.get_button('A') or input_manager.get_button('B'):
                self.dialog = 3
                engine.textbox.set_text("General Meow", "I have a surprise for you, Fury")

        if self.dialog == 3 and engine.textbox.finished:
            if input_manager.get_button('A') or input_manager.get_button('B'):
                engine.show_dialog = False
                from levels.gamestate import GameState
                boss_level = GameState("data/json/boss_level.json")
                boss_level.last_checkpoint = self.last_checkpoint
                level_manager.switch_level(boss_level)
        snd_manager.update_music_status()
Ejemplo n.º 16
0
def load_image_from_json(image_data, level, image_type=None):
    global global_object_id
    image = None
    if image_type is None:
        try:
            image_type = image_data["type"]
        except KeyError:
            log("Error: No image_type for:" + str(image_data),1)
            return 
    pos = get_element(image_data, "pos")
    size = get_element(image_data, "size")
    layer = get_element(image_data, "layer")
    angle = get_element(image_data, "angle")
    object_id = get_element(image_data, "id")
    if object_id is None:
        object_id = global_object_id
    if angle is None:
        angle = 0
    if image_type == "GameObject":
        image = GameObject()
        image.pos = Vector2(pos)
        image.size = Vector2(size)
        image.update_rect()
        image.angle = angle
        image.id = object_id
    elif image_type == "Image":
        image = Image.parse_image(image_data, pos, size, angle)
        if image is not None:
            image.id = object_id
    elif image_type == "Text":
        font = get_element(image_data, "font")
        text = get_element(image_data, "text")
        color = get_element(image_data, "color")
        if font and text:
            font = CONST.path_prefix+font
        else:
            log("Invalid arg font and text not defined for Text",1)
            return
        if not color:
            color = [0,0,0]
        image = Text(pos, size, font, text, angle,color)
        image.id = object_id
    else:
        if not isinstance(image_type,CONST.string_type):
            log("image_type not a string",1)
            return
        for c in image_type:
            if c != '.' and c != '_' and not c.isalpha():
                return
        dir_list = image_type.split(".")
        try:
            exec('''from %s import %s'''%(".".join(dir_list[0:len(dir_list)-1]), dir_list[len(dir_list)-1]))
        except ImportError:
            log("Error: ImportError with: "+str(image_type),1)
            return
        try:
            d = locals()
            exec('''image = %s.parse_image(image_data, pos, size, angle)'''%(dir_list[len(dir_list)-1]),globals(),d)
            image = d['image']
        except Exception as e:
            import traceback
            log('Error with loading image_type: %s'%(image_type)+" "+str(e),1)
            traceback.print_exc()
            return
    physic_objects = get_element(image_data, "physic_objects")
    if physic_objects:
        load_physic_objects(physic_objects, image)
    
    event_path = get_element(image_data, "event")
    if image and event_path:
        image.event = load_event(event_path)
    if not layer or layer < 0:
        layer = 1
    elif layer > len(level.objects)-1:
        layer = len(level.objects)-1
    if image:
        level.objects[layer-1].append(image)
    global_object_id += 1
    return image
Ejemplo n.º 17
0
class GUI():
    def __init__(self):
        self.dialog = False

        self.answers_text = []
        self.answers_image = []
        self.dialog_event = None

        self.dialog_box_image = 'data/sprites/gui/dialog_box.png'

        self.show_mouse = True

        self.dialog_font = "data/font/pixel_arial.ttf"
        self.dialog_y_size = 1.0 / 3.0
        self.answer_size = Vector2(1.0 / 4.0, 1.0 / 6.0)
        self.dialog_margin = 0.05
        self.answer_margin = 0.0
        self.gui_click = False
        self.init_dialog_text()

    def init_dialog_text(self):
        self.dialog_text = Text(pos=engine.get_screen_size()*Vector2(self.dialog_margin,1-self.dialog_y_size+self.dialog_margin),
                                size=engine.get_screen_size()*Vector2(1-2*self.dialog_margin,self.dialog_y_size/2-1.5*self.dialog_margin).y,
                                font=self.dialog_font,
                                text="",
                                relative=True)
        self.dialog_text2 = Text(pos=engine.get_screen_size()*Vector2(self.dialog_margin,1-self.dialog_y_size/2+self.dialog_margin),
                                 size=engine.get_screen_size()*Vector2(1-2*self.dialog_margin,self.dialog_y_size/2-1.5*self.dialog_margin).y,
                                 font=self.dialog_font,
                                 text="",
                                 relative=True)
        self.dialog_box = Image(path=self.dialog_box_image,
                                pos=(engine.get_screen_size()*Vector2(0,1-self.dialog_y_size)).get_tuple(),
                                size=(engine.get_screen_size()*Vector2(1.0, self.dialog_y_size)).get_tuple(),
                                relative=True)

    def set_dialog(self, text, text2=''):
        pass

    def set_answers(self, answers):
        del self.answers_text[:]
        del self.answers_image[:]
        i = 0
        answer_nmb = len(answers)
        for answer in answers:

            pos = (engine.get_screen_size()*Vector2((1 - self.answer_size.x), ((1 - self.dialog_y_size) - (answer_nmb - i) * self.answer_size.y)))
            size = (engine.get_screen_size()*Vector2(self.answer_size.x, self.answer_size.y))
            self.answers_text.append(Text(pos=pos, size=size.y, font=self.dialog_font, text=answer, relative=True))
            if self.dialog_box_image:
                self.answers_image.append(Image(self.dialog_box_image, pos, size=size, relative=True))
            i += 1

    def loop(self, screen):
        """Loop of the GUI part of the Gamestate"""

        '''Event
        If mouse_click on element, execute its event, of not null'''
        if self.show_mouse:
            show_mouse()
            mouse_pos, pressed = get_mouse()
            if pressed[0] and not self.gui_click:
                event = None
                self.gui_click = True
                if not self.dialog:
                    for layer in self.objects:
                        for image in layer:
                            if image.check_click(mouse_pos, self.screen_pos):
                                event = image.event
                else:
                    if self.dialog_text2.time >= self.dialog_text2.gradient:
                        if len(self.answers_image) == 0:
                            self.dialog = False
                            self.dialog_event.answer()
                        for i, answer_image in enumerate(self.answers_image):

                            if answer_image.check_click(mouse_pos, self.screen_pos):
                                self.dialog = False
                                self.dialog_event.answer(self.answers_text[i].text)
                                break
                    else:
                        self.dialog_text.end_gradient()
                        self.dialog_text2.end_gradient()

                if event:
                    event.execute()
            elif not pressed[0]:
                self.gui_click = False
        '''Dialog'''
        if self.dialog and self.dialog_text and not self.editor:
            show_mouse()
            if self.dialog_text.time >= self.dialog_text.gradient:
                for button in self.answers_image:
                    '''show answers'''
                    button.loop(screen, self.screen_pos)
                for answer in self.answers_text:
                    answer.loop(screen, self.screen_pos)
            self.dialog_box.loop(screen, self.screen_pos)
            self.dialog_text.loop(screen, self.screen_pos)
            if self.dialog_text.time >= self.dialog_text.gradient:
                self.dialog_text2.loop(screen, self.screen_pos)

    @staticmethod
    def load_gui_json(json_dict, level):
        pass