Exemple #1
0
 // Start is called before the first frame update
 void Start()
 {
     mStagePath = "standard";
     Subject.addObserver(new Observer("gameConfigMain", (a) => {
         if (a.name == "start")
         {
             GameInitData tData = getGameData();
             MySceneManager.changeScene("game", new Arg(new Dictionary <string, object> {
                 { "data", tData }
             }));
         }
         else if (a.name == "back")
         {
             MySceneManager.changeScene("title");
         }
         else if (a.name == "selectStage")
         {
             MySceneManager.openScene("selectStage", new Arg(new Dictionary <string, object> {
                 { "path", mStagePath }
             }), null, (aArg) => {
                 TextMesh tText = GameObject.Find("stageName").GetComponent <TextMesh>();
                 tText.text     = aArg.get <string>("stageName");
                 mStagePath     = aArg.get <string>("stageFilePath");
             });
         }
     }));
 }
Exemple #2
0
        private void ExecuteStartSinglePlayerGameCommand(object parameter)
        {
            if (Interlocked.CompareExchange(ref _gameController, null, null) != null)
            {
                return;
            }

            LoadDefaultTheme();

            var startScreen = new SinglePlayerStartScreen(_soundPlayer);

            // deactivate following completely for switching to using MP-Screen as well for SP
            var dialogResult = startScreen.ShowDialog();

            if (!dialogResult.HasValue || !dialogResult.Value)
            {
                return;
            }

            var initData = GameInitData.CreateSinglePlayerGame(startScreen.Options, startScreen.EmpireID);

            //if (startScreen.EmpireID = 5)
            //    var initData = GameInitData.CreateSinglePlayerGame(startScreen.Options, themeID);

            RunGameController(gameController => gameController.RunLocal(initData), false);

            // activate following for switching to using MP-Screen as well for SP
            //var initData = GameInitData.CreateMultiplayerGame(GameOptionsManager.LoadDefaults(), "LOCAL PLAYER");
            //RunGameController(gameController => gameController.RunLocal(initData), true);
        }
Exemple #3
0
 static void Postfix(ref GameInitData __instance)
 {
     foreach (Pawn startingPawn in __instance.startingAndOptionalPawns)
     {
         MoreThanCapableMod.ResetHatedWorkTypes(startingPawn);
     }
 }
Exemple #4
0
 /// <summary>
 /// 执行数据加载进程
 /// </summary>
 /// <param name="datas"></param>
 /// <param name="startCallBack"></param>
 /// <param name="completeCallback"></param>
 private void DoDataInitProccess(List <GameInitData> datas
                                 , Action <GameInitData> startCallBack
                                 , Action <GameInitData, float> completeCallback)
 {
     if (null != datas && datas.Count > 0)
     {
         GameInitData initData = datas[0];
         Action <GameInitData, float> onComplete = (data, progress) =>
         {
             if (null != completeCallback)
             {
                 completeCallback.Invoke(data, progress);
             }
             if (1 - progress <= Mathf.Epsilon)
             {
                 datas.RemoveAt(0);
                 CoroutineMgr.Instance.DelayInvokeMethod(0.1f, () =>
                 {
                     DoDataInitProccess(datas, startCallBack, completeCallback);
                 });
             }
         };
         //开启数据配置协成
         CoroutineMgr.Instance.StartCorountine(InitGameDataCor(initData, startCallBack, onComplete));
     }
 }
Exemple #5
0
        private void ExecuteLoadGameCommand(SavedGameHeader header)
        {
            var initData = GameInitData.CreateFromSavedGame(header);

            GameLog.Client.General.Debug("doing ExecuteLoadGameCommand ...");
            RunGameController(gameController => gameController.RunLocal(initData), initData.IsMultiplayerGame);
            GameLog.Client.General.Debug("doing gameController.RunLocal(initData) ...");
        }
Exemple #6
0
 public bool TryGetCachedValue(GameInitData initData, out int ticksAbs)
 {
     if (initData.startingTile == this.cachedForStartingTile && initData.startingSeason == this.cachedForStartingSeason)
     {
         ticksAbs = this.cachedTicks;
         return(true);
     }
     ticksAbs = -1;
     return(false);
 }
