public void CreateColony(Vector3Int location, GameObject source = null) { if (EntityManager.Entities.OfType <ColonyAttributes>().FirstOrDefault(x => x.Location == location) != null) { return; } var loc = StarSystem.TileToWorld(location); var obj = Instantiate(Colony, loc, Colony.transform.rotation); var atr = obj.GetComponent <ColonyAttributes>(); atr.Id = BaseAttributes.GetId(); atr.StarSystem = StarSystem; atr.Empire = this; atr.Location = location; var c = obj.GetComponent <ColonyControl>(); c.StarSystem = StarSystem; c.Location = location; c.Empire = this; EntityManager.Entities.Add(atr); Colonies.Add(c); obj.name = $"{Id}:ColonyPlanet:{atr.Id}"; OnColonize?.Invoke(location, atr); if (source != null) { Destroy(source); } }
public void CreateEntity(Vector3Int location, ShipDesign design) { var loc = StarSystem.TileToWorld(location); var obj = Instantiate(Entity, loc, Entity.transform.rotation); var atr = obj.GetComponent <Attributes>(); atr.Id = BaseAttributes.GetId(); atr.StarSystem = StarSystem; atr.Empire = this; atr.Location = location; var br = obj.GetComponent <EntityBrain>(); br.StarSystem = StarSystem; br.Movement = obj.GetComponent <EntityMovement>(); br.Movement.Location = location; var ti = obj.GetComponent <TickControlScript>(); ti.StarSystem = StarSystem; atr.TickControlScript = ti; EntityManager.Entities.Add(atr); Ships.Add(br); obj.name = $"{Id}:{design.Name}:{atr.Id}"; atr.Initialize(design); OnBuildShip?.Invoke(location, atr); }