public void EnterState(VMEODPizzaState state)
        {
            State = state;
            btnIngredient1.Disabled = state != VMEODPizzaState.Contribution;
            btnIngredient2.Disabled = state != VMEODPizzaState.Contribution;
            btnIngredient3.Disabled = state != VMEODPizzaState.Contribution;
            switch (state)
            {
            case VMEODPizzaState.Lobby:
                P_Contrib("", "--\n--\n--\n--\n");
                SetTip(Script.GetString("strNeed4Players")); break;

            case VMEODPizzaState.PhoneCall:
                SetTip(Script.GetString("strWaitingForPhone")); break;

            case VMEODPizzaState.Contribution:
                SetTip(Script.GetString("strWaitingForContribs")); break;

            case VMEODPizzaState.Bake:
                SetTip(Script.GetString("strBaking")); break;
            }
        }
        public void EnterState(VMEODPizzaState state)
        {
            State = state;
            foreach (var player in Players)
            {
                if (player != null)
                {
                    player.Send("pizza_state", ((byte)State).ToString());
                }
            }
            switch (state)
            {
            case VMEODPizzaState.Lobby:
                foreach (var player in PizzaPlayers)
                {
                    if (player != null)
                    {
                        player.Contrib = null;
                    }
                }

                ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.Restart));
                SetTimer(-1);
                PlayerRosterUpdate();
                break;

            case VMEODPizzaState.PhoneCall:
                //give everyone cards they're missing
                for (int i = 0; i < 4; i++)
                {
                    var player = PizzaPlayers[i];
                    var client = Players[i];
                    for (int j = 0; j < 3; j++)
                    {
                        if (player.Hand[j] == null)
                        {
                            player.Hand[j] = TakeCard();
                        }
                    }
                    PlayerHandUpdate(client, player);
                }
                SetTimer(PhoneWaitSeconds);
                break;

            case VMEODPizzaState.Contribution:
                SetTimer(ContributionTimeoutSeconds);
                break;

            case VMEODPizzaState.Bake:
                SetTimer(-1);
                int pizzaHas = 0;
                for (int i = 0; i < 4; i++)
                {
                    var player = PizzaPlayers[i];
                    if (player.Contrib == null)
                    {
                        /* non-freeso
                         * var avaID = (short)(client.Avatar.ObjectID);
                         * if (avaID > 255) avaID = 0; //cool object
                         */

                        var avaID = i;

                        var select = CardRandom.Next(3);
                        player.Contrib = player.Hand[select];
                        InsertCard(player.Contrib);
                        ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.Contribute,
                                                                     (short)((short)player.Contrib.Type | (short)(avaID << 8)))); //lo: ingredient, hi: FREESO player id
                        player.Hand[select] = null;

                        PlayerHandUpdate(Players[i], player);
                    }

                    var size = (int)player.Contrib.Size;
                    var type = Math.Min(3, (int)player.Contrib.Type);

                    pizzaHas |= 1 << (type + size * 4);
                }
                PlayerContributionUpdate();

                int pizzaResult = 1;     //mama-mia! you burned it!
                for (int i = 0; i < 3; i++)
                {
                    //for all sizes, check for bonus flags, then flags.
                    var flags = (pizzaHas >> (i * 4)) & 15;
                    if (flags == 15)
                    {
                        pizzaResult = i + 5;                  //all flags set
                    }
                    else if (flags == 7)
                    {
                        pizzaResult = i + 2;                      //everything but topping
                    }
                }

                LastPizzaResult = pizzaResult;
                ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.Bake, (short)pizzaResult));
                break;

            case VMEODPizzaState.Break:
                foreach (var player in Players)
                {
                    player.Send("pizza_result", LastPizzaResult.ToString());
                }
                ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.PayoutResult, (short)LastPizzaResult));
                SetTimer(RestartDelaySeconds);
                break;
            }
        }
        public void EnterState(VMEODPizzaState state)
        {
            State = state;
            foreach (var player in Players)
                if (player != null) player.Send("pizza_state", ((byte)State).ToString());
            switch (state)
            {
                case VMEODPizzaState.Lobby:
                    foreach (var player in PizzaPlayers)
                    {
                        if (player != null) player.Contrib = null;
                    }

                    ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.Restart));
                    SetTimer(-1);
                    PlayerRosterUpdate();
                    break;
                case VMEODPizzaState.PhoneCall:
                    //give everyone cards they're missing
                    for (int i=0; i<4; i++)
                    {
                        var player = PizzaPlayers[i];
                        var client = Players[i];
                        for (int j = 0; j < 3; j++)
                        {
                            if (player.Hand[j] == null) player.Hand[j] = TakeCard();
                        }
                        PlayerHandUpdate(client, player);
                    }
                    SetTimer(PhoneWaitSeconds);
                    break;
                case VMEODPizzaState.Contribution:
                    SetTimer(ContributionTimeoutSeconds);
                    break;
                case VMEODPizzaState.Bake:
                    SetTimer(-1);
                    int pizzaHas = 0;
                    for (int i=0; i < 4; i++)
                    {
                        var player = PizzaPlayers[i];
                        if (player.Contrib == null)
                        {
                            /* non-freeso
                            var avaID = (short)(client.Avatar.ObjectID);
                            if (avaID > 255) avaID = 0; //cool object
                            */

                            var avaID = i;

                            var select = CardRandom.Next(3);
                            player.Contrib = player.Hand[select];
                            InsertCard(player.Contrib);
                            ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.Contribute,
                                (short)((short)player.Contrib.Type | (short)(avaID<<8)))); //lo: ingredient, hi: FREESO player id
                            player.Hand[select] = null;

                            PlayerHandUpdate(Players[i], player);
                        }

                        var size = (int)player.Contrib.Size;
                        var type = Math.Min(3, (int)player.Contrib.Type);

                        pizzaHas |= 1 << (type + size * 4);
                    }
                    PlayerContributionUpdate();

                    int pizzaResult = 1; //mama-mia! you burned it!
                    for (int i = 0; i < 3; i++) {
                        //for all sizes, check for bonus flags, then flags.
                        var flags = (pizzaHas >> (i * 4)) & 15;
                        if (flags == 15) pizzaResult = i + 5; //all flags set
                        else if (flags == 7) pizzaResult = i + 2; //everything but topping
                    }

                    LastPizzaResult = pizzaResult;
                    ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.Bake, (short)pizzaResult));
                    break;
                case VMEODPizzaState.Break:
                    foreach (var player in Players) player.Send("pizza_result", LastPizzaResult.ToString());
                    ControllerClient.SendOBJEvent(new VMEODEvent((short)VMEODPizzaObjEvent.PayoutResult, (short)LastPizzaResult));
                    SetTimer(RestartDelaySeconds);
                    break;
            }
        }
Beispiel #4
0
 public void EnterState(VMEODPizzaState state)
 {
     State = state;
     btnIngredient1.Disabled = (state != VMEODPizzaState.Contribution);
     btnIngredient2.Disabled = (state != VMEODPizzaState.Contribution);
     btnIngredient3.Disabled = (state != VMEODPizzaState.Contribution);
     switch (state) {
         case VMEODPizzaState.Lobby:
             P_Contrib("", "--\n--\n--\n--\n");
             SetTip(Script.GetString("strNeed4Players")); break;
         case VMEODPizzaState.PhoneCall:
             SetTip(Script.GetString("strWaitingForPhone")); break;
         case VMEODPizzaState.Contribution:
             SetTip(Script.GetString("strWaitingForContribs")); break;
         case VMEODPizzaState.Bake:
             SetTip(Script.GetString("strBaking")); break;
     }
 }