annotate gamestate.py @ 174:230d316cc43b

Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
author Beliar
date Fri, 02 Mar 2012 19:42:26 +0100
parents 75c0b728ccf3
children 0d0422243490
rev   line source
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
1 # This file is part of PARPG.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
2
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
3 # PARPG is free software: you can redistribute it and/or modify
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
4 # it under the terms of the GNU General Public License as published by
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
5 # the Free Software Foundation, either version 3 of the License, or
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
6 # (at your option) any later version.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
7
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
8 # PARPG is distributed in the hope that it will be useful,
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
11 # GNU General Public License for more details.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
12
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
13 # You should have received a copy of the GNU General Public License
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
14 # along with PARPG. If not, see <http://www.gnu.org/licenses/>.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
15
174
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
16 import math
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
17
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
18 from parpg.quest_engine import QuestEngine
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
19
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
20 class GameState(object):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
21 """This class holds the current state of the game."""
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
22 def __init__(self, quests_dir = None):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
23 self.player_character = None
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
24 self.quest_engine = QuestEngine(quests_dir)
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
25 self.quest_engine.readQuests()
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
26 self.objects = {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
27 self.object_ids = {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
28 self.current_map_name = None
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
29 self.maps = {}
58
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
30 self.npcs_met = set()
160
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
31 self.funcs = {
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
32 "meet":self.meet,
174
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
33 "met":self.met,
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
34 "sqrt":math.sqrt,
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
35 "log":math.log,
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
36 }
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
37
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
38
73
5c751b9a3d8b The addObject method of the GameState class now accepts an object_id parameter, instead of it getting that value from the object.
KarstenBock@gmx.net
parents: 58
diff changeset
39 def addObject(self, object_id, map_id, game_object):
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
40 """Adds an object to the objects and object_ids
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
41 dictionaries.
73
5c751b9a3d8b The addObject method of the GameState class now accepts an object_id parameter, instead of it getting that value from the object.
KarstenBock@gmx.net
parents: 58
diff changeset
42 @param object_id: ID of the object
5c751b9a3d8b The addObject method of the GameState class now accepts an object_id parameter, instead of it getting that value from the object.
KarstenBock@gmx.net
parents: 58
diff changeset
43 @type object_id: str
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
44 @param map_id: ID of the map the object is on.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
45 If the object is in a container this has to be None
73
5c751b9a3d8b The addObject method of the GameState class now accepts an object_id parameter, instead of it getting that value from the object.
KarstenBock@gmx.net
parents: 58
diff changeset
46 @type map_id: str or None
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
47 @param object: object to be added
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
48 @type object: GameObject
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
49 """
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
50 if not self.object_ids.has_key(object_id):
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
51 if not self.objects.has_key(map_id):
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
52 self.objects[map_id] = {}
74
c9818290bbe7 Objects that are not on an actual map are now stored under the value None in the gamestates object dictionary.
KarstenBock@gmx.net
parents: 73
diff changeset
53 self.objects[map_id][object_id] = game_object
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
54 self.object_ids[object_id] = map_id
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
55
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
56 def deleteObject(self, object_id):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
57 """Removes an object from the dictionaries
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
58 @param object_id: ID of the object
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
59 @type object_id: str
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
60 @returns The deleted object
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
61 """
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
62 if self.hasObject(object_id):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
63 map_id = self.getMapOfObject(object_id)
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
64 if map_id:
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
65 inst = self.maps[map_id].agent_layer.getInstance(object_id)
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
66 self.maps[map_id].agent_layer.deleteInstance(inst)
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
67 obj = self.objects[map_id][object_id]
74
c9818290bbe7 Objects that are not on an actual map are now stored under the value None in the gamestates object dictionary.
KarstenBock@gmx.net
parents: 73
diff changeset
68 del self.objects[map_id][object_id]
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
69 del self.object_ids[object_id]
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
70 return obj
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
71 return None
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
72
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
73
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
74 def getObjectsFromMap(self, map_id):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
75 """Gets all objects that are currently on the given map.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
76 @type map: String
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
77 @param map: The map name.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
78 @returns: The list of objects on this map. Or an empty list"""
160
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
79 return [i for i in self.getObjectDictOfMap(map_id).values()
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
80 if map_id in self.objects]
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
81
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
82
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
83 def getObjectDictOfMap(self, map_id):
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
84 if map_id in self.objects:
160
75c0b728ccf3 Further work on the scripting system.
KarstenBock@gmx.net
parents: 101
diff changeset
85 return self.objects[map_id]
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
86 return {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
87
88
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
88 def deleteObjectsFromMap(self, map_id):
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
89 """Deletes all objects of the given map.
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
90 @type map: String
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
91 @param map: The map name.
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
92 @returns: None"""
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
93 deleted_objs = []
88
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
94 if map_id in self.objects:
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
95 for obj in self.objects[map_id].copy():
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
96 deleted_objs.append(self.deleteObject(obj))
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
97 return deleted_objs
88
0411a4bcceee Fixed moving between maps.
KarstenBock@gmx.net
parents: 75
diff changeset
98
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
99 def hasObject(self, object_id):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
100 """Check if an object with the given id is present
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
101 @param object_id: ID of the object
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
102 @type object_id: str
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
103 @return: True if there is an object False if not
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
104 """
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
105 return self.object_ids.has_key(object_id)
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
106
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
107 def getMapOfObject(self, object_id):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
108 """Returns the map the object is on.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
109 @param object_id: ID of the object
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
110 @type object_id: str
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
111 @return: Name of the map the object is on.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
112 If there is no such object or the object is in a container None is returned
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
113 """
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
114 if self.object_ids.has_key(object_id):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
115 return self.object_ids[object_id]
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
116 return None
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
117
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
118 def getObjectById(self, obj_id, map_id = None):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
119 """Gets an object by its object id and map id
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
120 @type obj_id: String
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
121 @param obj_id: The id of the object.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
122 @type map_id: String
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
123 @param map_id: It id of the map containing the object.
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
124 @returns: The object or None."""
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
125 if not map_id:
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
126 map_id = self.getMapOfObject(obj_id)
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
127 if not map_id in self.objects:
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
128 self.objects[map_id] = {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
129 if obj_id in self.objects[map_id]:
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
130 return self.objects[map_id][obj_id]
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
131
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
132 def clearObjects(self):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
133 """Delete all objects from the state
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
134 """
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
135 self.objects = {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
136 self.object_ids = {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
137
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
138 def getStateForSaving(self):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
139 """Prepares state for saving
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
140 @type state: dictionary
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
141 @param state: State of the object
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
142 """
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
143 ret_dict = {}
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
144 ret_dict["CurrentMap"] = self.current_map_name
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
145 ret_dict["Quests"] = self.quest_engine.getStateForSaving()
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
146 ret_dict["NPCsMet"] = self.npcs_met
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
147 return ret_dict
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
148
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
149 def restoreFromState(self, state):
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
150 """Restores the state"""
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
151 self.current_map_name = state["CurrentMap"]
101
824f3068ef2a Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 88
diff changeset
152 self.npcs_met = state["NPCsMet"]
0
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
153 self.quest_engine.readQuests()
7a89ea5404b1 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
154 self.quest_engine.restoreFromState(state["Quests"])
58
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
155
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
156 def meet(self, npc):
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
157 """Record that the PC has met a certain NPC
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
158 @type npc: str
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
159 @param npc: The NPC's name or id"""
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
160 if npc in self.npcs_met:
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
161 # we could raise an error here, but should probably be a warn
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
162 # raise RuntimeError("I already know %s" % npc)
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
163 return
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
164 self.npcs_met.add(npc)
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
165
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
166 def met(self, npc):
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
167 """Indicate whether the PC has met this npc before
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
168 @type npc: str
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
169 @param npc: The NPC's name or id
d4f213b99d41 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 44
diff changeset
170 @return: None"""
174
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
171 return npc in self.npcs_met
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
172
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
173 def getGameEnvironment(self):
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
174 """Returns a 2 item list containing the entities and functions that
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
175 can work with it. This can be used in functions like eval or exec"""
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
176 vals = {}
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
177 vals.update(self.getObjectDictOfMap(self.current_map_name))
230d316cc43b Moved the getEnvironment method from the ScriptingSystem to the GameState and renamed it to getGameEnvironment.
Beliar
parents: 160
diff changeset
178 return vals, self.funcs