public void Init(Card _card, GameState.GameStateType _usableState, int _eventIdx, CardInfo.EffectInfo ei, Func <Game, Player, bool> _isClickable) { card = _card; usableState = _usableState; eventIdx = _eventIdx; this.GetComponentInChildren <Text>().text = ei.Text; Color color = Color.black; switch (ei.Type) { case CardInfo.EffectInfo.EffectType.Prosecution: color = ViewManager.Instance.ProsecutionColor; break; case CardInfo.EffectInfo.EffectType.Defense: color = ViewManager.Instance.DefenseColor; break; case CardInfo.EffectInfo.EffectType.Neutral: color = ViewManager.Instance.NeutralColor; break; case CardInfo.EffectInfo.EffectType.JurySelect: color = ViewManager.Instance.JurySelectColor; break; } this.GetComponent <Image>().color = color; isClickable = _isClickable; this.GetComponent <Graphic>().raycastTarget = isClickable(GameManager.Instance.Game, ChoiceHandlerDelegator.Instance.CurChoosingPlayer); }
void Update() { GameState.GameStateType curState = GameManager.Instance.Game.CurState.StateType; string str = string.Empty; switch (curState) { case GameState.GameStateType.JurySelection: case GameState.GameStateType.JuryDismissal: str = "Jury Selection"; break; case GameState.GameStateType.TrialInChief: str = "Trial In Chief"; break; case GameState.GameStateType.Summation: str = "Summation"; break; case GameState.GameStateType.Deliberation: str = "Deliberation"; break; } text.text = str; }
public void StateChangeRequest(GameState.GameStateType stateToSwitchTo) { if (shouldChangeState) UnityEngine.Debug.LogError("Already Requested to Switching States"); StateToChangeTo = stateToSwitchTo; shouldChangeState = true; }
public Game(ChoiceHandler[] playerChoiceHandlers, string cardInfoJson, GameState.GameStateType startState = GameState.GameStateType.JurySelection) { StartState = startState; Board = new Board(this); CardTemplateGenerator tempGenerator = new CardTemplateGenerator(cardInfoJson); List <Card> cards = new List <Card>(); tempGenerator.GetAllCardTemplates().ForEach(c => cards.Add(new Card(c))); Deck = new DeckHolder(cards); Discards = new DiscardHolder(); int idx = 0; foreach (Player.PlayerSide side in new Player.PlayerSide[] { Player.PlayerSide.Prosecution, Player.PlayerSide.Defense }) { players.Add(side, new Player(side, playerChoiceHandlers[idx], this)); idx += 1; } NotifyStateStart += logStartOfState; NotifyGameEnd += logEndOfGame; initStates(); }
private void ChangeState(GameState.GameStateType stateToChangeTo) { //Make Sure the new state was set up if (stateToChangeTo == GameState.GameStateType.NOT_SET) { UnityEngine.Debug.LogError("You Can't change to a state without setting the new state"); } //pop the old one off stateMachine.Pop(); //Create the New State based on the request switch (stateToChangeTo) { case GameState.GameStateType.SETUP_PLAYER: { SetupPlayerState setupState = new SetupPlayerState(); setupState.game = this; stateMachine.Push(setupState); } break; } shouldChangeState = false; }
public void StateChangeRequest(GameState.GameStateType stateToSwitchTo) { if (shouldChangeState) { UnityEngine.Debug.LogError("Already Requested to Switching States"); } StateToChangeTo = stateToSwitchTo; shouldChangeState = true; }
private void initCardDisplay(Card card) { resetDisplay(); if (cardCanBeDisplayed()) { var cardInfo = card.Template.CardInfo; cardName.text = cardInfo.Name; actionPoints.text = card.Template.ActionPts.ToString(); bool handled = true; GameState.GameStateType stateType = GameManager.Instance.Game.CurState.StateType; List <CardInfo.EffectInfo> cardEffectPair = null; switch (stateType) { case GameState.GameStateType.JurySelection: cardEffectPair = cardInfo.JurySelectionInfos; break; case GameState.GameStateType.TrialInChief: cardEffectPair = cardInfo.TrialInChiefInfos; break; case GameState.GameStateType.Summation: cardEffectPair = cardInfo.SummationInfos; break; default: handled = false; break; } if (handled) { int size = cardEffectPair.Count; for (int i = 0; i < size; ++i) { CardEventUsageFieldElement eventObj = GameObject.Instantiate(cardEventFieldElementPrefab); eventObj.gameObject.SetActive(true); eventObj.Init(card, stateType, i, cardEffectPair[i], (Game game, Player choosingPlayer) => { return(false); }); RectTransform rect = eventObj.GetComponent <RectTransform>(); rect.anchorMin = new Vector2(0, 1.0f - (float)(i + 1) / size); rect.anchorMax = new Vector2(1, 1.0f - (float)i / size); eventObj.transform.SetParent(eventFieldParent.transform, false); } } } }
void Awake() { GameManager.instance = this; TextAsset cardInfoTxt = Resources.Load("HighTreasonCardTexts") as TextAsset; GameState.GameStateType startState = GameState.GameStateType.JurySelection; if (skipToTrialInChief) { startState = GameState.GameStateType.TrialInChief; } else if (skipToSummation) { startState = GameState.GameStateType.Summation; } Game = new Game(new ChoiceHandler[] { new UnityChoiceHandler(), new UnityChoiceHandler() }, cardInfoTxt.text, startState); }
public int GetNumberOfEventsInState(GameState.GameStateType type) { int num = 0; if (type == GameState.GameStateType.JurySelection) { num = SelectionEvents.Count; } else if (type == GameState.GameStateType.TrialInChief) { num = TrialEvents.Count; } else if (type == GameState.GameStateType.Summation) { num = SummationEvents.Count; } return(num); }
private void updateDisplay(Card card) { resetDisplay(); var cardInfo = card.Template.CardInfo; typing.text = cardInfo.Typing; cardName.text = cardInfo.Name; notes.text = cardInfo.Notes; actionPoints.Init(card); GameState.GameStateType[] stateTypes = new GameState.GameStateType[] { GameState.GameStateType.JurySelection, GameState.GameStateType.TrialInChief, GameState.GameStateType.Summation }; List <CardInfo.EffectInfo>[] cardEffectInfos = new List <CardInfo.EffectInfo>[] { cardInfo.JurySelectionInfos, cardInfo.TrialInChiefInfos, cardInfo.SummationInfos }; List <CardTemplate.CardEffectPair>[] cardEffectPairs = new List <CardTemplate.CardEffectPair>[] { card.Template.SelectionEvents, card.Template.TrialEvents, card.Template.SummationEvents }; GameObject[] parentGOs = new GameObject[] { jurySelectionParent, trialInChiefParent, summationParent }; for (int j = 0; j < stateTypes.Length; ++j) { List <CardInfo.EffectInfo> infoList = cardEffectInfos[j]; List <CardTemplate.CardEffectPair> effectPairs = cardEffectPairs[j]; GameObject parentGO = parentGOs[j]; GameState.GameStateType stateType = stateTypes[j]; int size = infoList.Count; for (int i = 0; i < size; ++i) { CardEventUsageFieldElement eventObj = GameObject.Instantiate(cardEventFieldElementPrefab); eventObj.gameObject.SetActive(true); eventObj.Init(card, stateType, i, infoList[i], effectPairs[i].Selectable); RectTransform rect = eventObj.GetComponent <RectTransform>(); rect.anchorMin = new Vector2(0, 1.0f - (float)(i + 1) / size); rect.anchorMax = new Vector2(1, 1.0f - (float)i / size); eventObj.transform.SetParent(parentGO.transform, false); } } }
private void handleNotifyStateStart() { bool isJurySelect = GameManager.Instance.Game.CurState.StateType == GameState.GameStateType.JurySelection; bool isFirstTrialInChief = (curStateShown == GameState.GameStateType.JurySelection && GameManager.Instance.Game.CurState.StateType == GameState.GameStateType.TrialInChief); bool skippedToSummation = (!trialAndSummationMainBoardGO.activeInHierarchy && GameManager.Instance.Game.CurState.StateType == GameState.GameStateType.Summation); if (isJurySelect || isFirstTrialInChief) { SelectableElementManager.Instance.Reset(); curStateShown = GameManager.Instance.Game.CurState.StateType; } if (isJurySelect) { jurySelectionMainBoardGO.SetActive(true); } else if (isFirstTrialInChief || skippedToSummation) { jurySelectionMainBoardGO.SetActive(false); trialAndSummationMainBoardGO.SetActive(true); } }
public string ToString(Player choosingPlayer, GameState.GameStateType curStateType) { string str = ""; switch (usage) { case UsageType.Event: { str += choosingPlayer.Side + " played " + card.Template.Name + " played as event\n"; int idx = (int)misc[0]; if (curStateType == GameState.GameStateType.JurySelection) { str += card.Template.CardInfo.JurySelectionInfos[idx].Text; } else if (curStateType == GameState.GameStateType.TrialInChief) { str += card.Template.CardInfo.TrialInChiefInfos[idx].Text; } else if (curStateType == GameState.GameStateType.Summation) { str += card.Template.CardInfo.SummationInfos[idx].Text; } } break; case UsageType.Action: str += choosingPlayer.Side + " played " + card.Template.Name + " played as action for " + card.Template.ActionPts + " points"; break; case UsageType.Mulligan: str += choosingPlayer.Side + " mulliganed"; break; } return(str); }
public bool PlayAsEvent(Game game, Player choosingPlayer, int idx, ChoiceHandler choiceHandler) { GameState.GameStateType curStateType = game.CurState.StateType; CardTemplate.CardChoice cardChoice = null; CardTemplate.CardEffect cardEffect = null; if (curStateType == GameState.GameStateType.JurySelection) { cardChoice = Template.SelectionEvents[idx].CardChoice; cardEffect = Template.SelectionEvents[idx].CardEffect; } else if (curStateType == GameState.GameStateType.TrialInChief) { cardChoice = Template.TrialEvents[idx].CardChoice; cardEffect = Template.TrialEvents[idx].CardEffect; } else if (curStateType == GameState.GameStateType.Summation) { cardChoice = Template.SummationEvents[idx].CardChoice; cardEffect = Template.SummationEvents[idx].CardEffect; } System.Diagnostics.Debug.Assert(cardChoice != null && cardEffect != null, "Card choice or card effect is null. Should never happen"); BoardChoices choices = cardChoice(game, choosingPlayer, choiceHandler); if (choices.NotCancelled) { FileLogger.Instance.Log(choices.ToStringForEvent()); cardEffect(game, choosingPlayer, choices); } return(choices.NotCancelled); }
public void SetNextState(GameState.GameStateType stateType) { CurState = states[stateType]; }
public override void GotoNextState() { GameState.GameStateType nextStateType = (numVisits < 2) ? GameState.GameStateType.TrialInChief : GameState.GameStateType.Summation; game.SetNextState(nextStateType); }