예제 #1
0
    //This is used when locally selecting a posion card. Network poisoning happens differently+
    public void ChoosePoisonCard(int myPlayerinteger, IndividualCard myCard, string message)
    {
        DataLogger.LogMessage("Player: " + myPlayerinteger.ToString() + " picked Poison card!" + myCard.cBase.myPoisonType + " - " + message);

        switch (myCard.cBase.myPoisonType)
        {
        case CardBase.PoisonTypes.DeadlyPoison:
            DeadlyRoutineHolder myHolder = new DeadlyRoutineHolder(myCard);
            Coroutine           myRout   = StartCoroutine(DeadlyPoisonCard(myPlayerinteger, myCard, myHolder));
            myHolder.routine = myRout;
            ActivatedDeadlyPoisons.Enqueue(myHolder);
            findTheCureUIEffect.SetActive(true);
            break;

        case CardBase.PoisonTypes.PoisonCure:
            if (CureDeadlyPoison())
            {
                myCard.SelectCard(myPlayerinteger);
                myCard.Invoke("MatchCard", 1f);
            }
            else
            {
                myCard.SelectCard(myPlayerinteger);
                myCard.Invoke("UnSelectCard", 1f);
            }
            break;
        }
    }
    IEnumerator _Activate(IndividualCard myCard)
    {
        isFin = false;
        while (!IsOnPos() || isGoToPosActive)
        {
            yield return(0);
        }

        GoToPos(myCard.x, myCard.y, "Poison");

        while (!IsOnPos())
        {
            yield return(0);
        }

        yield return(new WaitForSeconds(0.5f));

        myCard.SelectCard();
        myCard.cardType       = 15;
        myCard.isPoison       = true;
        myCard.selectedEffect = (GameObject)Instantiate(poisonSelectEfect, myCard.transform.position, Quaternion.identity);

        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_activeTime));

        myCard.UnSelectCard();

        isFin = true;
    }
예제 #3
0
    protected bool Select(IndividualCard card)
    {
        if (card == null)
        {
            return(false);
        }

        if (DataHandler.s.myPlayerInteger == 0)
        {
            SendNPCAction(card.x, card.y, NPCManager.ActionType.SelectCard, -1);
        }

        card.isTargeted = false;
        if (card.isSelectable)
        {
            card.SelectCard(DataHandler.NPCInteger);
            //SendAction (card.x, card.y, power, amount, PowerUpManager.ActionType.SelectCard);
            mem_Cards.Add(card);
            if (selectPrefab != null)
            {
                card.selectedEffect = Instantiate(selectPrefab.gameObject, card.transform.position, Quaternion.identity);
            }

            denyCount = 0;
            return(true);
        }
        else
        {
            return(false);
        }
    }
예제 #4
0
    public void SelectCard(IndividualCard myCardS)
    {
        canSelect = false;
        if (myCardS.cBase.isPoison && !canSelect)
        {
            CardChecker.s.UnSelectCards(mem_Cards);
            CardChecker.s.EmptyArray(mem_Cards);

            canSelect = true;
            PoisonMaster.s.ChoosePoisonCard(DataHandler.s.myPlayerInteger, myCardS, "local player");
            return;
        }

        /*if (activeTimer != null)
         *      StopCoroutine (activeTimer);*/

        PowerUpManager.s.SelectInvoke(myCardS);
        myCardS.selectedEffect = (GameObject)Instantiate(myEffect, myCardS.transform.position, Quaternion.identity);
        myCardS.selectEffectID = DataHandler.s.myPlayerInteger;
        myCardS.SelectCard(DataHandler.s.myPlayerInteger);
        DataHandler.s.SendPlayerAction(myCardS.x, myCardS.y, CardHandler.CardActions.Select);
        mem_Cards.Add(myCardS);
        canSelect = true;

        /*activeTimer = DeselectTimer (myCardS);
         * StartCoroutine (activeTimer);*/

        if (mem_Cards.Count >= handSize)
        {
            canSelect = false;
            Invoke("CheckCards", GS.a.playerSelectionSettings.checkSpeedPlayer);
        }
    }
 public void ShadowSelectCard(IndividualCard myCard)
 {
     myCard.SelectCard();
     mem_Cards_List.Add(myCard);
     myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);
     Instantiate(activatePrefab, myCard.transform.position, Quaternion.identity);
 }
예제 #6
0
    public void ReceiveAction(int player, int x, int y, PowerUpManager.ActionType action)
    {
        switch (action)
        {
        case PowerUpManager.ActionType.Enable:
            network_scoreboard [player] = (GameObject)Instantiate(scoreboardPrefab, ScoreBoardManager.s.scoreBoards [player].transform);
            network_scoreboard [player].transform.ResetTransformation();
            break;

        case PowerUpManager.ActionType.Activate:
            IndividualCard myCard = CardHandler.s.allCards [x, y];
            if (myCard.isSelectable)
            {
                myCard.SelectCard();
                myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);
            }
            else
            {
                DataHandler.s.NetworkCorrection(myCard);
            }
            break;

        case PowerUpManager.ActionType.Disable:
            if (network_scoreboard [player] != null)
            {
                network_scoreboard [player].GetComponent <DisableAndDestroy> ().Engage();
            }
            network_scoreboard [player] = null;
            break;

        default:
            DataLogger.LogError("Unrecognized power up action PUE");
            break;
        }
    }
