public bool ActionIsAvailableToPlayer(ActionEnum actionType, int playerIndex) { // Check whether specified player is entitled to take this action at this stage (only valid during a started game) ActionAvailability aa = this._ActionAvailability.GetValueOrDefault(actionType); if (aa.Availability == AvailabilityEnum.NotAvailable) { return(false); } else if (aa.Availability == AvailabilityEnum.AnyUnregisteredPlayer & playerIndex == -1) { return(true); } else if (aa.Availability == AvailabilityEnum.AnyRegisteredPlayer & playerIndex != -1) { return(true); } else if (aa.Availability == AvailabilityEnum.AdministratorOnly & playerIndex != -1 && this.Participants[playerIndex].IsGameAdministrator) { return(true); } else if (aa.Availability == AvailabilityEnum.ActivePlayerOnly & playerIndex == IndexOfParticipantToTakeNextAction & playerIndex != -1) { return(true); } return(false); }
public void SetActionAvailability(ActionEnum ac, AvailabilityEnum av) { ActionAvailability aa; if (_ActionAvailability.TryGetValue(ac, out aa)) { aa.Availability = av; } else { aa = new ActionAvailability(ac, av); _ActionAvailability.Add(ac, aa); // Note we are adding the ActionAvailability object as the value ActionAvailabilityList.Add(aa); // Also add it to the list that is in included in the JSON export } }