internal void DeploySecurity(EnemyProgram enemy, DungeonTile dungeonTile)
 {
     enemy.SetTile(dungeonTile);
     enemy.transform.position = dungeonTile.GetOccupyingCoordinates(enemy.IsFlying(), false);
     enemyPrograms.Add(enemy);
     dungeonTile.Occupy(enemy);
 }
    internal override void Proc(DungeonTile targetTile)
    {
        AudioSource.PlayClipAtPoint(teleportSound, FindObjectOfType <Camera>().transform.position, PlayerPrefs.GetFloat(Options.sfxVolumeKey));
        if (!targetTile.isOccupied)
        {
            if (targetTile.IsVisible() && ((!targetTile.isBlocked) || Program.selectedProgram.IsFlying()))
            {
                Instantiate(teleportEffect, Program.selectedProgram.transform.position, Quaternion.identity);
                Instantiate(teleportEffect, targetTile.GetOccupyingCoordinates(Program.selectedProgram.IsFlying(), false), Quaternion.identity);

                Program.selectedProgram.myTile.Vacate(Program.selectedProgram);
                Program.selectedProgram.myTile = targetTile;
                targetTile.Occupy(Program.selectedProgram);
                Program.selectedProgram.gameObject.transform.position = targetTile.GetOccupyingCoordinates(Program.selectedProgram.IsFlying(), false);

                EndProc();
            }
        }
    }
 internal void DeploySelected(DungeonTile dungeonTile)
 {
     if (Mathf.Abs(DeploymentZone.instance.myCoords.x - dungeonTile.xCoord) <= DeploymentZone.instance.range &&
         Mathf.Abs(DeploymentZone.instance.myCoords.z - dungeonTile.zCoord) <= DeploymentZone.instance.range &&
         grid.CanDeployHere(dungeonTile))
     {
         Program.selectedProgram.myTile             = dungeonTile;
         Program.selectedProgram.transform.position = dungeonTile.GetOccupyingCoordinates(Program.selectedProgram.IsFlying(), false);
         Program.selectedProgram.BeginPlay();
         dungeonTile.Occupy(Program.selectedProgram);
     }
     else
     {
         Debug.Log((Mathf.Abs(DeploymentZone.instance.myCoords.x - dungeonTile.xCoord)).ToString());
         Debug.Log((Mathf.Abs(DeploymentZone.instance.myCoords.z - dungeonTile.zCoord)).ToString());
         Debug.Log(DeploymentZone.instance.range.ToString());
         Debug.Log(grid.CanDeployHere(dungeonTile).ToString());
     }
 }
Esempio n. 4
0
    internal void AttemptMove(DungeonTile target)
    {
        DungeonManager.instance.Wait();
        List <DungeonTile> tempPath = DungeonManager.instance.grid.FindPath(myTile, target, movesLeft, IsFlying());

        if (tempPath[tempPath.Count - 1] == target && !target.isOccupied)
        {
            myTile.Vacate(this);
            target.Occupy(this);
            movePath    = tempPath;
            movesLeft  -= (movePath.Count - 1);
            isAnimating = true;
        }
        else
        {
            movePath = new List <DungeonTile>();
            movePath.Add(myTile);
            isAnimating = true;
            if (GetComponent <EnemyProgram>())
            {
                GetComponent <EnemyProgram>().BeginSearch();
            }
        }
    }