home
·
contact
·
privacy
projects
/
plomrogue2
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Shrink sound Dijkstra map, reach; refactor lots of mapping code.
[plomrogue2]
/
plomrogue
/
things.py
diff --git
a/plomrogue/things.py
b/plomrogue/things.py
index ee0d501be22258e69d287da986f8c1bf4d65e978..dfb536c27f8e6f9acb49b8e5ad2d60d16c66e27e 100644
(file)
--- a/
plomrogue/things.py
+++ b/
plomrogue/things.py
@@
-6,9
+6,9
@@
from plomrogue.mapping import YX
class ThingBase:
type_ = '?'
class ThingBase:
type_ = '?'
- def __init__(self, game, id_=
None
, position=(YX(0,0))):
+ def __init__(self, game, id_=
0
, position=(YX(0,0))):
self.game = game
self.game = game
- if id_
is None
:
+ if id_
== 0
:
self.id_ = self.game.new_thing_id()
else:
self.id_ = id_
self.id_ = self.game.new_thing_id()
else:
self.id_ = id_
@@
-17,6
+17,7
@@
class ThingBase:
class Thing(ThingBase):
class Thing(ThingBase):
+ blocking = False
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@
-24,9
+25,28
@@
class Thing(ThingBase):
def proceed(self):
pass
def proceed(self):
pass
+ @property
+ def type_(self):
+ return self.__class__.get_type()
+
+ @classmethod
+ def get_type(cls):
+ return cls.__name__[len('Thing_'):]
+
+
+
+class Thing_Item(Thing):
+ symbol_hint = 'i'
+
+
+
+class Thing_Furniture(Thing):
+ symbol_hint = 'h'
+
class ThingAnimate(Thing):
class ThingAnimate(Thing):
+ blocking = True
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@
-74,23
+94,30
@@
class ThingAnimate(Thing):
if self._fov:
return self._fov
fov_map_class = self.game.map_geometry.fov_map_class
if self._fov:
return self._fov
fov_map_class = self.game.map_geometry.fov_map_class
- self._fov = fov_map_class(self.game.map, self.position)
+ self._fov = fov_map_class(self.game.map, self.position
, 12
)
return self._fov
return self._fov
+ def fov_test(self, yx):
+ test_position = self.fov_stencil.target_yx(yx)
+ if self.fov_stencil.inside(test_position):
+ if self.fov_stencil[test_position] == '.':
+ return True
+ return False
+
def fov_stencil_map(self, map):
visible_terrain = ''
def fov_stencil_map(self, map):
visible_terrain = ''
- for
i in range(self.fov_stencil.size_i)
:
- if self.fov_stencil
.terrain[i
] == '.':
- visible_terrain += map
.terrain[i
]
+ for
yx in self.fov_stencil
:
+ if self.fov_stencil
[yx
] == '.':
+ visible_terrain += map
[self.fov_stencil.source_yx(yx)
]
else:
visible_terrain += ' '
return visible_terrain
else:
visible_terrain += ' '
return visible_terrain
-class ThingPlayer(ThingAnimate):
-
type_ = 'player
'
+class Thing
_
Player(ThingAnimate):
+
symbol_hint = '@
'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
- self.
nickname = 'undefined'
+ self.
carrying = None