示例#1
0
文件: Town.cs 项目: variantc/ArmyGame
 void RegisterWithFloor()
 {
     // TO FIX OUT OF BOUNDS
     if (rc.mc.GetFloorAt(this.transform.position) != null)
     {
         currentFloor = rc.mc.GetFloorAt(this.transform.position);
         currentFloor.AddTown(this);
     }
 }
示例#2
0
    // main loop depending on game states
    private void Update()
    {
        switch (gameState)
        {
        case GameState.SpawnRoad:
            if (Input.GetKeyDown(KeyCode.Space))
            {
                rc.rg.DoRoads();
            }
            break;

        case GameState.SpawnUnit:
            if (Input.GetMouseButtonDown(0))
            {
                // On left-click round to the nearest Floor location (integer value)
                Vector3 spawnPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                spawnPos.x = Mathf.Round(spawnPos.x);
                spawnPos.y = Mathf.Round(spawnPos.y);
                spawnPos.z = 0;
                // find the floor object at the desired spawn location
                Floor floor = rc.mc.GetFloorAt(spawnPos);

                // test to see if floor exists
                if (floor != null)
                {
                    // if exists, check if there's a unit already there and if not, spawn here
                    if (floor.hasUnit == false)
                    {
                        floor.AddUnit(Instantiate(unitPrefab, spawnPos, Quaternion.identity));
                    }
                }
            }
            // un-select SpawnUnit mode on right click
            if (Input.GetMouseButtonDown(1))
            {
                gameState = GameState.Default;
            }
            break;

        case GameState.SpawnTown:
            if (Input.GetMouseButtonDown(0))
            {
                // On left-click round to the nearest Floor location (integer value)
                Vector3 spawnPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                spawnPos.x = Mathf.Round(spawnPos.x);
                spawnPos.y = Mathf.Round(spawnPos.y);
                spawnPos.z = 0;
                // find the floor object at the desired spawn location
                Floor floor = rc.mc.GetFloorAt(spawnPos);

                // test to see if floor exists
                if (floor != null)
                {
                    // if exists, check if there's a unit already there and if not, spawn here
                    if (floor.hasTown == false)
                    {
                        floor.AddTown(Instantiate(townPrefab, spawnPos, Quaternion.identity));
                    }
                }
            }
            // un-select SpawnTown mode on right click
            if (Input.GetMouseButtonDown(1))
            {
                gameState = GameState.Default;
            }
            break;

        case GameState.NextTurn:
            // Gather relevant resources
            Unit[] units = FindObjectsOfType <Unit>();
            foreach (Unit u in units)
            {
                u.GatherResources();
            }
            turn++;
            gameState = GameState.Default;
            break;

        case GameState.Default:
            if (Input.GetKeyDown(KeyCode.Space))
            {
                gameState = GameState.NextTurn;
            }
            break;
        }
    }