started on better spawning

This commit is contained in:
troido 2019-10-12 01:23:46 +02:00
parent ab720679aa
commit 9473502e6e
4 changed files with 33 additions and 8 deletions

View File

@ -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

View File

@ -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

View File

@ -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())

View File

@ -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):