Exemple #1
0
    def load_game(self):
        try:
            save = open("saves/main_save.xml", "r")

            # Test if there is a current saved game
            if save:
                tree_root = etree.parse("saves/main_save.xml").getroot()
                index = tree_root.find("level/index").text.strip()
                level_name = 'maps/level_' + index + '/'
                game_status = tree_root.find("level/phase").text.strip()
                turn_nb = 0
                if game_status != 'I':
                    turn_nb = int(tree_root.find("level/turn").text.strip())

                # Load level with current game status, foes states, and team
                self.level_id = int(index)
                level = Level(level_name, self.level_id, game_status, turn_nb,
                              tree_root.find("level/entities"))
                self.play(level)
                save.close()
                return
        except FileNotFoundError:
            # No saved game
            self.background_menus.append([self.active_menu, True])

            name = "Load Game"
            entries = [[{
                'type': 'text',
                'text': "No saved game.",
                'font': fonts['MENU_SUB_TITLE_FONT']
            }]]
            width = self.screen.get_width() // 2
            self.active_menu = InfoBox(name,
                                       "",
                                       "imgs/interface/PopUpMenu.png",
                                       entries,
                                       width,
                                       close_button=1)
    def load_game(self):
        try:
            save = open("saves/main_save.xml", "r")

            # Test if there is a current saved game
            if save:
                tree_root = etree.parse("saves/main_save.xml").getroot()
                level_name = tree_root.find("level/name").text.strip()
                game_status = tree_root.find("level/phase").text.strip()
                turn_nb = 0
                if game_status != 'I':
                    turn_nb = int(tree_root.find("level/turn").text.strip())
                team = []
                for player in tree_root.findall("team/player"):
                    name = player.find("name").text.strip()
                    level = int(player.find("level").text.strip())
                    p_class = player.find("class").text.strip()
                    race = player.find("race").text.strip()
                    gold = int(player.find("gold").text.strip())
                    exp = int(player.find("exp").text.strip())
                    hp = int(player.find("hp").text.strip())
                    strength = int(player.find("strength").text.strip())
                    defense = int(player.find("defense").text.strip())
                    res = int(player.find("res").text.strip())
                    move = int(player.find("move").text.strip())
                    current_hp = int(player.find("currentHp").text.strip())
                    pos = (int(player.find("position/x").text.strip()),
                           int(player.find("position/y").text.strip()))
                    state = player.find("turnFinished").text.strip()
                    inv = []
                    for it in player.findall("inventory/item"):
                        it_name = it.find("name").text.strip()
                        item = Level.parse_item_file(it_name)
                        inv.append(item)

                    equipments = []
                    for eq in player.findall("equipments/equipment"):
                        eq_name = eq.find("name").text.strip()
                        eq = Level.parse_item_file(eq_name)
                        equipments.append(eq)

                    # -- Reading of the XML file for default character's values (i.e. sprites)
                    tree = etree.parse("data/characters.xml").getroot()
                    player_t = tree.xpath(name)[0]

                    sprite = 'imgs/dungeon_crawl/player/' + player_t.find(
                        'sprite').text.strip()
                    compl_sprite = player_t.find('complementSprite')
                    if compl_sprite is not None:
                        compl_sprite = 'imgs/dungeon_crawl/player/' + compl_sprite.text.strip(
                        )

                    p = Player(name,
                               sprite,
                               hp,
                               defense,
                               res,
                               move,
                               strength, [p_class],
                               equipments,
                               race,
                               gold,
                               level,
                               compl_sprite=compl_sprite)
                    p.earn_xp(exp)
                    p.set_items(inv)
                    p.set_current_hp(current_hp)
                    p.set_pos(pos)
                    if state == "True":
                        p.turn_finished()

                    team.append(p)

                # Load level with current game status, foes states, and team
                level = Level(level_name, team, game_status, turn_nb,
                              tree_root.find("level/entities"))
                self.play(level)
                save.close()
                return
        except FileNotFoundError as err:
            pass

        # No saved game
        self.background_menus.append([self.active_menu, True])

        name = "Load Game"
        entries = [[{
            'type': 'text',
            'text': "No saved game.",
            'font': ITEM_DESC_FONT
        }]]
        width = self.screen.get_width() // 2
        self.active_menu = InfoBox(name,
                                   "",
                                   "imgs/interface/PopUpMenu.png",
                                   entries,
                                   width,
                                   close_button=1)
 def load_level(level, team):
     return Level('maps/level_' + level + '/', team)
Exemple #4
0
 def load_level(level, team):
     return Level('maps/level_' + str(level) + '/', team, level)
Exemple #5
0
 def load_level(level, team=None):
     if team is None:
         team = []
     return Level('maps/level_' + str(level) + '/', level, players=team)
Exemple #6
0
 def __init__(self, initial, final, level):
     self.initial = Value(initial)
     self.final = Value(final)
     self.level = Level(level)
Exemple #7
0
 def __init__(self):
     super(Game, self).__init__(width=SCREEN_WIDTH,
                                height=SCREEN_HEIGHT,
                                fullscreen=FULLSCREEN)
     pyglet.clock.schedule_interval(self.update, 1 / 60.0)
     self.level = Level()
