Beispiel #1
0
 public void Clear()
 {
     if (soldierInstance != null)
     {
         soldierInstance.E_PositionChanged -= PositionChanged;
         soldierInstance = null;
     }
 }
Beispiel #2
0
    public void Set(Instance_Soldier soldierInstance)
    {
        this.soldierInstance = soldierInstance;
        this.soldierInstance.E_PositionChanged += PositionChanged;
        spriteRenderer.color = soldierInstance.currentColor;

        base.SetData(soldierInstance);
    }
 private void RemoveConflictedSoldier(Instance_Soldier soldier)
 {
     for (int i = 0; i < soldiersOnMove.Count; i++)
     {
         if (soldiersOnMove[i] == soldier)
         {
             soldiersOnMove.RemoveAt(i);
             return;
         }
     }
 }
    public void ActivateSoldier(Instance_Soldier soldierInstance)
    {
        for (int i = 0; i < activeSoldiers.Count; i++)
        {
            if (activeSoldiers[i].soldierInstance == soldierInstance)
            {
                return;
            }
        }

        if (!MapUtils.PositionInArea(soldierInstance.position, tiles[0][0].index, tiles[height.value - 1][width.value - 1].index))
        {
            return;
        }

        tempPoolObje = poolController.GetPoolObje(soldierObjeType.value);
        tempSoldier  = tempPoolObje.GetComponent <Soldier>();
        activeSoldiers.Add(tempSoldier);
        tempSoldier.Set(soldierInstance);
        E_SoldierActivated.Invoke(tempSoldier);
    }
    private void MoveSoldiers()
    {
        for (int i = 0; i < soldiersOnMove.Count; i++)
        {
            tempSoldier = soldiersOnMove[i];

            //Askerin yonunu ayarla
            direction = (Index.ToVector2(tempSoldier.destination[tempSoldier.currentDestinationIndex]) - tempSoldier.position).normalized;

            //Askeri yurut
            tempSoldier.SetPosition(tempSoldier.position + direction * tempSoldier.soldierSpeed * Time.deltaTime);

            //Siradaki noktaya varip varmadigini kontrol ediyor
            if (tempSoldier.Arrived())
            {
                tempSoldier.position = tempSoldier.currentDestination;

                instanceManager.ChangeInstancePosition(tempSoldier, tempSoldier.destination[tempSoldier.currentDestinationIndex]);//Set Soldier Current Index
                mapSetter.ActivateSoldier(tempSoldier);
                //fillTile.Raise(tempSoldier.index);

                tempSoldier.currentDestinationIndex++;
                if (tempSoldier.destination.Count == tempSoldier.currentDestinationIndex)    //Asker istenilen yere vardi
                {
                    soldiersOnMove.RemoveAt(i);
                    i--;
                    tempSoldier.ClearDestination();

                    if (soldiersOnMove.Count == 0)
                    {
                        E_SoldierMovementFinished.Invoke();
                    }
                }
                else    //Siradaki nokta ayarlamasi
                {
                    tempSoldier.currentDestination = Index.ToVector2(tempSoldier.destination[tempSoldier.currentDestinationIndex]);
                }
            }
        }
    }