public void CreateMoveable(int index)
    {
        //this method will be called only when a tile selected and it has a producer unit on it
        MoveableUnitBase unit = (MoveableUnitBase)(((IProducer)SelectedTileForInfo.PlacedUnit).Produce(index));

        moveables.Add(unit);
    }
Exemple #2
0
    MoveableUnitBase CreateMoveableUnit(string name)
    {
        MoveableUnitBase moveableUnit = null;

        switch (name.ToLower())
        {
        case "camper":
            moveableUnit = new CamperUnit
            {
                XDimension = 1,
                YDimension = 1
            };
            break;

        case "soldier":
            moveableUnit = new SoldierUnit
            {
                XDimension = 1,
                YDimension = 1
            };
            break;
        }

        return(moveableUnit);
    }
    public object Clone()
    {
        MoveableUnitBase clone = (MoveableUnitBase)MemberwiseClone();

        OnMoveableUnitCreated?.Invoke(clone);
        return(clone);
    }
    void OnMoveUnit(MoveableUnitBase moveableUnit)
    {
        if (_moveableToGoMap.ContainsKey(moveableUnit) == false)
        {
            Debug.LogError("OnCharacterChanged -- trying to change visuals for character not in our map.");
            return;
        }

        var charGo = _moveableToGoMap[moveableUnit];


        charGo.transform.position = new Vector3(moveableUnit.X, moveableUnit.Y, 0);
    }
    public void OnMoveableUnitCreated(MoveableUnitBase moveableUnit)
    {
        var selectedTile = WorldController.instance.SelectedTileForInfo;

        moveableUnit.SetTile(((IProducer)selectedTile.PlacedUnit).SpawnPointTile);
        moveableUnit.CurrentTile.SetUnit(moveableUnit);
        var moveableGo = new GameObject(moveableUnit.Name);

        _moveableToGoMap.Add(moveableUnit, moveableGo);
        moveableGo.transform.position = new Vector3(moveableUnit.X, moveableUnit.Y, 0);
        moveableGo.transform.SetParent(this.transform, true);

        var sr = moveableGo.AddComponent <SpriteRenderer>();

        sr.sprite           = SpritesController.instance.GetSpriteByName(moveableUnit.ImageName);
        sr.sortingLayerName = "Moveables";


        // Register our callback so that our GameObject gets updated whenever
        // the object's into changes.
        moveableUnit.OnUnitMove += OnMoveUnit;
    }