Exemple #8
0
if __name__ == "__main__":
    from src.constants import *
    import pygame as pg
    pg.init()

    #Window paramaters
    screen = pg.display.set_mode((WIN_WIDTH, WIN_HEIGHT), pg.RESIZABLE)
    pg.display.set_caption('On testing...')

    clock = pg.time.Clock()
    fps_font = pg.font.SysFont(None, 20, True)  # Use pygame's default font

    from src.Level import Level

    # Init the first level
    level = Level('maps/level_test/')

    end = False
    while not (level.is_ended() or end):
        for e in pg.event.get():
            if e.type == pg.QUIT:
                end = True
            elif e.type == pg.MOUSEBUTTONUP:
                if e.button == 1 or e.button == 3:
                    level.click(e.button, e.pos)
            elif e.type == pg.MOUSEMOTION:
                level.motion(e.pos)
            elif e.type == pg.MOUSEBUTTONDOWN:
                if e.button == 1 or e.button == 3:
                    level.button_down(e.button, e.pos)
        level.update_state()
Exemple #9
0
    # Open the map file to get all of the individual level files in the proper order
    map_file = open("map.dat", "r")

    # Initialize a counter
    i = 0
    # For each line of the map file
    for line in map_file:
        # Split the line into individual filenames
        files = line.split()
        # Create a list to hold the row of levels
        levelRow = [0] * len(files)
        # For each file in the line
        for j in range(0, len(files)):
            # Add a new level to the row
            levelRow[j] = Level("maps\\" + files[j], i, j)
        # Add the row of levels to the level list
        levels.append(levelRow)
        # Tick
        i = i + 1
    # Close the map file
    map_file.close()

    # Initialize coordinates for the current level
    currentLevelX = 2
    currentLevelY = 1
    # Initialize a variable to represent the level currently being drawn
    currentLevel = levels[1][2]

    # Initialize the player
    player = Player(100, 100)
    def load_game(self):
        try:
            save = open("saves/main_save.xml", "r")

            # Test if there is a current saved game
            if save:
                tree_root = etree.parse("saves/main_save.xml").getroot()
                index = tree_root.find("level/index").text.strip()
                level_name = 'maps/level_' + index + '/'
                game_status = tree_root.find("level/phase").text.strip()
                turn_nb = 0
                if game_status != 'I':
                    turn_nb = int(tree_root.find("level/turn").text.strip())
                team = []
                for player in tree_root.findall("team/player"):
                    name = player.find("name").text.strip()
                    level = int(player.find("level").text.strip())
                    p_class = player.find("class").text.strip()
                    race = player.find("race").text.strip()
                    gold = int(player.find("gold").text.strip())
                    exp = int(player.find("exp").text.strip())
                    hp = int(player.find("hp").text.strip())
                    strength = int(player.find("strength").text.strip())
                    defense = int(player.find("defense").text.strip())
                    res = int(player.find("resistance").text.strip())
                    current_hp = int(player.find("currentHp").text.strip())
                    pos = (int(player.find("position/x").text.strip()) *
                           TILE_SIZE,
                           int(player.find("position/y").text.strip()) *
                           TILE_SIZE)
                    state = player.find("turnFinished").text.strip()
                    inv = []
                    for it in player.findall("inventory/item"):
                        it_name = it.find("name").text.strip()
                        item = LoadFromXMLManager.parse_item_file(it_name)
                        inv.append(item)

                    equipments = []
                    for eq in player.findall("equipment/*"):
                        eq_name = eq.text.strip()
                        eq = LoadFromXMLManager.parse_item_file(eq_name)
                        equipments.append(eq)

                    skills = [
                        (LoadFromXMLManager.load_skill(skill.text.strip())
                         if skill.text.strip()
                         not in LoadFromXMLManager.skills_infos else
                         LoadFromXMLManager.skills_infos[skill.text.strip()])
                        for skill in player.findall('skills/skill/name')
                    ]

                    # -- Reading of the XML file for default character's values (i.e. sprites)
                    tree = etree.parse("data/characters.xml").getroot()
                    player_t = tree.xpath(name)[0]

                    sprite = 'imgs/' + player_t.find('sprite').text.strip()
                    compl_sprite = player_t.find('complementSprite')
                    if compl_sprite is not None:
                        compl_sprite = 'imgs/' + compl_sprite.text.strip()

                    p = Player(name,
                               sprite,
                               hp,
                               defense,
                               res,
                               strength, [p_class],
                               equipments,
                               race,
                               gold,
                               level,
                               skills,
                               compl_sprite=compl_sprite)
                    p.earn_xp(exp)
                    p.items = inv
                    p.set_current_hp(current_hp)
                    p.pos = pos
                    if state == "True":
                        p.turn_finished()

                    team.append(p)

                # Load level with current game status, foes states, and team
                self.level_id = int(index)
                level = Level(level_name, team, self.level_id, game_status,
                              turn_nb, tree_root.find("level/entities"))
                self.play(level)
                save.close()
                return
        except FileNotFoundError:
            # No saved game
            self.background_menus.append([self.active_menu, True])

            name = "Load Game"
            entries = [[{
                'type': 'text',
                'text': "No saved game.",
                'font': fonts['MENU_SUB_TITLE_FONT']
            }]]
            width = self.screen.get_width() // 2
            self.active_menu = InfoBox(name,
                                       "",
                                       "imgs/interface/PopUpMenu.png",
                                       entries,
                                       width,
                                       close_button=1)