Exemple #7
0
        public static GameInitData Create(GameInitDataType initType, string des
                                          , Action <Action <GameInitData, float>, GameInitData> callmethod, int costTimeCount = 7)
        {
            GameInitData data = new GameInitData()
            {
                InitDataType  = initType,
                Des           = des,
                CallMethod    = callmethod,
                CostTimeCount = costTimeCount,
            };

            return(data);
        }
Exemple #8
0
 public HostGameResult HostGame(GameInitData initData, out Player localPlayer, out LobbyData lobbyData)
 {
     try
     {
         return(Channel.HostGame(initData, out localPlayer, out lobbyData));
     }
     catch (FaultException)
     {
         localPlayer = null;
         lobbyData   = null;
         return(HostGameResult.ChannelFaultFailure);
     }
 }
        public bool TryGetCachedValue(GameInitData initData, out int ticksAbs)
        {
            bool result;

            if (initData.startingTile == this.cachedForStartingTile && initData.startingSeason == this.cachedForStartingSeason)
            {
                ticksAbs = this.cachedTicks;
                result   = true;
            }
            else
            {
                ticksAbs = -1;
                result   = false;
            }
            return(result);
        }
Exemple #10
0
    private GameInitData getGameData()
    {
        GameInitData tData = new GameInitData();

        tData.mPlayerDataList = new GameInitData.PlayerData[4];
        for (int i = 0; i < 4; i++)
        {
            GameInitData.PlayerData tPlayer = new GameInitData.PlayerData();
            tPlayer.mAnimalName      = mPlayers[i].GetComponentInChildren <FaceButton>().getAnimalName();
            tPlayer.mIsPlayer        = mPlayers[i].findChild <MeetCheck>("playerCheck").mIsChecked;
            tData.mPlayerDataList[i] = tPlayer;
        }
        tData.mInitialFood = int.Parse(mMeetList.mSelected.Substring(0, mMeetList.mSelected.Length - 1));
        tData.mLooting     = int.Parse(mLootingList.mSelected.Substring(0, mLootingList.mSelected.Length - 1));
        tData.mAcquisition = mAcquisitionCheck;
        tData.mStagePath   = mStagePath;
        return(tData);
    }
Exemple #11
0
    /// <summary>
    /// 执行配置数据协成
    /// </summary>
    /// <param name="initData"></param>
    /// <param name="complte"></param>
    /// <returns></returns>
    private System.Collections.IEnumerator InitGameDataCor(GameInitData initData, Action <GameInitData> startCallBack, Action <GameInitData, float> complte)
    {
        yield return(new WaitForEndOfFrame());

        if (null != startCallBack)
        {
            startCallBack.Invoke(initData);
        }
        if (null != initData.CallMethod)
        {
            initData.CallMethod.Invoke(complte, initData);
        }
        else
        {
            complte.Invoke(initData, 1f);
        }
        yield break;
    }
    /*private void Start()
     * {
     *  PlayButtonPressed();
     * }*/

    public void PlayButtonPressed()
    {
        Debug.Log("Play pressed !!!");

        // Fill data in GameInitData
        TeamDescriptor descPlayer = new TeamDescriptor();

        descPlayer.type    = Team.Type.PLAYER;
        descPlayer.species = species[0];

        TeamDescriptor descAI = new TeamDescriptor();

        descAI.type    = Team.Type.AI;
        descAI.species = species[1];

        GameInitData.Reset();
        GameInitData.teamsDescriptions.Add(descPlayer);
        GameInitData.teamsDescriptions.Add(descAI);

        SceneManager.LoadScene(1);
    }
        public CustomStartingSite()
        {
            OneWayToShow = true;

            WorldEditor.InitEditor();

            absorbInputAroundWindow = false;
            shadowAlpha             = 0f;
            preventCameraMotion     = false;

            var init = new GameInitData
            {
                playerFaction = Find.FactionManager.OfPlayer
            };

            Current.Game.InitData = init;
            Current.Game.Scenario.PreConfigure();

            ScenPart scenPart = Current.Game.Scenario.AllParts.Where(p => p is ScenPart_ConfigPage_ConfigureStartingPawns).FirstOrDefault();

            Current.Game.InitData.startingPawnCount = (scenPart as ScenPart_ConfigPage_ConfigureStartingPawns).pawnCount;

            Current.Game.InitData.startingAndOptionalPawns = WorldEditor.LoadedTemplate.StartPawns;
        }
