added flags to entities, and used this instead of solid
This commit is contained in:
parent
2c2aa878ee
commit
f2ad73c3c3
|
@ -69,7 +69,6 @@ The idea is to make 3 different kind of areas:
|
|||
- equipment
|
||||
- autofight/autoretaliate?
|
||||
- display target enemy health
|
||||
- write converter to convert tiled map files to readable files
|
||||
- better reaction on player death
|
||||
- room unloading when there are no players
|
||||
- better inventory selection
|
||||
|
@ -78,7 +77,12 @@ The idea is to make 3 different kind of areas:
|
|||
- world persistence
|
||||
- support websockets
|
||||
- windows comptibility (libtcod/tdl instead of ncurses?)
|
||||
- multicharacter sprites in client
|
||||
- write converter to convert tiled map files to readable files
|
||||
|
||||
## Other Ideas
|
||||
|
||||
- multicharacter sprites
|
||||
- plants growing as cellular automata
|
||||
|
||||
## DONE
|
||||
|
||||
|
|
|
@ -53,11 +53,10 @@
|
|||
"+": "floor",
|
||||
"^": ["spiketrap"],
|
||||
"r": ["grass", "rabbit"],
|
||||
"$": {
|
||||
"$": [{
|
||||
"type": "roomexit",
|
||||
"args": ["basement", "toarena"],
|
||||
"kwargs": {"sprite": "floor"}
|
||||
},
|
||||
"args": ["basement", "toarena"]
|
||||
}, "floor"],
|
||||
"g": [
|
||||
"ground",
|
||||
{
|
||||
|
|
|
@ -52,16 +52,15 @@
|
|||
".": "floor",
|
||||
"^": ["spiketrap"],
|
||||
"r": ["grass", "rabbit"],
|
||||
"<": {
|
||||
"<": [{
|
||||
"type": "roomexit",
|
||||
"args": ["begin", "stairdown"],
|
||||
"kwargs": {"sprite": "stairup"}
|
||||
},
|
||||
"$": {
|
||||
"kwargs": {"sprite": "stairup", "size": 1}
|
||||
}, "floor"],
|
||||
"$": [{
|
||||
"type": "roomexit",
|
||||
"args": ["arena"],
|
||||
"kwargs": {"sprite": "floor"}
|
||||
},
|
||||
"args": ["arena"]
|
||||
}, "floor"],
|
||||
" ": []
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,11 +52,11 @@
|
|||
".": "ground",
|
||||
"+": "floor",
|
||||
"^": ["spiketrap"],
|
||||
">": {
|
||||
">": [{
|
||||
"type": "roomexit",
|
||||
"args": ["basement","stairup"],
|
||||
"kwargs": {"sprite": "stairdown"}
|
||||
},
|
||||
"kwargs": {"sprite": "stairdown", "size": 1}
|
||||
}, "floor"],
|
||||
"r": ["grass", "rabbit"]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,13 +14,13 @@ class Entity:
|
|||
Remove methods are for cleanup, like unsubscribing from events.
|
||||
"""
|
||||
|
||||
def __init__(self, sprite=' ', solid=False, height=0, name=None, components={}):
|
||||
def __init__(self, sprite=' ', height=0, name=None, components={}, flags=set()):
|
||||
self.sprite = sprite # the name of the image to display for this entity
|
||||
self.solid = solid
|
||||
self.height = height # if multiple objects are on a square, the tallest one is drawn
|
||||
self.name = name if name else sprite # human readable name/description
|
||||
self.components = components
|
||||
self.observable = event.Event()
|
||||
self.flags = frozenset(flags)
|
||||
|
||||
self.ground = None
|
||||
self.roomData = None
|
||||
|
@ -84,6 +84,6 @@ class Entity:
|
|||
objects.discard(self)
|
||||
return objects
|
||||
|
||||
def isSolid(self):
|
||||
return self.solid
|
||||
def getFlags(self):
|
||||
return self.flags
|
||||
|
||||
|
|
|
@ -25,15 +25,15 @@ entities = {}
|
|||
|
||||
|
||||
def makeWall():
|
||||
return Entity(sprite="wall", height=2, solid=True)
|
||||
return Entity(sprite="wall", height=2, flags={"solid"})
|
||||
entities["wall"] = makeWall
|
||||
|
||||
def makeRock():
|
||||
return Entity(sprite="rock", height=10, solid=True)
|
||||
return Entity(sprite="rock", height=10, flags={"solid"})
|
||||
entities["rock"] = makeRock
|
||||
|
||||
def makeTree():
|
||||
return Entity(sprite="tree", height=3, solid=True)
|
||||
return Entity(sprite="tree", height=3, flags={"solid"})
|
||||
entities["tree"] = makeTree
|
||||
|
||||
def makeStone():
|
||||
|
@ -45,22 +45,22 @@ def makePebble():
|
|||
entities["pebble"] = makePebble
|
||||
|
||||
def makeGrass():
|
||||
return Entity(sprite=random.choice(["ground", "grass1", "grass2", "grass3"]), height=0.1)
|
||||
return Entity(sprite=random.choice(["ground", "grass1", "grass2", "grass3"]), height=0.1, flags={"floor"})
|
||||
entities["grass"] = makeGrass
|
||||
|
||||
def makeFloor():
|
||||
return Entity(sprite="floor", height=0)
|
||||
return Entity(sprite="floor", height=0.1, flags={"floor"})
|
||||
entities["floor"] = makeFloor
|
||||
|
||||
def makeGround():
|
||||
return Entity(sprite="ground", height=0)
|
||||
return Entity(sprite="ground", height=0.1, flags={"floor"})
|
||||
entities["ground"] = makeGround
|
||||
|
||||
def makeWater():
|
||||
return Entity(sprite="water", height=0, solid=True)
|
||||
return Entity(sprite="water", height=0)
|
||||
entities["water"] = makeWater
|
||||
|
||||
def makeRoomExit(destRoom, destPos=None, sprite="exit", size=1):
|
||||
def makeRoomExit(destRoom, destPos=None, sprite="exit", size=0):
|
||||
return Entity(sprite=sprite, height=size, components={"collision": Portal(destRoom, destPos)})
|
||||
entities["roomexit"] = makeRoomExit
|
||||
|
||||
|
@ -130,7 +130,7 @@ entities["seed"] = makeSeed
|
|||
|
||||
|
||||
def makeBuiltWall():
|
||||
return Entity(sprite="wall", height=2, solid=True, components={"fighter": Fighter(maxHealth=100, strength=0), "alignment": Alignment(faction.NONE), "loot": Loot([("stone", 1)])})
|
||||
return Entity(sprite="wall", height=2, components={"fighter": Fighter(maxHealth=100, strength=0), "alignment": Alignment(faction.NONE), "loot": Loot([("stone", 1)])}, flags={"solid"})
|
||||
entities["builtwall"] = makeBuiltWall
|
||||
|
||||
|
||||
|
|
|
@ -13,8 +13,12 @@ class GroundPatch:
|
|||
self.neighbours = None
|
||||
self.event = event.Event()
|
||||
|
||||
def getFlags(self):
|
||||
return set().union(*[obj.getFlags() for obj in self.getObjs()])
|
||||
|
||||
def accessible(self):
|
||||
return not any(obj.isSolid() for obj in self.objects)
|
||||
flags = self.getFlags()
|
||||
return "floor" in flags and "solid" not in flags
|
||||
|
||||
def addObj(self, obj):
|
||||
oldTop = self._getTopObj()
|
||||
|
|
|
@ -52,7 +52,6 @@ class Player:
|
|||
pos = place or room.getEntrance()
|
||||
self.entity = entity.Entity(
|
||||
sprite = "player",
|
||||
solid = False,
|
||||
height = 2,
|
||||
name = '~' + self.name,
|
||||
components={
|
||||
|
|
Loading…
Reference in New Issue