public void PhaseEnd()
        {
            var go = new GameObject();
            // create a WARGame object to store the game phase
            var game = go.AddComponent <WARGame>() as WARGame;

            WARGame.Instance = game;
            // and out gameplay controller to step through the phases
            var gameplay = new GameObject().AddComponent <WARControlGameplay>() as WARControlGameplay;

            WARControlGameplay.Instance = gameplay;
            gameplay.Start();

            // create players to add to our game
            WARGame.Players.Add(new WARPlayer(1));
            WARGame.Players.Add(new WARPlayer(2));

            // the phase we are starting in
            GAME_PHASE startPhase = GAME_PHASE.morale;
            // the phase we expect to transition to
            GAME_PHASE expectedPhase = GAME_PHASE.movement;

            // set the phase to our start phase
            WARGame.SetPhase(startPhase);
            // move to the next phase
            gameplay.nextPhase();

            // make sure we got the desired phase transition
            Assert.AreEqual(expectedPhase, WARGame.Phase.Value.current);
            // destroy the gameplay controller to clean up subscriptions
            gameplay.OnDestroy();
        }
        public void TurnTransition()
        {
            var go = new GameObject();
            // create a WARGame object to store the game phase
            var game = go.AddComponent <WARGame>() as WARGame;

            WARGame.Instance = game;
            // and out gameplay controller to step through the phases
            var gameplay = new GameObject().AddComponent <WARControlGameplay>() as WARControlGameplay;

            WARControlGameplay.Instance = gameplay;
            gameplay.Start();

            // create players to add to our game
            WARGame.Players.Add(new WARPlayer(1));
            WARGame.Players.Add(new WARPlayer(2));

            int currentPlayer = 1;
            int targetPlayer  = 2;

            // set the current player
            WARControlGameplay.CurrentPlayer = currentPlayer;
            // set the phase to our start phase
            WARGame.SetPhase(GAME_PHASE.morale);
            // move to the next phase
            gameplay.nextPhase();

            // make sure we got the desired phase transition
            Assert.AreEqual(targetPlayer, WARControlGameplay.CurrentPlayer);
            // destroy the gameplay controller to clean up subscriptions
            gameplay.OnDestroy();
        }
    // the response to clicking when in deployment places a cell owned by the current user
    public void addObject(Vector3 pos)
    {
        // find the cell underneath the point we clicked
        RaycastHit hit;
        int        layerMask = 1 << (int)Layers.TableTile;

        // if there is an object under the vector
        if (Physics.Raycast(ray: Camera.main.ScreenPointToRay(pos), hitInfo: out hit, maxDistance: 5, layerMask: layerMask))
        {
            // the id of the cell we clicked on
            var id = hit.collider.GetComponent <WARActorCell>().id;


            // add a ship to play with
            var ship = GameObject.Instantiate(
                WARToolUnitFinder.GetByArmyUnitName("Shmoogaloo", "ShmooTroop")
                ).GetComponent <WARUnit>() as WARUnit;
            ship.owner = WARControlGameplay.CurrentPlayer;
            WARControlBoard.AddObjectsToCell(id, new List <WARGridObject> {
                ship as WARGridObject
            });

            // place the ship over the cell
            //ship.transform.position = WARControlBoard.Grid.GetCell(id).transform.position;

            // we're done deploying
            WARGame.SetMode(GAME_MODE.gameplay);
        }
    }