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; } }
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; } }