예제 #7
0
 void SelectCard(IndividualCard myCard, int i)
 {
     myCard.SelectCard();
     mem_Cards[i] = myCard;
     mem_Cards[i].selectedEffect  = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);
     mem_Cards [i].selectEffectID = 1 + 4 + 1;
     Instantiate(activatePrefab, myCard.transform.position, Quaternion.identity);
     SendAction(myCard.x, myCard.y, PowerUpManager.ActionType.Activate);
 }
예제 #8
0
    public void Activate(IndividualCard myCard)
    {
        myCard.SelectCard();
        mem_Cards.Add(myCard);
        myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);
        myCard.selectEffectID = 1 + 4 + 1 + 1;
        Instantiate(activatePrefab, myCard.transform.position, Quaternion.identity);
        SendAction(myCard.x, myCard.y, PowerUpManager.ActionType.Activate);
        LocalPlayerController.s.canSelect = true;


        counter++;

        /*if (counter >= GS.a.shadow_activeCount)
         *      Disable ();*/
    }
예제 #9
0
    public void ReceiveAction(int player, IndividualCard card, int _power, float _amount, PowerUpManager.ActionType action)
    {
        try {
            switch (action)
            {
            case PowerUpManager.ActionType.Enable:
                if (indicatorScoreboardPrefab != null)
                {
                    networkedIndicators[player] = (GameObject)Instantiate(indicatorScoreboardPrefab, ScoreBoardManager.s.scoreBoards[player].transform);
                    networkedIndicators[player].transform.ResetTransformation();
                }
                NetworkedEnable(player, _power, _amount);
                break;

            case PowerUpManager.ActionType.Activate:
                NetworkedActivate(player, card, _power, _amount);
                break;

            case PowerUpManager.ActionType.SelectCard:
                if (card.isSelectable)
                {
                    card.SelectCard(-1);
                }
                else
                {
                    DataHandler.s.NetworkCorrection(card);
                }
                break;

            case PowerUpManager.ActionType.Disable:
                if (networkedIndicators[player] != null)
                {
                    networkedIndicators[player].GetComponent <DisableAndDestroy> ().Engage();
                }
                networkedIndicators[player] = null;
                NetworkedDisable(player, _power, _amount);
                break;

            default:
                DataLogger.LogError("Unrecognized power up action PUF");
                break;
            }
        } catch (System.Exception e) {
            DataLogger.LogError(this.name, e);
        }
    }
예제 #10
0
    IEnumerator NetworkActivate(int player, IndividualCard myCard)
    {
        myCard.SelectCard();
        myCard.cardType       = 15;
        myCard.isPoison       = true;
        myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);

        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_activeTime));


        if (network_scoreboard [player] != null)
        {
            network_scoreboard [player].GetComponent <DisableAndDestroy> ().Engage();
        }
        network_scoreboard [player] = null;

        myCard.UnSelectCard();
    }
예제 #11
0
    IEnumerator NetworkDisable(int player, IndividualCard myCard)
    {
        myCard.SelectCard();
        Instantiate(activatePrefab, myCard.transform.position, Quaternion.identity);
        myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);

        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_checkSpeed / 4f));

        for (int i = 0; i < GS.a.powerUpSettings.poison_damage; i++)
        {
            GameObject exp = (GameObject)Instantiate(scoreLowerExplosionPrefab, ScoreBoardManager.s.scoreBoards [player].transform);
            exp.transform.ResetTransformation();

            yield return(new WaitForSeconds((GS.a.powerUpSettings.poison_checkSpeed / 2f) / (float)GS.a.powerUpSettings.poison_damage));
        }

        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_checkSpeed / 4f));

        myCard.PoisonMatch();
    }
예제 #12
0
    IEnumerator _Activate(IndividualCard myCard)
    {
        SendAction(myCard.x, myCard.y, PowerUpManager.ActionType.Activate);

        myCard.SelectCard();
        myCard.cardType       = 15;
        myCard.isPoison       = true;
        myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);


        indicator.GetComponent <DisableAndDestroy> ().Engage();
        indicator = null;
        LocalPlayerController.s.PowerUpMode(false);
        PowerUpManager.s.canActivatePowerUp = true;
        LocalPlayerController.s.canSelect   = true;


        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_activeTime));


        myCard.UnSelectCard();
    }
