started on better spawning
This commit is contained in:
parent
ab720679aa
commit
9473502e6e
|
@ -15,7 +15,7 @@ from .inventory import Inventory
|
|||
from .listen import Listen
|
||||
from .periodic import Periodic
|
||||
from .equipment import Equipment
|
||||
from .spawner import Spawner
|
||||
from .spawner import Spawner, Squad
|
||||
from .item import Item
|
||||
from .equippable import Equippable
|
||||
from .buildable import Buildable
|
||||
|
|
|
@ -1,10 +1,20 @@
|
|||
|
||||
import random
|
||||
import string
|
||||
|
||||
class Squad:
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.name is other.name
|
||||
|
||||
class Spawner:
|
||||
|
||||
def __init__(self, spawned, number=1, setHome=False):
|
||||
def __init__(self, spawned, number=1, setHome=False, squad=None):
|
||||
self.spawned = spawned
|
||||
self.number = number
|
||||
class MySquad:
|
||||
pass
|
||||
self.squad = MySquad
|
||||
if squad is None:
|
||||
squad = "_" + "".join(random.choices(string.ascii_lowercase, k=20))
|
||||
self.squad = squad
|
||||
self.setHome = setHome
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
|
||||
from ..system import system
|
||||
from ..import gameobjects
|
||||
from ..datacomponents import Spawner, SpawnMessage, Home
|
||||
from ..datacomponents import Spawner, SpawnMessage, Home, Squad
|
||||
|
||||
@system([Spawner, SpawnMessage])
|
||||
def spawn(obj, roomData, spawner, _spawnmessages):
|
||||
if len(roomData.getEntities([spawner.squad])) < spawner.number:
|
||||
hasSpawned = 0
|
||||
# todo: serialise squad for both spawner and spawned
|
||||
for earlierspawn in roomData.getEntities([Squad]):
|
||||
squad = roomData.getComponent(earlierspawn, Squad)
|
||||
if squad.name == spawner.squad:
|
||||
hasSpawned += 1
|
||||
|
||||
if hasSpawned < spawner.number:
|
||||
spawned = gameobjects.buildEntity(spawner.spawned, roomData)
|
||||
roomData.addComponent(spawned, spawner.squad)
|
||||
roomData.addComponent(spawned, Squad(spawner.squad))
|
||||
if spawner.setHome:
|
||||
roomData.addComponent(spawned, Home(obj))
|
||||
spawned.place(obj.getGround())
|
||||
|
|
|
@ -19,6 +19,14 @@ class Template:
|
|||
else:
|
||||
return self.name
|
||||
|
||||
def __repr__(self):
|
||||
a = [self.name]
|
||||
for arg in self.args:
|
||||
a.append(repr(arg))
|
||||
for key, value in self.kwargs.items():
|
||||
a.append(key + "=" + repr(value))
|
||||
return "Template({})".format(", ".join(a))
|
||||
|
||||
@classmethod
|
||||
def fromJSON(cls, value):
|
||||
if isinstance(value, str):
|
||||
|
|
Loading…
Reference in New Issue