public void Clear() { if (soldierInstance != null) { soldierInstance.E_PositionChanged -= PositionChanged; soldierInstance = null; } }
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]); } } } }