Загрузить файлы в «/»
This commit is contained in:
140
entity_creation.py
Normal file
140
entity_creation.py
Normal file
@@ -0,0 +1,140 @@
|
||||
|
||||
|
||||
class EntityCreation:
|
||||
|
||||
def __init__(self):
|
||||
|
||||
self.entity_templates = {
|
||||
|
||||
'worker': {
|
||||
|
||||
'type': 'unit',
|
||||
|
||||
'name': 'Worker',
|
||||
|
||||
'health': 100,
|
||||
|
||||
'movable': True,
|
||||
|
||||
'speed': 40.0,
|
||||
|
||||
'gather_rate': 10,
|
||||
|
||||
'build_power': 5
|
||||
|
||||
},
|
||||
|
||||
'barracks': {
|
||||
|
||||
'type': 'building',
|
||||
|
||||
'name': 'Barracks',
|
||||
|
||||
'health': 500,
|
||||
|
||||
'movable': False,
|
||||
|
||||
'build_time': 30.0
|
||||
|
||||
},
|
||||
|
||||
'supply_depot': {
|
||||
|
||||
'type': 'building',
|
||||
|
||||
'name': 'Supply Depot',
|
||||
|
||||
'health': 400,
|
||||
|
||||
'movable': False,
|
||||
|
||||
'build_time': 20.0
|
||||
|
||||
},
|
||||
|
||||
'mineral_field': {
|
||||
|
||||
'type': 'resource',
|
||||
|
||||
'name': 'Mineral Field',
|
||||
|
||||
'resources': {'minerals': 1500}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
def create_entity(self, state, create_cmd: dict) -> dict:
|
||||
|
||||
entity_type = create_cmd.get('entity_type')
|
||||
|
||||
position = create_cmd.get('position', (0, 0))
|
||||
|
||||
|
||||
|
||||
if entity_type not in self.entity_templates:
|
||||
|
||||
return None
|
||||
|
||||
|
||||
|
||||
entity_def = self.entity_templates[entity_type]
|
||||
|
||||
entity = self.init_entity(entity_def, position)
|
||||
|
||||
|
||||
|
||||
return {
|
||||
|
||||
'type': 'add_entity',
|
||||
|
||||
'entity': entity
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
def init_entity(self, entity_def: dict, position: tuple) -> dict:
|
||||
|
||||
entity = entity_def.copy()
|
||||
|
||||
entity['x'] = position[0]
|
||||
|
||||
entity['y'] = position[1]
|
||||
|
||||
|
||||
|
||||
if entity['type'] == 'unit':
|
||||
|
||||
entity['id'] = self._generate_id()
|
||||
|
||||
entity['state'] = 'idle'
|
||||
|
||||
|
||||
|
||||
elif entity['type'] == 'building':
|
||||
|
||||
entity['id'] = self._generate_id()
|
||||
|
||||
entity['build_progress'] = 0.0
|
||||
|
||||
entity['completed'] = False
|
||||
|
||||
|
||||
|
||||
elif entity['type'] == 'resource':
|
||||
|
||||
entity['id'] = self._generate_id()
|
||||
|
||||
|
||||
|
||||
return entity
|
||||
|
||||
|
||||
|
||||
def _generate_id(self) -> int:
|
||||
|
||||
return id(self)
|
||||
|
||||
Reference in New Issue
Block a user