Example #1
0
        public void CreateStage(string typeName, List <string> avatarSpawnNameList, string baseWeatherName, bool isContinued = false)
        {
            MonoBasePerpStage component;
            StageEntry        stageEntryByName = StageData.GetStageEntryByName(typeName);
            bool    isBorn = this._activeStageEntry == null;
            Vector3 zero   = Vector3.zero;

            MonoBasePerpStage.ContinueWeatherDataSettings continueData = null;
            if (this._activeStageEntry == null)
            {
                component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE))).GetComponent <MonoBasePerpStage>();
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            else if (this._activeStageEntry.PerpStagePrefabPath != stageEntryByName.PerpStagePrefabPath)
            {
                zero         = this._perpStage.transform.position;
                continueData = this._perpStage.GetContinueWeatherDataSetup();
                UnityEngine.Object.DestroyImmediate(this._perpStage.gameObject);
                Resources.UnloadUnusedAssets();
                component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntryByName.GetPerpStagePrefabPath(), BundleType.RESOURCE_FILE))).GetComponent <MonoBasePerpStage>();
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            else
            {
                SetPerpstageNodeVisibility(this._perpStage, this._activeStageEntry, false, true);
                zero         = -this._perpStage.transform.Find(this._activeStageEntry.LocationPointName).localPosition;
                continueData = this._perpStage.GetContinueWeatherDataSetup();
                component    = this._perpStage;
                SetPerpstageNodeVisibility(component, stageEntryByName, false, false);
                SetPerpstageNodeVisibility(component, stageEntryByName, true, true);
            }
            Vector3 offset = this.InitAfterCreateStage(stageEntryByName, component, zero, isBorn, baseWeatherName, continueData, isContinued);

            Singleton <AvatarManager> .Instance.PreloadTeamAvatars();

            Singleton <EventManager> .Instance.FireEvent(new EvtStageCreated(avatarSpawnNameList, isBorn, offset), MPEventDispatchMode.Normal);
        }
Example #2
0
        private Vector3 InitAfterCreateStage(StageEntry stageEntry, MonoBasePerpStage perpStage, Vector3 preStagePos, bool isBorn, string baseWeatherName, MonoBasePerpStage.ContinueWeatherDataSettings continueData, bool isContinued)
        {
            Vector3 zero    = Vector3.zero;
            Vector3 vector2 = Vector3.zero;

            if (!string.IsNullOrEmpty(stageEntry.LocationPointName))
            {
                perpStage.transform.position = Vector3.zero;
                perpStage.transform.position = -perpStage.transform.Find(stageEntry.LocationPointName).localPosition;
                vector2 = perpStage.transform.position - preStagePos;
            }
            if (this._activeStageEntry == null)
            {
                perpStage.Init(stageEntry, baseWeatherName);
            }
            else
            {
                float             renderingTimer  = 0f;
                float             weatherTimer    = 0f;
                ConfigWeatherData fromWeatherData = null;
                ConfigWeatherData toWeatherData   = null;
                string            toWeatherName   = null;
                if (continueData != null)
                {
                    renderingTimer  = continueData.renderingDataContinueTimer;
                    weatherTimer    = continueData.weatherContinueTimer;
                    fromWeatherData = continueData.currentWeatherData;
                    toWeatherData   = continueData.continueWeatherData;
                    toWeatherName   = continueData.continueWeatherName;
                }
                if (this._activeStageEntry.PerpStagePrefabPath != stageEntry.PerpStagePrefabPath)
                {
                    if (isContinued)
                    {
                        if (renderingTimer > 0f)
                        {
                            if (toWeatherName != null)
                            {
                                perpStage.Init(stageEntry, fromWeatherData, toWeatherName, renderingTimer, weatherTimer);
                            }
                            else
                            {
                                perpStage.Init(stageEntry, fromWeatherData, toWeatherData, renderingTimer, weatherTimer);
                            }
                        }
                        else if (toWeatherName != null)
                        {
                            perpStage.Init(stageEntry, toWeatherName);
                        }
                        else
                        {
                            perpStage.Init(stageEntry, toWeatherData);
                        }
                    }
                    else
                    {
                        perpStage.Init(stageEntry, baseWeatherName);
                    }
                }
                else if (isContinued)
                {
                    if (renderingTimer > 0f)
                    {
                        perpStage.TransitWeatherData(toWeatherData, renderingTimer, weatherTimer);
                    }
                    else
                    {
                        perpStage.Reset(stageEntry, toWeatherData);
                    }
                }
                else
                {
                    perpStage.Reset(stageEntry, WeatherData.GetWeatherDataConfig(baseWeatherName));
                }
                this.CleanForStageTransit();
            }
            GameObject obj2 = (GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource(stageEntry.GetEnvPrefabPath(), BundleType.RESOURCE_FILE));

            obj2.transform.position = Vector3.zero;
            obj2.transform.rotation = Quaternion.identity;
            MonoStageEnv component = obj2.GetComponent <MonoStageEnv>();
            Vector3      vector3   = new Vector3(0f, -0.05f, 0f);
            Transform    transform = Miscs.FindFirstChildGivenLayerAndCollider(obj2.transform, LayerMask.NameToLayer("StageCollider"));

            if (transform != null)
            {
                transform.position += vector3;
            }
            this.RegisterStage(stageEntry, perpStage, component);
            return(vector2);
        }