コード例 #1
0
            public override void Update(FlowNode_StartMultiPlay self)
            {
                DebugUtility.Log("StartMultiPlay State_Start Update");
                MyPhoton instance = PunMonoSingleton <MyPhoton> .Instance;

                if (instance.CurrentState != MyPhoton.MyState.ROOM)
                {
                    self.Failure();
                }
                else
                {
                    MyPhoton.MyRoom currentRoom = instance.GetCurrentRoom();
                    if (currentRoom == null)
                    {
                        self.Failure();
                    }
                    else if (this.mPlayerNum != currentRoom.playerCount)
                    {
                        self.FailureStartMulti();
                    }
                    else if (!instance.IsOldestPlayer() && !currentRoom.start)
                    {
                        self.Failure();
                    }
                    else
                    {
                        bool flag = true;
                        using (List <MyPhoton.MyPlayer> .Enumerator enumerator = instance.GetRoomPlayerList().GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                JSON_MyPhotonPlayerParam photonPlayerParam = JSON_MyPhotonPlayerParam.Parse(enumerator.Current.json);
                                if (photonPlayerParam.state != 2)
                                {
                                    flag = false;
                                    if (instance.IsOldestPlayer())
                                    {
                                        if (!instance.IsOldestPlayer(photonPlayerParam.playerID))
                                        {
                                            if (photonPlayerParam.state != 1)
                                            {
                                                self.FailureStartMulti();
                                                return;
                                            }
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }
                                    DebugUtility.Log("StartMultiPlay State_Start Update allStart is false");
                                    break;
                                }
                            }
                        }
                        if (flag)
                        {
                            DebugUtility.Log("StartMultiPlay State_Start Update change state to game start");
                            self.GotoState <FlowNode_StartMultiPlay.State_GameStart>();
                        }
                        else if (currentRoom.start)
                        {
                            DebugUtility.Log("StartMultiPlay State_Start Update room is closed");
                            JSON_MyPhotonPlayerParam photonPlayerParam = JSON_MyPhotonPlayerParam.Parse(instance.GetMyPlayer().json);
                            if (photonPlayerParam.state == 2)
                            {
                                return;
                            }
                            photonPlayerParam.state = 2;
                            instance.SetMyPlayerParam(photonPlayerParam.Serialize());
                            DebugUtility.Log("StartMultiPlay State_Start Update update my state");
                        }
                        else
                        {
                            if (!instance.IsOldestPlayer())
                            {
                                return;
                            }
                            DebugUtility.Log("StartMultiPlay State_Start Update close room");
                            instance.CloseRoom();
                        }
                    }
                }
            }