annotate src/parpg/gamestate.py @ 202:7747b0f73694

Removed waf scripts
author KarstenBock@gmx.net
date Thu, 12 Jan 2012 18:01:28 +0100
parents 191f89a22303
children
rev   line source
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
1 # This file is part of PARPG.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
2
1fd2201f5c36 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
1fd2201f5c36 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
1fd2201f5c36 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
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
6 # (at your option) any later version.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
7
1fd2201f5c36 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,
1fd2201f5c36 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
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
11 # GNU General Public License for more details.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
12
1fd2201f5c36 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
1fd2201f5c36 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/>.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
15
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
16 from parpg.quest_engine import QuestEngine
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
17
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
18 class GameState(object):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
19 """This class holds the current state of the game."""
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
20 def __init__(self, quests_dir = None):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
21 self.player_character = None
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
22 self.quest_engine = QuestEngine(quests_dir)
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
23 self.quest_engine.readQuests()
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
24 self.objects = {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
25 self.object_ids = {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
26 self.current_map_name = None
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
27 self.maps = {}
85
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
28 self.npcs_met = set()
192
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
29 self.funcs = {
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
30 "meet":self.meet,
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
31 "met":self.met
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
32 }
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
33
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
34
103
65aa498791ed 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: 85
diff changeset
35 def addObject(self, object_id, map_id, game_object):
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
36 """Adds an object to the objects and object_ids
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
37 dictionaries.
103
65aa498791ed 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: 85
diff changeset
38 @param object_id: ID of the object
65aa498791ed 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: 85
diff changeset
39 @type object_id: str
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
40 @param map_id: ID of the map the object is on.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
41 If the object is in a container this has to be None
103
65aa498791ed 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: 85
diff changeset
42 @type map_id: str or None
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
43 @param object: object to be added
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
44 @type object: GameObject
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
45 """
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
46 if not self.object_ids.has_key(object_id):
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
47 if not self.objects.has_key(map_id):
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
48 self.objects[map_id] = {}
104
de741e83a422 Objects that are not on an actual map are now stored under the value None in the gamestates object dictionary.
KarstenBock@gmx.net
parents: 103
diff changeset
49 self.objects[map_id][object_id] = game_object
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
50 self.object_ids[object_id] = map_id
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
51
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
52 def deleteObject(self, object_id):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
53 """Removes an object from the dictionaries
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
54 @param object_id: ID of the object
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
55 @type object_id: str
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
56 @returns The deleted object
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
57 """
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
58 if self.hasObject(object_id):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
59 map_id = self.getMapOfObject(object_id)
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
60 if map_id:
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
61 inst = self.maps[map_id].agent_layer.getInstance(object_id)
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
62 self.maps[map_id].agent_layer.deleteInstance(inst)
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
63 obj = self.objects[map_id][object_id]
104
de741e83a422 Objects that are not on an actual map are now stored under the value None in the gamestates object dictionary.
KarstenBock@gmx.net
parents: 103
diff changeset
64 del self.objects[map_id][object_id]
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
65 del self.object_ids[object_id]
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
66 return obj
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
67 return None
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
68
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
69
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
70 def getObjectsFromMap(self, map_id):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
71 """Gets all objects that are currently on the given map.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
72 @type map: String
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
73 @param map: The map name.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
74 @returns: The list of objects on this map. Or an empty list"""
192
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
75 return [i for i in self.getObjectDictOfMap(map_id).values()
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
76 if map_id in self.objects]
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
77
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
78
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
79 def getObjectDictOfMap(self, map_id):
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
80 if map_id in self.objects:
192
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
81 return self.objects[map_id]
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
82 return {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
83
118
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
84 def deleteObjectsFromMap(self, map_id):
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
85 """Deletes all objects of the given map.
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
86 @type map: String
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
87 @param map: The map name.
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
88 @returns: None"""
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
89 deleted_objs = []
118
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
90 if map_id in self.objects:
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
91 for obj in self.objects[map_id].copy():
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
92 deleted_objs.append(self.deleteObject(obj))
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
93 return deleted_objs
118
29869273f9e1 Fixed moving between maps.
KarstenBock@gmx.net
parents: 105
diff changeset
94
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
95 def hasObject(self, object_id):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
96 """Check if an object with the given id is present
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
97 @param object_id: ID of the object
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
98 @type object_id: str
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
99 @return: True if there is an object False if not
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
100 """
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
101 return self.object_ids.has_key(object_id)
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
102
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
103 def getMapOfObject(self, object_id):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
104 """Returns the map the object is on.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
105 @param object_id: ID of the object
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
106 @type object_id: str
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
107 @return: Name of the map the object is on.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
108 If there is no such object or the object is in a container None is returned
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
109 """
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
110 if self.object_ids.has_key(object_id):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
111 return self.object_ids[object_id]
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
112 return None
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
113
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
114 def getObjectById(self, obj_id, map_id = None):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
115 """Gets an object by its object id and map id
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
116 @type obj_id: String
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
117 @param obj_id: The id of the object.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
118 @type map_id: String
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
119 @param map_id: It id of the map containing the object.
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
120 @returns: The object or None."""
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
121 if not map_id:
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
122 map_id = self.getMapOfObject(obj_id)
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
123 if not map_id in self.objects:
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
124 self.objects[map_id] = {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
125 if obj_id in self.objects[map_id]:
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
126 return self.objects[map_id][obj_id]
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
127
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
128 def clearObjects(self):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
129 """Delete all objects from the state
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
130 """
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
131 self.objects = {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
132 self.object_ids = {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
133
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
134 def getStateForSaving(self):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
135 """Prepares state for saving
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
136 @type state: dictionary
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
137 @param state: State of the object
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
138 """
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
139 ret_dict = {}
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
140 ret_dict["CurrentMap"] = self.current_map_name
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
141 ret_dict["Quests"] = self.quest_engine.getStateForSaving()
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
142 ret_dict["NPCsMet"] = self.npcs_met
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
143 return ret_dict
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
144
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
145 def restoreFromState(self, state):
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
146 """Restores the state"""
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
147 self.current_map_name = state["CurrentMap"]
131
0ffebdca7ba3 Fixed Saving and Loading.
KarstenBock@gmx.net
parents: 118
diff changeset
148 self.npcs_met = state["NPCsMet"]
0
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
149 self.quest_engine.readQuests()
1fd2201f5c36 Initial commit of parpg-core.
M. George Hansen <technopolitica@gmail.com>
parents:
diff changeset
150 self.quest_engine.restoreFromState(state["Quests"])
85
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
151
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
152 def meet(self, npc):
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
153 """Record that the PC has met a certain NPC
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
154 @type npc: str
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
155 @param npc: The NPC's name or id"""
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
156 if npc in self.npcs_met:
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
157 # we could raise an error here, but should probably be a warn
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
158 # raise RuntimeError("I already know %s" % npc)
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
159 return
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
160 self.npcs_met.add(npc)
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
161
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
162 def met(self, npc):
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
163 """Indicate whether the PC has met this npc before
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
164 @type npc: str
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
165 @param npc: The NPC's name or id
cd12294d1981 Added meet and met methods from the old player object to the gamestate.
KarstenBock@gmx.net
parents: 69
diff changeset
166 @return: None"""
192
191f89a22303 Further work on the scripting system.
KarstenBock@gmx.net
parents: 131
diff changeset
167 return npc in self.npcs_met