Exemple #14
0
 public void Initialize(GameInitData data)
 {
     throw new System.NotImplementedException();
 }
Exemple #15
0
    /// <summary>
    /// 构建游戏初始化数据
    /// </summary>
    private void StructGameInitData(GameObject root)
    {
        if (null == m_lstGameInitDatas)
        {
            m_lstGameInitDatas = new List <GameInitData>();
        }
        m_lstGameInitDatas.Clear();

        //1、网络初始化
        GameInitData gameInitData = GameInitData.Create(GameInitDataType.Net, "网络初始化", (progressCallback, data) =>
        {
            //网络初始化
            NetService.Instance.Init();
            progressCallback.Invoke(data, 1);
        });

        m_lstGameInitDatas.Add(gameInitData);

        //2、品质设置

        gameInitData = GameInitData.Create(GameInitDataType.Quality, "品质设置", (progressCallback, data) =>
        {
            //品质设置
            QualitySettings.pixelLightCount = 3;
            QualitySettings.SetQualityLevel((int)QualityLevel.Good);
            progressCallback.Invoke(data, 1f);

            if (SystemInfo.systemMemorySize < 1024)
            {
                QualitySettings.shadows = ShadowQuality.Disable;
            }
        }, 30);
        m_lstGameInitDatas.Add(gameInitData);



        //3、配置表设置
        gameInitData = GameInitData.Create(GameInitDataType.Table, "配置表设置", (progressCallback, data) =>
        {
            // 配置表路径设置
            Table.SetDataPath("common/tab/");
            float totalSubProgress   = 0;
            Action <float> subAction = (subProgress) =>
            {
                totalSubProgress = 0.8f * subProgress;
                progressCallback.Invoke(data, totalSubProgress);
            };
            // 加载配置表
            GameTableManager.Instance.LoadTable(subAction);
            GameTableManager.Instance.LoadGloabalConst();
            progressCallback.Invoke(data, 1);
        }, 50);
        m_lstGameInitDatas.Add(gameInitData);



        //5、游戏环境初始化
        gameInitData = GameInitData.Create(GameInitDataType.GameEnvironment, "游戏环境初始化", (progressCallback, data) =>
        {
            // 设置特效加载回调
            EffectLoad effectLoad = new EffectLoad();
            Engine.RareEngine.Instance().SetEffectLoad(effectLoad);
            // 镜头bloom效果
            CameraBloomEffect cameraBloom = new CameraBloomEffect();
            Engine.RareEngine.Instance().SetCameraBloom(cameraBloom);

            progressCallback.Invoke(data, 0.2f);
            //剧情
            SequencerManager.Instance().Init();
            AppleSceneMaterial.Instance();

            progressCallback.Invoke(data, 0.4f);
            // 实体消息缓存
            EntityCreator.Instance().Init();
            progressCallback.Invoke(data, 0.6f);
            // 游戏逻辑初始化
            ClientGlobal.Instance().Init();
            progressCallback.Invoke(data, 0.8f);
            ////生成数据管理器
            //DataManager.Instance.Create();
            //TipsManager.Instance.Initialize();


            progressCallback.Invoke(data, 1);
        }, 20);
        m_lstGameInitDatas.Add(gameInitData);

        //6、本地数据初始化
        gameInitData = GameInitData.Create(GameInitDataType.DataManager, "本地数据初始化", (progressCallback, data) =>
        {
            //本地数据初始化
            float totalSubProgress   = 0;
            Action <float> subAction = (subProgress) =>
            {
                totalSubProgress = 0.99f * subProgress;
                progressCallback.Invoke(data, totalSubProgress);
            };
            DataManager.Instance.Create(subAction);
            TipsManager.Instance.Initialize();

            progressCallback.Invoke(data, 1);
        }, 30);
        m_lstGameInitDatas.Add(gameInitData);

        //4、GVoice初始化
        gameInitData = GameInitData.Create(GameInitDataType.GVoice, "GVoice初始化", (progressCallback, data) =>
        {
            //GVoice初始化
            GVoiceManger.Instance.InitGvoice();
            progressCallback.Invoke(data, 1);
        });
        m_lstGameInitDatas.Add(gameInitData);
    }
