Ejemplo n.º 1
0
        public static Tuple <KeeperPlayer, KeeperPlayer> ExchangeKeepers(FluxxGameContainer gameContainer)
        {
            KeeperPlayer keeperFrom;

            keeperFrom = new KeeperPlayer()
            {
                Player = gameContainer.WhoTurn, Card = (int)gameContainer.SingleInfo !.KeeperList.GetRandomItem().Deck
            };
            var          tempList   = gameContainer.PlayerList !.AllPlayersExceptForCurrent();
            var          tempPlayer = tempList.GetRandomItem();
            KeeperPlayer KeeperTo   = new KeeperPlayer()
            {
                Player = tempPlayer.Id, Card = (int)tempPlayer.KeeperList.GetRandomItem().Deck
            };

            return(new Tuple <KeeperPlayer, KeeperPlayer>(keeperFrom, KeeperTo));
        }
        async Task IFinalKeeperProcesses.ProcessExchangeKeepersAsync(KeeperPlayer keeperFrom, KeeperPlayer keeperTo)
        {
            if (_gameContainer.SingleInfo !.CanSendMessage(_gameContainer.BasicData !))
            {
                var thisList = new CustomBasicList <KeeperPlayer> {
                    keeperFrom, keeperTo
                };
                await _gameContainer.Network !.SendAllAsync("exchangekeepers", thisList);
            }
            if (_delegates.LoadMainScreenAsync == null)
            {
                throw new BasicBlankException("Nobody is loading the main screen when processing exchange keepers.  Rethink");
            }
            await _delegates.LoadMainScreenAsync.Invoke();

            KeeperCard      fromCard;
            KeeperCard      toCard;
            FluxxPlayerItem fromPlayer;
            FluxxPlayerItem toPlayer;

            fromPlayer          = _gameContainer.PlayerList ![keeperFrom.Player];
Ejemplo n.º 3
0
 async Task IFluxxEvent.StealTrashKeeperAsync(KeeperPlayer currentKeeper, bool isTrashed)
 {
     await _finalKeeperProcesses.ProcessTrashStealKeeperAsync(currentKeeper, isTrashed);
 }
Ejemplo n.º 4
0
 async Task IFluxxEvent.KeepersExchangedAsync(KeeperPlayer keeperFrom, KeeperPlayer keeperTo)
 {
     await _finalKeeperProcesses.ProcessExchangeKeepersAsync(keeperFrom, keeperTo);
 }
Ejemplo n.º 5
0
        public async Task ProcessAsync()
        {
            var thisList = GetSelectList();

            if (thisList.Count == 0)
            {
                await UIPlatform.ShowMessageAsync("Must choose a keeper");

                return;
            }
            if (KeeperContainer.Section == EnumKeeperSection.Exchange)
            {
                if (thisList.Count != 2)
                {
                    await UIPlatform.ShowMessageAsync("Must choose a keeper from yourself and from another player for exchange");

                    return;
                }
                if (ContainsCurrentPlayer(thisList) == false)
                {
                    await UIPlatform.ShowMessageAsync("Must choose a keeper from your keeper list in order to exchange");

                    return;
                }
                KeeperPlayer keeperFrom = new KeeperPlayer {
                    Player = GameContainer.WhoTurn
                };
                var thisHand = GetCurrentPlayerKeeperHand(thisList);
                keeperFrom.Card = thisHand.ObjectSelected();
                if (keeperFrom.Card == 0)
                {
                    throw new BasicBlankException("Keeper was never selected for current player");
                }
                thisList.RemoveSpecificItem(thisHand);
                KeeperPlayer keeperTo = new KeeperPlayer();
                keeperTo.Player = GetPlayerOfKeeperHand(thisList.Single());
                keeperTo.Card   = thisList.Single().ObjectSelected();
                if (keeperTo.Card == 0)
                {
                    throw new BasicBlankException("Keeper was never selected for player");
                }
                await _fluxxEvent.KeepersExchangedAsync(keeperFrom, keeperTo);

                return;
            }
            if (thisList.Count != 1)
            {
                await UIPlatform.ShowMessageAsync("Must choose only one keeper");

                return;
            }
            int  index = GetPlayerOfKeeperHand(thisList.Single());
            bool isTrashed;

            if (index == GameContainer.WhoTurn && KeeperContainer.Section != EnumKeeperSection.Trash)
            {
                await UIPlatform.ShowMessageAsync("Cannot steal a keeper from yourself");

                return;
            }
            isTrashed = KeeperContainer.Section == EnumKeeperSection.Trash;
            KeeperPlayer tempKeep = new KeeperPlayer();

            tempKeep.Player = index;
            tempKeep.Card   = thisList.Single().ObjectSelected();
            if (tempKeep.Card == 0)
            {
                throw new BasicBlankException("Keeper was never selected");
            }
            await _fluxxEvent.StealTrashKeeperAsync(tempKeep, isTrashed);
        }
Ejemplo n.º 6
0
    // Update is called once per frame
    void Update()
    {
        if (ActiveLayout == null)
        {
            //ActiveLayout = Layouts[Random.Range(0, Layouts.Count)];
            //ActiveLayout.SetActive(true);

            ActiveLayout = Instantiate(Layouts[Random.Range(0, Layouts.Count)], transform.position, Quaternion.identity);
        }

        if (keeperPlayerSel == KeeperPlayer.none)
        {
            if (Input.GetButtonDown("P1 Start"))
            {
                print("Player 1 is the Keeper");
                keeperPlayerSel = KeeperPlayer.one;
            }
            if (Input.GetButtonDown("P2 Start"))
            {
                print("Player 2 is the Keeper");
                keeperPlayerSel = KeeperPlayer.two;
            }
            if (Input.GetButtonDown("P3 Start"))
            {
                print("Player 3 is the Keeper");
                keeperPlayerSel = KeeperPlayer.three;
            }
            if (Input.GetButtonDown("P4 Start"))
            {
                print("Player 4 is the Keeper");
                keeperPlayerSel = KeeperPlayer.four;
            }
        }
        else if (CycleKeeper)
        {
            if (Input.GetButtonDown("P1 Start"))
            {
                if (keeperPlayerSel == KeeperPlayer.one)
                {
                    print("Player 2 is the Keeper");
                    keeperPlayerSel = KeeperPlayer.two;
                }
                else if (keeperPlayerSel == KeeperPlayer.two)
                {
                    print("Player 3 is the Keeper");
                    keeperPlayerSel = KeeperPlayer.three;
                }
                else if (keeperPlayerSel == KeeperPlayer.three)
                {
                    print("Player 4 is the Keeper");
                    keeperPlayerSel = KeeperPlayer.four;
                }
                else if (keeperPlayerSel == KeeperPlayer.four)
                {
                    print("Player 1 is the Keeper");
                    keeperPlayerSel = KeeperPlayer.one;
                }
            }
        }

        /*
         * if (Input.GetKeyDown(KeyCode.Alpha1))
         * {
         *  SelectedPlayerSel = SelectedPlayer.HostOne;
         * }
         * if (Input.GetKeyDown(KeyCode.Alpha2))
         * {
         *  SelectedPlayerSel = SelectedPlayer.HostTwo;
         * }
         * if (Input.GetKeyDown(KeyCode.Alpha3))
         * {
         *  SelectedPlayerSel = SelectedPlayer.HostThree;
         * }
         * if (Input.GetKeyDown(KeyCode.Alpha4))
         * {
         *  //SelectedPlayerSel = SelectedPlayer.Keeper;
         * }
         */

        if (Started && Hosts.Count > 0)
        {
            if (Host1 == null & !Player1Captured)
            {
                Host1 = Hosts[Random.Range(0, Hosts.Count)];
                if (Host1.GetComponent <Host>().ControllerSel == Host.Controller.Empty && Host1.GetComponent <Host>().Dead == false)
                {
                    Host1.GetComponent <Host>().ControllerSel   = Host.Controller.Player1;
                    Host1.GetComponent <NavMeshAgent>().enabled = false;
                }
                else// if (Host1.GetComponent<Host>().ControllerSel != Host.Controller.Captured)
                {
                    GM.instance.Host1 = null;
                }
            }
            else
            {
                if (Host1.GetComponent <Host>().ControllerSel != Host.Controller.Player1)
                {
                    //GM.instance.Host1 = null;
                }
            }

            if (PlayerCountSel != PlayerCount.two)
            {
                if (Host2 == null & !Player2Captured)
                {
                    Host2 = Hosts[Random.Range(0, Hosts.Count)];
                    if (Host2.GetComponent <Host>().ControllerSel == Host.Controller.Empty && Host2.GetComponent <Host>().Dead == false)
                    {
                        Host2.GetComponent <Host>().ControllerSel   = Host.Controller.Player2;
                        Host2.GetComponent <NavMeshAgent>().enabled = false;
                    }
                    else// if (Host2.GetComponent<Host>().ControllerSel != Host.Controller.Captured)
                    {
                        GM.instance.Host2 = null;
                    }
                }
                else
                {
                    if (Host2.GetComponent <Host>().ControllerSel != Host.Controller.Player2)
                    {
                        //GM.instance.Host2 = null;
                    }
                }
            }

            if (PlayerCountSel == PlayerCount.four)
            {
                if (Host3 == null & !Player3Captured)
                {
                    Host3 = Hosts[Random.Range(0, Hosts.Count)];

                    if (Host3.GetComponent <Host>().ControllerSel == Host.Controller.Empty && Host3.GetComponent <Host>().Dead == false)
                    {
                        Host3.GetComponent <Host>().ControllerSel   = Host.Controller.Player3;
                        Host3.GetComponent <NavMeshAgent>().enabled = false;
                    }
                    else// if (Host3.GetComponent<Host>().ControllerSel != Host.Controller.Captured)
                    {
                        GM.instance.Host3 = null;
                    }
                }
                else
                {
                    if (Host3.GetComponent <Host>().ControllerSel != Host.Controller.Player3)
                    {
                        //GM.instance.Host3 = null;
                    }
                }
            }

            if (ColorTest)
            {
                if (Host1 != null)
                {
                    Host1.GetComponent <Renderer>().material = Player1Mat;
                }
                if (Host2 != null)
                {
                    Host2.GetComponent <Renderer>().material = Player2Mat;
                }
                if (Host3 != null)
                {
                    Host3.GetComponent <Renderer>().material = Player3Mat;
                }
            }
            else
            {
                if (Host1 != null)
                {
                    Host1.GetComponent <Renderer>().material = HostMat;
                }
                if (Host2 != null)
                {
                    Host2.GetComponent <Renderer>().material = HostMat;
                }
                if (Host3 != null)
                {
                    Host3.GetComponent <Renderer>().material = HostMat;
                }
            }
        }

        if (Started && Graves.Count > 0)
        {
            if (Grave1 == null)
            {
                Grave1 = Graves[Random.Range(0, Graves.Count)];
                if (Grave1.GetComponent <Grave>().Claimed == false)
                {
                    Grave1.GetComponent <Grave>().OwnerSel = Grave.Owner.Player1;
                }
                else
                {
                    GM.instance.Grave1 = null;
                }
            }
            else
            {
                if (Grave1.GetComponent <Grave>().OwnerSel != Grave.Owner.Player1)
                {
                    GM.instance.Grave1 = null;
                }
            }

            if (PlayerCountSel != PlayerCount.two)
            {
                if (Grave2 == null)
                {
                    Grave2 = Graves[Random.Range(0, Graves.Count)];
                    if (Grave2.GetComponent <Grave>().Claimed == false)
                    {
                        Grave2.GetComponent <Grave>().OwnerSel = Grave.Owner.Player2;
                    }
                    else
                    {
                        GM.instance.Grave2 = null;
                    }
                }
                else
                {
                    if (Grave2.GetComponent <Grave>().OwnerSel != Grave.Owner.Player2)
                    {
                        GM.instance.Grave2 = null;
                    }
                }
            }

            if (PlayerCountSel == PlayerCount.four)
            {
                if (Grave3 == null)
                {
                    Grave3 = Graves[Random.Range(0, Graves.Count)];
                    if (Grave3.GetComponent <Grave>().Claimed == false)
                    {
                        Grave3.GetComponent <Grave>().OwnerSel = Grave.Owner.Player3;
                    }
                    else
                    {
                        GM.instance.Grave3 = null;
                    }
                }
                else
                {
                    if (Grave3.GetComponent <Grave>().OwnerSel != Grave.Owner.Player3)
                    {
                        GM.instance.Grave3 = null;
                    }
                }
            }

            if (ColorTest)
            {
                if (Grave1 != null)
                {
                    Grave1.GetComponent <Grave>().Stone.GetComponent <Renderer>().material = Grave1Mat;
                }
                if (Grave2 != null)
                {
                    Grave2.GetComponent <Grave>().Stone.GetComponent <Renderer>().material = Grave2Mat;
                }
                if (Grave3 != null)
                {
                    Grave3.GetComponent <Grave>().Stone.GetComponent <Renderer>().material = Grave3Mat;
                }
            }
            else
            {
                if (Grave1 != null)
                {
                    Grave1.GetComponent <Grave>().Stone.GetComponent <Renderer>().material = GraveMat;
                }
                if (Grave2 != null)
                {
                    Grave2.GetComponent <Grave>().Stone.GetComponent <Renderer>().material = GraveMat;
                }
                if (Grave3 != null)
                {
                    Grave3.GetComponent <Grave>().Stone.GetComponent <Renderer>().material = GraveMat;
                }
            }
        }

        //victory conditions
        if (Started)
        {
            if (Host1 != null)
            {
                if (Host1.GetComponent <Host>().Victory)
                {
                    if (!Player1Victory & !Player2Victory & !Player3Victory & !KeeperVictory)
                    {
                        Player1Victory = true;
                        Instantiate(Host1Escape, Host1.transform.position, Quaternion.identity);
                        if (Detected.Contains(Host1))
                        {
                            Detected.Remove(Host1);
                        }
                        Host1.SetActive(false);
                        print("Player 1 has escaped!");
                        print("Player 1 has won!");
                    }
                    else if (!Player1Victory)
                    {
                        Player1Victory = true;
                        Instantiate(Host1Escape, Host1.transform.position, Quaternion.identity);
                        Host1.SetActive(false);
                    }
                }
            }
            if (Host2 != null)
            {
                if (Host2.GetComponent <Host>().Victory)
                {
                    if (!Player1Victory & !Player2Victory & !Player3Victory & !KeeperVictory)
                    {
                        Player2Victory = true;
                        Instantiate(Host2Escape, Host2.transform.position, Quaternion.identity);
                        if (Detected.Contains(Host2))
                        {
                            Detected.Remove(Host2);
                        }
                        Host2.SetActive(false);
                        print("Player 2 has escaped!");
                        print("Player 2 has won!");
                    }
                    else if (!Player2Victory)
                    {
                        Player2Victory = true;
                        Instantiate(Host2Escape, Host2.transform.position, Quaternion.identity);
                        Host2.SetActive(false);
                    }
                }
            }
            if (Host3 != null)
            {
                if (Host3.GetComponent <Host>().Victory)
                {
                    if (!Player1Victory & !Player2Victory & !Player3Victory & !KeeperVictory)
                    {
                        Player3Victory = true;
                        Instantiate(Host3Escape, Host3.transform.position, Quaternion.identity);
                        if (Detected.Contains(Host3))
                        {
                            Detected.Remove(Host3);
                        }
                        Host3.SetActive(false);
                        print("Player 3 has escaped!");
                        print("Player 3 has won!");
                    }
                    else if (!Player3Victory)
                    {
                        Player3Victory = true;
                        Instantiate(Host3Escape, Host3.transform.position, Quaternion.identity);
                        Host3.SetActive(false);
                    }
                }
            }

            if (Host1 != null)
            {
                if (Host1.GetComponent <Host>().Dead)
                {
                    if (!Player1Captured)
                    {
                        Player1Captured = true;
                        print("Player 1 has been captured!");
                    }
                }
            }
            if (Host2 != null)
            {
                if (Host2.GetComponent <Host>().Dead)
                {
                    if (!Player2Captured)
                    {
                        Player2Captured = true;
                        print("Player 2 has been captured!");
                    }
                }
            }
            if (Host3 != null)
            {
                if (Host3.GetComponent <Host>().Dead)
                {
                    if (!Player3Captured)
                    {
                        Player3Captured = true;
                        print("Player 3 has been captured!");
                    }
                }
            }
            if (Player1Captured && PlayerCountSel == PlayerCount.two)
            {
                if (!KeeperVictory)
                {
                    KeeperVictory = true;
                    print("The Keeper has won!");
                }
            }
            else if (Player1Captured && Player2Captured && PlayerCountSel == PlayerCount.three)
            {
                if (!KeeperVictory)
                {
                    KeeperVictory = true;
                    print("The Keeper has won!");
                }
            }
            else if (Player1Captured && Player2Captured && Player3Captured)
            {
                if (!KeeperVictory)
                {
                    KeeperVictory = true;
                    print("The Keeper has won!");
                }
            }
        }
    }