void StartTurn(PhaseEnum p) { switch (p) { case PhaseEnum.PlottingPhase: PlottingPhaseInit(); break; case PhaseEnum.MovePhase: process = MovePhaseProcess; directionUI.SetActive(true); board.GetSquare(currentSquare).PlayerExit(); break; case PhaseEnum.RangePhase: case PhaseEnum.MeleePhase: SetUsedCard(currentSegment); directionUI.SetActive(true); startSquare = currentSquare; targetSquare = startSquare; process = RangePhaseProcess; break; } uiManager.SwitchUI(p, true); }
/// <summary> /// PlottingPhaseの実装セット /// </summary> #region PlottingPhase /// <summary> /// OnReceiveDataに加える。サーバから手札を受け取るときに使う。 /// データ形式...data0~Imagination番目:手札のカードID /// </summary> /// <param name="sender"></param> /// <param name="data"></param> void ReceiveHandsEvent(object sender, byte[] data) { ThrowAwayHands(); int currentIndex = 0; for (int i = 0; i < character.Imagination; i++) { if (data[i] == 255) { break; } hands |= (1 << data[i]); handObjects[i].SetCardInfo(character.GetCard(data[i])); } currentIndex = character.Imagination; if (BitCalculation.BitCount(deck) < character.Imagination) { deck = ((1 << character.Hp) - 1); discards = 0; } deck &= ~hands; currentPhase = PhaseEnum.PlottingPhase; process = PlottingPhaseProcess; signal = true; }
/// <summary> /// プレイヤーがアクションを起こすプロセス /// </summary> void ActionPlayerProcess() { players[currentPlayerID].Act(); //if (!players[currentPlayerID].Signal) //return; if (turn == maxPlayer - 1) { turn = 0; if (currentSegment == 0) { currentSegment++; ConvertCardIDIntoCardInfomation(currentSegment); DecideActionOrder(); AllocateTurnToPlayer(); return; } currentSegment = 0; process = WaitPhaseNoticeProcess; currentPhase = PhaseEnum.PlottingPhase; phaseNotice.DisplayPhaseNotice(currentPhase); //for (int i = 0; i < maxPlayer; i++) //players[i].StartTurn(currentPhase); return; } turn++; AllocateTurnToPlayer(); }
public PhaseChangedEventArgs(Player player, PhaseEnum oldPhase) { CurrentPlayer = player; OldPhase = oldPhase; if (player != null) NewPhase = player.Phase; }
public PhaseChangingEventArgs(Player player, PhaseEnum newPhase) { CurrentPlayer = player; if (player != null) CurrentPhase = player.Phase; NewPhase = newPhase; }
public void ForceAdvancePhase(bool EndFirst) { Debug.Log("Force advance phase from [" + name + "]\n"); if (Starting != null) { StopCoroutine(Starting); } //We want to mark to begin next phase on end completion. //Unintended consequence to consider later - We're setting that value to true and we might want it false later. //Should it always get set when called? if (EndFirst) { if (Ending == null) { //Set us to a reasonable phase. PhaseState = PhaseEnum.Running; CurrentPhase = this; //Start the end StartCoroutine(EndPhase()); } //Otherwise do nothing } else { if (Ending != null) { StopCoroutine(Starting); } } }
public void DisplayPhaseNotice(PhaseEnum p) { switch (p) { case PhaseEnum.PlottingPhase: text.text = StringNameSegmentPhase; image.color = Color.yellow; break; case PhaseEnum.MovePhase: text.text = StringNameMovePhase; image.color = Color.green; break; case PhaseEnum.RangePhase: text.text = StringNameRangePhase; image.color = Color.blue; break; case PhaseEnum.MeleePhase: text.text = StringNameMovePhase; image.color = Color.red; break; } vector3Tmp.Set(0, 1f, 1f); transform.localScale = vector3Tmp; vector3Tmp.Set(Screen.width / 2, Screen.height / 2, 0); transform.position = vector3Tmp; IsActing = true; }
private void DisplayStage(PhaseEnum phase, PlayerMode playerMode) { StringBuilder sbStage = new StringBuilder(); switch (phase) { case PhaseEnum.ActionTreasure: sbStage.Append("Action (Treasure)"); break; case PhaseEnum.BuyTreasure: sbStage.Append("Buy (Treasure)"); break; default: sbStage.Append(phase); break; } switch (playerMode) { case PlayerMode.Playing: case PlayerMode.Buying: case PlayerMode.Choosing: sbStage.AppendFormat(" - {0}", playerMode); break; } lStage.Content = sbStage.ToString(); }
public bool Equals(PhaseEnum obj) { if ((object)obj == null) { return(false); } return(StringComparer.OrdinalIgnoreCase.Equals(this.Value, obj.Value)); }
public PhaseChangedEventArgs(Player player, PhaseEnum oldPhase) { CurrentPlayer = player; OldPhase = oldPhase; if (player != null) { NewPhase = player.Phase; } }
public PhaseChangingEventArgs(Player player, PhaseEnum newPhase) { CurrentPlayer = player; if (player != null) { CurrentPhase = player.Phase; } NewPhase = newPhase; }
/// <summary> /// actionOrderに従って、プレイヤーにターンを割り振る /// </summary> void AllocateTurnToPlayer() { currentPlayerID = actionOrder[turn]; if (currentPhase != ChangeCardTypeToPhase(cards[currentPlayerID].Type)) { currentPhase = ChangeCardTypeToPhase(cards[currentPlayerID].Type); phaseNotice.DisplayPhaseNotice(currentPhase); process = WaitPhaseNoticeProcess; } //players[currentPlayerID].StartTurn(currentPhase, currentSegment); signal = true; }
public static int AttackGuageAmount(PhaseEnum phase) { switch (phase) { case PhaseEnum.Start: return(20); case PhaseEnum.Main: return(15); case PhaseEnum.Finale: return(10); default: return(0); } }
public void RegressPhase() { PhaseState = PhaseEnum.Unstarted; if (Starting != null) { StopCoroutine(Starting); } if (Ending != null) { StopCoroutine(Ending); } PreviousPhase.ResetPhase(true); }
public static float WordSpawnDelay(PhaseEnum phase) { switch (phase) { case PhaseEnum.Start: return(2); case PhaseEnum.Main: return(2.5f - WordSpace.inst.playerTypingRate); case PhaseEnum.Finale: return(1); default: return(0); } }
public static float NameSpawnDelay(PhaseEnum phase) { switch (phase) { case PhaseEnum.Start: return(15); case PhaseEnum.Main: return(12); case PhaseEnum.Finale: return(8); default: return(0); } }
public static int RateArrangePoint(PhaseEnum phase) { switch (phase) { case PhaseEnum.Start: return(300); case PhaseEnum.Main: return(150); case PhaseEnum.Finale: return(50); default: return(0); } }
public static float NameSpawnReduce(PhaseEnum phase) { switch (phase) { case PhaseEnum.Start: return(1); case PhaseEnum.Main: return(1); case PhaseEnum.Finale: return(0.4f); default: return(0); } }
IEnumerator StartPhase() { StartingCorout = true; if (PhaseState == PhaseEnum.Unstarted) { PhaseState = PhaseEnum.Starting; yield return(OnPhaseStart()); yield return(new WaitForSeconds(StartDuration)); PhaseState = PhaseEnum.Running; CurrentPhase = this; } StartingCorout = false; }
void Awake() { words = new List <WordObject>(); nameWords = new List <NameWord>(); wordBackgrounds = new Sprite[4, 5]; hopaeBackgrounds = new Sprite[6]; stringWords = new List <string> [4]; for (int i = 0; i < 4; i++) { stringWords[i] = new List <string>(); } currentPhase = PhaseEnum.Start; ResourcesLoader.ParseCSVFile(); ResourcesLoader.LoadImages(); }
/// <summary> /// actionOrderに従って、プレイヤーにターンを割り振る /// </summary> void AllocateTurnToPlayer() { byte[] data = new byte[2]; currentPlayerID = actionOrder[turn]; data[0] = (byte)currentPlayerID; if (currentPhase != ChangeCardTypeToPhase(cards[currentPlayerID].Type)) { currentPhase = ChangeCardTypeToPhase(cards[currentPlayerID].Type); } data[1] = (byte)currentPhase; for (int i = 0; i < maxPlayer; i++) { server.StartSend(clients[i], data); } server.StartReceive(clients[currentPlayerID], 1024);//データサイズ変更 }
void Start() { board.Initialize(); board.ChangeRedBitFlag(board.GetSquare(3).GetAdjacentSquares(BoardDirection.Right).Number, true); board.ApplayRedBitFlag(); actionOrder = new int[6] { 0, 1, 2, 3, 4, 5 }; players[0].Initialize(new PlayerInformation(new TestCharacter())); DrawCards(); currentPhaseEnum = PhaseEnum.PlottingPhase; currentPhase = phaseManager.GetPhase(currentPhaseEnum); phaseManager.Initialize(this, players[0]); currentPhase.Initialize(); phaseNotice.DisplayPhaseNotice(currentPhaseEnum); //players[0].StartTurn(phases[(int)currentPhase]); }
void Start() { board.Initialize(); board.ChangeRedBitFlag(board.GetSquare(3).GetAdjacentSquares(BoardDirection.Right).Number, true); board.ApplayRedBitFlag(); playerSegments = new System.Tuple <int, int> [6]; actionOrder = new int[6] { 0, 1, 2, 3, 4, 5 }; cards = new CardInfomation[6]; characters = new Character[6]; characters[0] = new TestCharacter(); //players[0].Initialize(characters[0]); currentPhase = PhaseEnum.PlottingPhase; phaseNotice.DisplayPhaseNotice(currentPhase); process = WaitPhaseNoticeProcess; }
public void ResetPhase(bool Begin = true) { PhaseState = PhaseEnum.Unstarted; if (Starting != null) { StopCoroutine(Starting); } if (Ending != null) { StopCoroutine(Ending); } if (Begin) { Starting = StartCoroutine(StartPhase()); } TimeElapsedThisPhase = 0; }
IEnumerator EndPhase() { EndingCorout = true; if (PhaseState == PhaseEnum.Running || PhaseState == PhaseEnum.Starting) { PhaseState = PhaseEnum.Ending; yield return(OnPhaseEnd()); yield return(new WaitForSeconds(EndDuration)); PhaseState = PhaseEnum.Ended; if (NextPhase != null) { NextPhase.ResetPhase(); } } EndingCorout = false; }
public void SwitchUI(PhaseEnum p, bool on) { switch (p) { case PhaseEnum.PlottingPhase: selectSegmentsPhaseUI.SetActive(on); break; case PhaseEnum.MovePhase: movePhaseUI.SetActive(on); directoinButtons.SetActive(on); break; case PhaseEnum.RangePhase: case PhaseEnum.MeleePhase: rangeMeleePhaseUI.SetActive(on); directoinButtons.SetActive(on); break; } }
public static float GradeProb(PhaseEnum phase, int gradeProbIndex) { float gradeProb = 0; switch (phase) { case PhaseEnum.Start: switch (gradeProbIndex) { case 0: gradeProb = 0.4f; break; case 1: gradeProb = 0.8f; break; case 2: gradeProb = 1; break; } break; case PhaseEnum.Main: switch (gradeProbIndex) { case 0: gradeProb = 0.5f - 0.5f * WordSpace.inst.playerTypingRate; break; case 1: gradeProb = 1 - 0.5f * WordSpace.inst.playerTypingRate; break; case 2: gradeProb = 1 - 0.15f * WordSpace.inst.playerTypingRate; break; } break; case PhaseEnum.Finale: switch (gradeProbIndex) { case 0: gradeProb = 0.2f - 0.2f * WordSpace.inst.playerTypingRate; break; case 1: gradeProb = 0.8f - 0.45f * WordSpace.inst.playerTypingRate; break; case 2: gradeProb = 0.9f - 0.15f * WordSpace.inst.playerTypingRate; break; } break; } return(gradeProb); }
/// <summary> /// actionOrderに従って、プレイヤーにターンを割り振る /// </summary> void AllocateTurnToPlayer() { currentPlayerID = actionOrder[turn]; PhaseEnum p = ChangeCardTypeToPhase(players[currentPlayerID].Information.GetPlot(CurrentSegment).Type); if (currentPhaseEnum != p) { currentPhaseEnum = p; phaseNotice.DisplayPhaseNotice(currentPhaseEnum); } if (currentPlayerID == 0) { //players[0].StartTurn(phases[(int)currentPhase]); currentPhase = phaseManager.GetPhase(currentPhaseEnum); currentPhase.Initialize(); } else { //autoPlayers[currentPlayerID]の行動 } }
void TransitionToTheNextTurn() { if (turn == maxPlayer - 1) { CurrentSegment++; turn = 0; if (CurrentSegment == 2) { CurrentSegment = 0; ThrowAwayHands(); DrawCards(); currentPhaseEnum = PhaseEnum.PlottingPhase; currentPhase = phaseManager.GetPhase(currentPhaseEnum); currentPhase.Initialize(); phaseNotice.DisplayPhaseNotice(currentPhaseEnum); return; } DecideActionOrder(); } AllocateTurnToPlayer(); }
internal void UndoPhaseChange(PhaseEnum newPhase) { if (this.Phase == PhaseEnum.Buy && newPhase == PhaseEnum.BuyTreasure && this.CurrentTurn.CardsBought.Count == 0) { this.Phase = PhaseEnum.BuyTreasure; return; } //if (this.Phase == PhaseEnum.Treasure && newPhase == PhaseEnum.Action && this.CurrentTurn.CardsPlayed.Count(c => (c.Category & Category.Treasure) == Category.Treasure) == 0) //{ // this.Phase = PhaseEnum.Action; // this.Actions = 0; // return; //} }
public BenefitReceivingEventArgs(Player player, CardBenefit cardBenefit) { this.Player = new Visual.VisualPlayer(player); this.Benefit = cardBenefit; this.Phase = player.Phase; }
public EnumBlock(HaxeEmitterContext context, PhaseEnum type) : base(context) { _type = type; }
public GameUndoPlayMessage(Player player, PhaseEnum phase) : this(null, player, phase) { this.Player = player; this.Phase = phase; }
public GameUndoPlayMessage(WaitCallback waitCallback, Player player, PhaseEnum phase) : base(waitCallback) { this.Player = player; this.Phase = phase; }
/// <summary> /// byteの配列 /// rData[0]:DataType /// Notification...rData[1]:プレイヤーID,rData[2]:カードID /// Action /// </summary> void CompileReceivedData() { byte[] rData; if (receivedData.Count == 0) { return; } lock (receiveEventLock) { rData = receivedData.Dequeue(); } switch (DataType.Notification + rData[0]) { case DataType.Notification: ReceiveNotification(); break; case DataType.Action: ReceiveAction(); break; case DataType.React: ReceiveReact(); break; } //以下、ローカル関数 void ReceiveNotification() { currentPlayerID = rData[1]; PhaseEnum p = ChangeCardTypeToPhase(players[currentPlayerID].Information.Chara.GetCard(rData[2]).Type); if (currentPhaseEnum != p) { currentPhaseEnum = p; phaseNotice.DisplayPhaseNotice(currentPhaseEnum); } if (currentPlayerID == selfPlayerID) { //players[selfPlayerID].StartTurn(phases[(int)currentPhase]); currentPhase = phaseManager.GetPhase(currentPhaseEnum); currentPhase.Initialize(); } else { players[selfPlayerID].Information.SetPlot(CurrentSegment, rData[2]); //データ受け取り開始 } } void ReceiveAction() { Player tmp = players[currentPlayerID]; currentAnimation = tmp.CharaAnim; switch (PhaseEnum.PlottingPhase + rData[2]) { case PhaseEnum.MovePhase: tmp.CalculateCurrentSquare(rData[3], 4, rData, tmp.Information.Team != players[selfPlayerID].Information.Team); break; case PhaseEnum.RangePhase: break; } } void ReceiveReact() { } }
public Phase GetPhase(PhaseEnum phaseEnum) { return(phases[(int)phaseEnum]); }