Exemple #16
0
 public void Cache(int ticksAbs, GameInitData initData)
 {
     this.cachedTicks             = ticksAbs;
     this.cachedForStartingTile   = initData.startingTile;
     this.cachedForStartingSeason = initData.startingSeason;
 }
Exemple #17
0
 public void Initialize(GameInitData gameInitData)
 {
     _gameInitData = gameInitData;
 }
Exemple #18
0
 /// <summary>
 /// Generates a valid first state for the game.
 /// </summary>
 /// <param name="gameInitData">A <see cref="GameInitData"/> object containing the initialization parameters for this board.</param>
 /// <returns></returns>
 public abstract TGameState CreateFirstState(GameInitData gameInitData);
Exemple #19
0
        private void ExecuteHostMultiplayerGameCommand(string playerName)
        {
            var initData = GameInitData.CreateMultiplayerGame(GameOptionsManager.LoadDefaults(), playerName);

            RunGameController(gameController => gameController.RunLocal(initData), true);
        }
Exemple #20
0
 protected virtual void InitSmth(GameInitData data)
 {
     _data = data;
 }
Exemple #21
0
        public void HostAndConnect(GameInitData initData, IPAddress remoteServerAddress)
        {
            if (initData == null)
            {
                throw new ArgumentNullException("initData");
            }
            if (remoteServerAddress == null)
            {
                throw new ArgumentNullException("remoteServerAddress");
            }

            CheckDisposed();

            try
            {
                _serviceClient = new ServiceClient(
                    new InstanceContext(_clientCallback),
                    LocalEndpointConfigurationName);

                _serviceClient.InnerChannel.Closed        += OnChannelClosed;
                _serviceClient.InnerDuplexChannel.Closed  += OnChannelClosed;
                _serviceClient.InnerChannel.Faulted       += OnChannelFaulted;
                _serviceClient.InnerDuplexChannel.Faulted += OnChannelFaulted;

                lock (_clientLock)
                {
                    _connectionEstablished = true;
                    _isConnected           = true;
                }

                OnConnected();

                bool operationFailed = false;

                var hostGameResult = _serviceClient.HostGame(initData, out Player localPlayer, out LobbyData lobbyData);

                switch (hostGameResult)
                {
                case HostGameResult.Success:
                    _saveGameCommand.IsActive = true;
                    Observable.ToAsync(
                        () => ClientEvents.LobbyUpdated.Publish(new ClientDataEventArgs <ILobbyData>(lobbyData)),
                        _scheduler)();
                    break;

                case HostGameResult.LoadGameFailure:
                    _disconnectReason = ClientDisconnectReason.LoadGameFailure;
                    operationFailed   = true;
                    break;

                case HostGameResult.ChannelFaultFailure:
                    _disconnectReason = ClientDisconnectReason.LocalServiceFailure;
                    operationFailed   = true;
                    break;

                default:
                case HostGameResult.ServiceAlreadyRunning:
                case HostGameResult.UnknownFailure:
                    _disconnectReason = ClientDisconnectReason.UnknownFailure;
                    operationFailed   = true;
                    break;
                }

                if (operationFailed)
                {
                    Disconnect();
                }
            }
            catch
            {
                Dispose();
                throw;
            }
        }
Exemple #22
0
 protected override void InitSmth(GameInitData data)
 {
     Debug.Log("init data" + data);
     base.InitSmth(data);
 }