예제 #13
0
    IEnumerator _ChoosePoisonCard(int myPlayerinteger, IndividualCard myCard)
    {
        bool temp = true;

        if (myPlayerinteger == DataHandler.s.myPlayerInteger)
        {
            //LocalPlayerController.s.canSelect = false;
            //temp = PowerUpManager.s.canActivatePowerUp;
            //PowerUpManager.s.canActivatePowerUp = false;
        }

        myCard.SelectCard();
        Instantiate(activatePrefab, myCard.transform.position, Quaternion.identity);
        myCard.selectedEffect = (GameObject)Instantiate(selectPrefab, myCard.transform.position, Quaternion.identity);
        myCard.isPoison       = false;

        print("poison coroutine started");

        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_checkSpeed / 4f));

        for (int i = 0; i < GS.a.powerUpSettings.poison_damage; i++)
        {
            ScoreBoardManager.s.AddScore(myPlayerinteger, 0, -1, false);
            GameObject exp = (GameObject)Instantiate(scoreLowerExplosionPrefab, ScoreBoardManager.s.scoreBoards [myPlayerinteger].transform);
            exp.transform.ResetTransformation();

            yield return(new WaitForSeconds((GS.a.powerUpSettings.poison_checkSpeed / 2f) / (float)GS.a.powerUpSettings.poison_damage));
        }

        yield return(new WaitForSeconds(GS.a.powerUpSettings.poison_checkSpeed / 4f));

        if (myPlayerinteger == DataHandler.s.myPlayerInteger)
        {
            //LocalPlayerController.s.canSelect = true;
            //PowerUpManager.s.canActivatePowerUp = temp;
        }
        myCard.PoisonMatch();
    }
예제 #14
0
    protected void Select(IndividualCard card)
    {
        if (card == null)
        {
            return;
        }

        if (card.isOccupied)
        {
            card.KillOccupants();
        }

        if (card.isSelectable)
        {
            card.SelectCard(-1);
            SendAction(card.x, card.y, power, amount, PowerUpManager.ActionType.SelectCard);
            mem_Cards.Add(card);
            if (selectPrefab != null)
            {
                card.selectedEffect = (GameObject)Instantiate(selectPrefab, card.transform.position, Quaternion.identity);
            }
        }
    }
예제 #15
0
    IEnumerator DeadlyPoisonCard(int myPlayerinteger, IndividualCard myCard, DeadlyRoutineHolder holder)
    {
        myCard.SelectCard(myPlayerinteger);
        float timer = myCard.cBase.poisonAmount;

        GameObject myEffect = Instantiate(deadlyPoisonEffect, myCard.transform.position, Quaternion.identity);

        myEffect.GetComponent <DeadlyPoisonEffect> ().SetUp(timer);

        holder.effect = myEffect;

        yield return(new WaitForSeconds(timer));

        LocalPlayerController.s.canSelect   = false;
        GameObjectiveMaster.s.isGamePlaying = false;

        Instantiate(deadlyPoisonExplodeEffect, myCard.transform.position, Quaternion.identity);

        yield return(new WaitForSeconds(1f));

        GameObjectiveMaster.s.EndGame(GameObjectiveMaster.s.WinnerID(false));

        yield return(null);
    }
예제 #16
0
    public void ReceiveNetworkCorrection(byte[] data)
    {
        int        x;
        int        y;
        int        type;
        int        selectEffectID;
        cardStates state;

        x              = System.BitConverter.ToInt16(data, 2);
        y              = System.BitConverter.ToInt16(data, 2 + 2);
        type           = System.BitConverter.ToInt16(data, 2 + 2 + 2);
        selectEffectID = System.BitConverter.ToInt16(data, 2 + 2 + 2 + 2);

        char cState = (char)data [2 + 2 + 2 + 2 + 2];

        switch (cState)
        {
        case cs_open:
            state = cardStates.open;
            break;

        case cs_close:
            state = cardStates.close;
            break;

        case cs_match:
            state = cardStates.matched;
            break;

        default:
            state = cardStates.close;
            break;
        }

        IndividualCard myCard = null;

        try{
            myCard = CardHandler.s.allCards [x, y];

            //these will unselect the card from respective places
            LocalPlayerController.s.ReceiveNetworkCorrection(myCard);
            PowerUpManager.s.ReceiveNetworkCorrection(myCard);
            NPCManager.s.ReceiveNetworkCorrection(myCard);
        } catch (Exception e) {
            DataLogger.LogMessage(e.Message + " - " + e.StackTrace);
        }

        if (myCard != null)
        {
            //after unselection is done, we will update the card type to be correct
            CardHandler.s.UpdateCardType(x, y, type);

            switch (state)
            {
            case cardStates.open:
                myCard.SelectCard(-1);
                if (selectEffectID > 0)
                {
                    myCard.DestroySelectedEfect();
                    myCard.selectedEffect = (GameObject)Instantiate(GS.a.gfxs.selectEffects[selectEffectID].gameObject, myCard.transform.position, Quaternion.identity);
                }
                break;

            case cardStates.close:
                myCard.UnSelectCard();
                break;

            case cardStates.matched:
                myCard.NetworkCorrectMatch();
                break;

            default:
                myCard.UnSelectCard();
                break;
            }
        }
    }
예제 #17
0
 void SelectCard(IndividualCard myCard, int i)
 {
     myCard.SelectCard();
     mem_Cards[i] = myCard;
     SendAction(myCard.x, myCard.y, PowerUpManager.ActionType.SelectCard);
 }
예제 #18
0
 public void SelectCard(IndividualCard myCard, int i)
 {
     myCard.SelectCard();
     mem_Cards[i] = myCard;
 }