예제 #1
0
    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);
        }
    }
예제 #2
0
    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);
    }