Beispiel #1
0
        /// <summary>
        /// プレイヤーイベントの処理を行う関数(Update関数中の処理を移動したもの)
        /// </summary>
        private void ProcessPlayerEvent()
        {
            if (Data.PlayerEvents.Count != 0 && !SugorokuFrame.IsProcessingEvent)
            {
                if (Data.Player.PlayerID == Data.PlayerEvents.Peek().PlayerId)
                {
                    state = State.WaitThrowDice;
                }
                else
                {
                    SugorokuFrame.ProcessEvent(Data.PlayerEvents.Dequeue());
                }
            }

            // ダイスを振る処理
            if (state == State.WaitThrowDice && !SugorokuFrame.IsProcessingEvent && DiceTexture.AnimationFrame == 0)
            {
                SugorokuFrame.ProcessEvent(Data.PlayerEvents.Dequeue());
                state = State.WaitOtherPlayer;
            }
            else if (state == State.WaitThrowDice && DiceButton.LeftClicked() && !SugorokuFrame.IsProcessingEvent)
            {
                DiceTexture.AnimationStart(Data.PlayerEvents.Peek().Dice);
            }

            DiceTexture.Update();
        }
Beispiel #2
0
 /// <summary>
 /// ゲームシーンの描画処理
 /// </summary>
 public void Draw()
 {
     SugorokuFrame.Draw();
     DiceButton.Draw();
     DiceButton.MouseOverDraw();
     DiceTexture.Draw();
     MyPlayer.Draw();
     MyPlayerText.DrawText();
     FontAsset.Draw(MessageTextFont, MessageText, 0, 800, DX.GetColor(50, 50, 50));
     if (state == State.DrawRanking)
     {
         SugorokuFrame.Draw();
         CloseButton.Draw();
         CloseButton.DrawText();
     }
 }
Beispiel #3
0
        /// <summary>
        /// ゲームシーンの更新処理
        /// </summary>
        public void Update()
        {
            if (state == State.SugorokuFrameInit)
            {
                SugorokuFrame.Init(Data.MatchInfo.Players);
                MyPlayer = new TextureButton(SugorokuFrame.PlayerTextureHandle[Data.Player.PlayerID], 680, 800, 120, 120);
                state    = State.WaitOtherPlayer;
                WaitEventTimer.Dispose();
                isProcessingPlayingEvent = false;
            }

            if (Data.PlayerEvents.Count == 0 &&
                (state == State.Goal || IsGoal) &&
                SugorokuFrame.IsEndAllAnimation())
            {
                state = State.DrawRanking;
                SugorokuFrame.SetDrawRanking(Data.Ranking);
            }
            if (state == State.DrawRanking)
            {
                if (CloseButton.LeftClicked())
                {
                    DX.DxLib_End();
                }
                return;
            }

            ProcessPlayerEvent();
            SugorokuFrame.Update();

            MessageText = (state) switch
            {
                State.WaitMatchStart => "試合の開始を待っています",
                State.WaitOtherPlayer => "他のプレイヤーの行動を待っています",
                State.WaitThrowDice => "さいころを振ってください",
                State.Error => "エラーが発生しました",
                State.Goal => "ゴールしました",
                _ => ""
            };
        }
Beispiel #4
0
        /// <summary>
        /// 初期化処理
        /// </summary>
        /// <param name="data">各シーンで共用するクラス</param>
        public void Init(CommonData data)
        {
            MessageTextFont = FontAsset.Register("GameSceneUI", size: 40);
            var dicefont = FontAsset.Register("sugorokuDiceButton", size: 20);
            var handle   = TextureAsset.Register("ButtonBase2", "../../../images/ButtonBase2.png");

            DiceButton               = new TextureButton(handle, 960, 800, 320, 160, "サイコロを振る", DX.GetColor(0, 103, 167), dicefont);
            CloseButton              = new TextureButton(TextureAsset.GetTextureHandle("ButtonBase1"), 440, 800, 400, 50, "終わる", DX.GetColor(0, 103, 167), FontAsset.GetFontHandle("Default"));
            MyPlayer                 = new TextureButton(TextureAsset.Register("Toumei", "../../../images/toumei.png"), 680, 800, 120, 120);
            MyPlayerText             = new TextureButton(TextureAsset.GetTextureHandle("Toumei"), 680, 920, 120, 40, "自分の駒", DX.GetColor(100, 100, 100), dicefont);
            DiceTexture              = new DiceTexture(800, 800, 160, 160);
            SugorokuFrame            = new SugorokuFrame();
            data.MatchManager        = new MatchCommunicationManager(data.Player.PlayerID, data.RoomName);
            PlayingEventTimer        = new Timer();
            WaitEventTimer           = new Timer();
            WaitEventTimer.Elapsed  += (o, e) => WaitStartMatchTask(o, e, Data.Player.IsHost, data);
            WaitEventTimer.Interval  = 5000;
            WaitEventTimer.AutoReset = true;
            WaitEventTimer.Enabled   = true;
            WaitEventTimer.Start();
            Data = data;
            DX.SetBackgroundColor(255, 255, 255);
        }