예제 #1
0
    public void InitBattle(CombatantBoard player, CombatantBoard opponent)
    {
        playerBoard  = player;
        playerHealth = playerBoard.GetComponent <Health>();
        playerBoard.SetBoardTeamID(0);

        opponentBoard  = opponent;
        opponentHealth = opponentBoard.GetComponent <Health>();
        opponentBoard.SetBoardTeamID(1);
        opponentBoard.MirrorBoard();

        /// grant Initial Move tokens
        MoveCounter playerMoveCounter = playerBoard.GetComponentInChildren <MoveCounter>();

        if (playerMoveCounter != null)
        {
            playerMoveCounter.AddMoveToken(1);
        }
        MoveCounter opponentMoveCounter = opponentBoard.GetComponentInChildren <MoveCounter>();

        if (opponentMoveCounter != null)
        {
            opponentMoveCounter.AddMoveToken(1);
        }

        /// begin game with initial move
        if (warmupPanel == null)
        {
            warmupPanel = FindObjectOfType <WarmupPanel>();
        }
        warmupCoroutine = Warmup("INITIAL MOVE", initialWarmupTime);
        StartCoroutine(warmupCoroutine);
    }
예제 #2
0
    private IEnumerator ResolveCells()
    {
        /// oppose each row at a time
        int rowCount = playerBoard.boardRowCount;

        for (int i = 0; i < rowCount; i++)
        {
            ResolveCellRow(i);
            yield return(new WaitForSeconds(cellResolveTime));
        }

        /// loop thru each slot
        //int cellCount = playerBoard.GetSlots().Count;
        //for(int i = 0; i < cellCount; i++)
        //{
        //	CellSlot playerSlot = playerBoard.GetSlots()[i];
        //	CellSlot opponentSlot = opponentBoard.GetSlots()[i];
        //	ResolveCellPair(playerSlot, opponentSlot);
        //	yield return new WaitForSeconds(cellResolveTime);
        //}

        if (BothCharactersAlive())
        {
            /// start next round
            warmupCoroutine = Warmup("READY", betweenRoundsWarmupTime);
            StartCoroutine(warmupCoroutine);

            /// end-of-round Abilities
            endOfRoundCoroutine = EndOfRound();
            StartCoroutine(endOfRoundCoroutine);

            /// grant Move tokens
            MoveCounter playerMoveCounter = playerBoard.GetComponentInChildren <MoveCounter>();
            if (playerMoveCounter != null)
            {
                playerMoveCounter.AddMoveToken(1);
            }
            MoveCounter opponentMoveCounter = opponentBoard.GetComponentInChildren <MoveCounter>();
            if (opponentMoveCounter != null)
            {
                opponentMoveCounter.AddMoveToken(1);
            }
        }
        else
        {
            StopAllCoroutines();
            bool bPlayerWon = (playerHealth.GetHP() >= 1) && (playerBoard.GetNumCells() > 0);
            battleUI.GameOver(bPlayerWon);
        }
    }
예제 #3
0
    // Use this for initialization
    void Start()
    {
        moveCounter   = GameObject.Find("MoveCounter").GetComponent <MoveCounter>();
        swipeDetector = new GameObject().AddComponent <SwipeDetector>();
        menuManager   = GameObject.Find("Menu Manager").GetComponent <MenuManager>();
        colorModel    = GameObject.Find("RGB Diagram").GetComponent <ColorModel> ();

        closeIngameUI();
        //Get instance of GameData created on start screen
        data = GameObject.Find("GameData").GetComponent <GameData>();
        data.deserialize();


        //Initialize AudioSource
        audioSource   = gameObject.AddComponent <AudioSource>();
        deathSound    = Resources.Load("Audio/death", typeof(AudioClip)) as AudioClip;
        endLevelSound = Resources.Load <AudioClip>("Audio/Home2");
        restartSound  = Resources.Load <AudioClip>("Audio/restart");
        audioSettings = GameObject.Find("Audio").GetComponent <AudioControl>();
    }
예제 #4
0
        private Game()
        {
            phase         = GamePhase.WaitingForPlayers;
            flowClockWise = true;

            discardPile = new Deck();
            drawPile    = new Deck();

            players    = new Player[10];
            numPlayers = 0;

            gameWatcher = new GameWatcher();

            perfectDeck = new DeckBuilderFacade()
                          .number
                          .SetAllNumberCards(2)
                          .SetIndividualNumberCards(0, 1)
                          .action
                          .SetActionCards(2)
                          .wild
                          .SetBlackCards(4)
                          .Build();

            semiPerfectDeck = new DeckBuilderFacade()
                              .number
                              .SetAllNumberCards(2)
                              .SetIndividualNumberCards(0, 1)
                              .Build();

            cardCount = 0;
            moveCount = 0;
            skipCount = 0;
            CardCounter cardCounter = new CardCounter();
            SkipCounter skipCounter = new SkipCounter();
            MoveCounter moveCounter = new MoveCounter();

            mediator = new ConcreteMediator(this, cardCounter, moveCounter, skipCounter);
        }
예제 #5
0
 private void Awake()
 {
     Instance = this;
 }
예제 #6
0
 private static void Solve(CubeRotator rotator, Cube cube, CubeQuery query)
 {
     using (var movesText = File.CreateText("Moves.txt"))
      {
     MoveCounter bestMoveCounter = null;
     var moveCounter = new MoveCounter();
     var rotators = new CubeLayerRotatorList(
        new MoveWriter(movesText),
        moveCounter,
        rotator);
     var solver = new FirstLayerEdgeSolver(cube, query.GetCenterFacelet(Colors.White), rotators);
     var faceletsToSolveCount = solver.GetCountOfFaceletsToSolve();
     if (faceletsToSolveCount == 0)
        return;
     var permutations = Permutations.Instance.GetPermutations(faceletsToSolveCount);
     foreach (var permutation in permutations)
     {
        var cubeState = cube.GetState();
        SolveHelper(cube, solver, permutation);
        facelets to solve is out of sync.
        if (bestMoveCounter == null || bestMoveCounter.MoveCount > moveCounter.MoveCount)
           bestMoveCounter = moveCounter;
        cubeState.Restore();
        movesText.WriteLine(moveCounter.ToString());
        moveCounter = new MoveCounter();
        rotators = new CubeLayerRotatorList(
           new MoveWriter(movesText),
           moveCounter,
           rotator);
        solver = new FirstLayerEdgeSolver(cube, query.GetCenterFacelet(Colors.White), rotators);
     }
     movesText.WriteLine(bestMoveCounter.ToString());
      }
 }
예제 #7
0
 public void SetMoveable(bool value, MoveCounter counter)
 {
     bMoveable   = value;
     moveCounter = counter;
 }