source: trunk/game/scripts/ @ 366

Revision 361, 2.0 KB checked in by orlandov, 10 years ago (diff)

Ticket #104 - Patch by Vaporice and or1andov. Integrate quests into game dialogue and make it possible to persist quest state. fixes[s:trac, t:134]

  • Integrate Vaporice's quest engine implementation
  • Discontinue or1andov's sample dialogue and use Zenbitz's Drunkard
  • Reuse Zenbitz's dialogue functions and callbacks in the game PlayerCharacter? class
  • Whitespace and style tweaks
  • Property svn:eol-style set to native
[262]3#   This file is part of PARPG.
5#   PARPG is free software: you can redistribute it and/or modify
6#   it under the terms of the GNU General Public License as published by
7#   the Free Software Foundation, either version 3 of the License, or
8#   (at your option) any later version.
10#   PARPG is distributed in the hope that it will be useful,
11#   but WITHOUT ANY WARRANTY; without even the implied warranty of
13#   GNU General Public License for more details.
15#   You should have received a copy of the GNU General Public License
16#   along with PARPG.  If not, see <>.
18from objects import base
[361]19from scripts import quest_engine
21class GameState(object):
22    """This class holds the current state of the game."""
23    def __init__(self):
24        """initialize attributes"""
25        self.PC = None
[361]26        self.quest_engine = quest_engine.QuestEngine()
[262]27        self.objects = {}
[314]28        self.current_map_file = None
[313]29        self.current_map_name = None
[356]30        #these coordinates are only used for saving and loading the game.
31        #They do not represent the pc's active location
32        self.saved_pc_coordinates = (0,0)
34    def getObjectsFromMap(self, map_id):
35        """Gets all objects that are currently on the given map.
36           @type map: String
37           @param map: The map name.
38           @returns: The list of objects on this map."""
[314]39        return [i for i in self.objects[map_id].values() if map_id in self.objects]
[314]41    def getObjectById(self, obj_id, map_id):
42        """Gets an object by its object id and map id
43           @type obj_id: String
44           @param obj_id: The id of the object.
45           @type map_id: String
46           @param map_id: It id of the map containing the object.
[262]47           @returns: The object or None."""
[314]48        if not map_id in self.objects:
49            self.objects[map_id] = {}
50        if obj_id in self.objects[map_id]:
51            return self.objects[map_id][obj_id]
Note: See TracBrowser for help on using the repository browser.