private static void ExitDepthLevelScene() { SceneRecord oldSceneRecord = sceneRecordStack.Pop(); SceneRecord newSceneRecord = sceneRecordStack.Peek(); GetFreeRoamSceneController(oldSceneRecord.scene).SetDoorsEnabledState(false); GetFreeRoamSceneController(oldSceneRecord.scene).SetSceneRunningState(false); StartFadeOut(); FadeOutComplete += () => { GetFreeRoamSceneController(oldSceneRecord.scene).SetSceneRunningState(true); GetFreeRoamSceneController(oldSceneRecord.scene).SetEnabledState(false); PlayerGameObject.GetComponent <PlayerController>().SetMoveDelay(sceneChangePlayerMoveDelay); MovePlayerAndMenuToNewScene(PlayerGameObject, FreeRoamMenuGameObject, newSceneRecord.scene, newSceneRecord.gridPosition); SceneManager.SetActiveScene(newSceneRecord.scene); //Wait until old scene unloaded before starting next scene SceneManager.UnloadSceneAsync(oldSceneRecord.scene).completed += (ao) => { GetFreeRoamSceneController(newSceneRecord.scene).SetDoorsEnabledState(true); GetFreeRoamSceneController(newSceneRecord.scene).SetEnabledState(true); StartFadeIn(); }; }; }
private void OnRefresSceneMap(int scendId) { if (!SceneManager.Instance.isInMieshiFuben()) { ClearMonsterList(); return; } DataModel.SceneId = scendId; mSceneRecord = Table.GetScene(scendId); if (mSceneRecord == null) { return; } var scale = 1f * mSceneRecord.TerrainHeightMapWidth / mSceneRecord.TerrainHeightMapLength; if (scale > 1.0f) { DataModel.MapWidth = (int)(MAP_HIGHT); DataModel.MapHeight = (int)(MAP_HIGHT / scale); } else { DataModel.MapWidth = (int)(MAP_HIGHT * scale); DataModel.MapHeight = (int)MAP_HIGHT; } var obj = ObjManager.Instance.MyPlayer; if (obj) { PostionChange(obj.Position); } }
public SceneStack(Stack <SceneRecord> stack, string currentSceneIdentifier, Vector2Int currentScenePosition) { //Get queue of scene records to use in correct order (reverse of stack) List <SceneRecord> stackQueueList = new List <SceneRecord>(stack); stackQueueList.Reverse(); Queue <SceneRecord> stackQueue = new Queue <SceneRecord>(stackQueueList); //Set elements from queue and parsing the SceneRecord's elements = new Element[stackQueue.Count + 1]; for (int i = 0; i < stackQueue.Count; i++) { SceneRecord record = stackQueue.Dequeue(); Element newElement = new Element(record.sceneIdentifier, record.returnPosition, record.instanceId); elements[i] = newElement; } //Add current scene elements[elements.Length - 1] = new Element(currentSceneIdentifier, currentScenePosition, currentInstanceId); }
//private void OnCreateCharacter(IEvent ievent) //{ // var e = ievent as Character_Create_Event; // var charId = e.CharacterId; // var obj = ObjManager.Instance.FindCharacterById(charId); // if (obj == null) // { // return; // } // if (obj.GetObjType() != OBJ.TYPE.NPC) // { // return; // } // OnNpcCreate(); //} //private void OnRemoveCharacter(IEvent ievent) //{ // var e = ievent as Character_Remove_Event; // var charId = e.CharacterId; // var obj = ObjManager.Instance.FindCharacterById(charId); // if (obj == null) // { // return; // } // if (obj.GetObjType() != OBJ.TYPE.NPC) // { // return; // } // if (mSceneRecord == null) // { // return; // } // OnNpcDie(obj.GetDataId()); //} #region 固有函数 public void CleanUp() { if (DataModel != null) { DataModel.ToggleList.PropertyChanged -= OnPropertyChangeToggle; } mSceneRecord = null; DataModel = new SceneMapDataModel(); DataModel.ToggleList.PropertyChanged += OnPropertyChangeToggle; var _DataModelToggleListCount1 = DataModel.ToggleList.Count; for (var i = 0; i < _DataModelToggleListCount1; i++) { DataModel.ToggleList[i] = true; } MAP_HIGHT = Table.GetClientConfig(1006).Value.ToInt(); if (!IsInit) { Table.ForeachLode(tb => { LodeDic.Add(tb.Id, tb.LodeInMap); return(true); }); IsInit = true; } }
public static bool IsDungeon(SceneRecord table) { var type = (eSceneType)table.Type; if (eSceneType.Pvp == type) { return(true); } if (eSceneType.Fuben == type) { var tableFuben = Table.GetFuben(table.FubenId); if (null != tableFuben) { var aType = (eDungeonAssistType)tableFuben.AssistType; if (eDungeonAssistType.PhaseDungeon == aType) { return(false); } } return(true); } if (eSceneType.BossHome == type) { return(true); } return(false); }
public SceneRecordDataObject UpdateSceneRecord(SceneRecordDataObject sceneRecord) { SceneRecord entity = this.sceneRecordRepository.FindByID(sceneRecord.ID); entity = DyMapper.Map <SceneRecordDataObject, SceneRecord>(sceneRecord); this.sceneRecordRepository.Update(entity); this.sceneRecordRepository.Commit(); return(DyMapper.Map <SceneRecord, SceneRecordDataObject>(entity)); }
public SceneRecordDataObject AddSceneRecord(SceneRecordDataObject sceneRecord) { SceneRecord entity = this.sceneRecordRepository.Create(); entity = DyMapper.Map(sceneRecord, entity); entity.Involved = this.sceneRecordRepository.Context.DoFindByID <Involved>(sceneRecord.InvolvedID); this.sceneRecordRepository.Add(entity); this.sceneRecordRepository.Commit(); return(DyMapper.Map <SceneRecord, SceneRecordDataObject>(entity)); }
public static bool IsInFuben(SceneRecord table) { var type = (eSceneType)table.Type; if (eSceneType.City == type || eSceneType.Normal == type) { return(false); } return(true); }
/// <summary> /// Unload the current scene and load the next scene in the scene record stack /// </summary> private static void AscendScene() { if (sceneRecordStack.Count < 1) { Debug.LogError("No scene records to load once current scene unloaded"); return; } Scene oldScene = SceneManager.GetActiveScene(); SceneRecord newSceneRecord = sceneRecordStack.Pop(); currentInstanceId = newSceneRecord.instanceId; LoadScene(newSceneRecord.sceneIdentifier, oldScene, newSceneRecord.returnPosition); }
//判断是否一般场景 public static bool IsNormalScene(SceneRecord scene) { return(scene.Type == 0 || scene.Type == 1); }
public static void CreateObstacle() { //根据当前场景名字获得场景名称 string curScene = EditorApplication.currentScene.Substring(EditorApplication.currentScene.LastIndexOf('/') + 1); curScene = curScene.Substring(0, curScene.IndexOf('.')); //首先获取当前场景的SceneClass SceneRecord sceneDefine = null; Debug.Log("Remember to add mesh collider to all the meshes."); var name = "Table/Scene.txt"; var path = "Assets/Res/" + name; Dictionary <int, IRecord> Scene = new Dictionary <int, IRecord>(); var txt = Resources.LoadAssetAtPath(path, typeof(TextAsset)) as TextAsset; TableInit.Table_Init(txt.bytes, Scene, TableType.Scene); { // foreach(var record in Scene) var __enumerator1 = (Scene).GetEnumerator(); while (__enumerator1.MoveNext()) { var record = __enumerator1.Current; { if (((SceneRecord)record.Value).ResName == curScene) { sceneDefine = (SceneRecord)record.Value; break; } } } } if (null == sceneDefine) { Debug.LogError("Scene Table Not Find, SceneID:" + curScene); return; } int nLenth = sceneDefine.TerrainHeightMapLength; int nWidth = sceneDefine.TerrainHeightMapWidth; //初始化文件 string obstacleFilePath = GetCurSceneObstacleFilePath(); FileStream fileStream = new FileStream(obstacleFilePath, FileMode.Create, FileAccess.ReadWrite); int nSeek = 0; //先将地图的长和宽写入文件头 fileStream.Seek(nSeek, SeekOrigin.Begin); byte[] byteLen = System.BitConverter.GetBytes(nLenth); fileStream.Write(byteLen, 0, byteLen.Length); nSeek += byteLen.Length; fileStream.Seek(nSeek, SeekOrigin.Begin); byte[] byteWid = System.BitConverter.GetBytes(nWidth); fileStream.Write(byteWid, 0, byteWid.Length); nSeek += byteWid.Length; bool ok = false; //对当前场景进行遍历,进行寻路检测,得到每一个点的可行走类型 for (float fX = 0.0f; fX <= (float)nWidth; fX += 0.5f) { for (float fZ = 0.0f; fZ <= (float)nLenth; fZ += 0.5f) { ObstacleInfo nState = GetScenePosPathState(fX, fZ); byte[] write = Struct2Byte(nState); if (nState.Value == NRun || nState.Value == NWalk) { ok = true; } fileStream.Seek(nSeek, SeekOrigin.Begin); fileStream.Write(write, 0, write.Length); nSeek += write.Length; } } fileStream.Close(); if (!ok) { Debug.Log("1. Check tag has added to the objects."); Debug.Log("2. Check mesh collider has added to the objects."); } else { Debug.Log("Server Obstacle Create OK"); } }
public void RefreshData(UIInitArguments data) { DataModel.ViewState = 0; DataModel.QueueState = 0; FubenRecord fuben = Table.GetFuben(30000); SceneRecord scene = Table.GetScene(fuben.SceneId); var _queueUpData = PlayerDataManager.Instance.PlayerDataModel.QueueUpData; if (_queueUpData.QueueId != -1 && _queueUpData.QueueId == fuben.QueueParam) { DataModel.QueueState = 1; } if (DataModel.Reward.Count <= 0) { DataModel.NeedLevel = scene.LevelLimit; for (int i = 0; i < fuben.RewardId.Count && i < fuben.RewardCount.Count; i++) { if (fuben.RewardId[i] > 0 && fuben.RewardCount[i] > 0) { ItemIdDataModel model = new ItemIdDataModel(); model.ItemId = fuben.RewardId[i]; model.Count = fuben.RewardCount[i]; DataModel.Reward.Add(model); } } } if (DataModel.TotalRewardRank == null) { DataModel.TotalRewardRank = new System.Collections.ObjectModel.ObservableCollection <GongxianJianliItem>(); for (int i = 0; ; i++) { CheckenFinalRewardRecord dcrr = Table.GetCheckenFinalReward(i + 1); if (dcrr == null) { break; } string[] rank = dcrr.Rank.Split('|'); GongxianJianliItem jiangliItem = new GongxianJianliItem(); if (rank.Length > 0) { if (int.Parse(rank[0]) <= 3) { jiangliItem.NubIcon = dcrr.RankIcon; } else { jiangliItem.Numb = string.Format("{0} - {1}", dcrr.Rank[0], dcrr.Rank[dcrr.Rank.Length - 1]); } for (int j = 0; j < dcrr.RankItemCount.Length; j++) { if (dcrr.RankItemID[j] > 0) { GongxianJianliItem.JiangliItem item = new GongxianJianliItem.JiangliItem(); item.IconId = dcrr.RankItemID[j]; ItemBaseRecord dbd = Table.GetItemBase(dcrr.RankItemID[j]); item.Icon = dbd.Icon; item.count = dcrr.RankItemCount[j].ToString(); jiangliItem.Rewards.Add(item); } } } DataModel.TotalRewardRank.Add(jiangliItem); } } }
private void SceneRecord_IsLockedChanged(SceneRecord sender, bool isLocked) { DisplaySceneRecord(); }
private void OnRefurbishSceneMapEvent(IEvent ievent) { var _e = ievent as RefresSceneMap; DataModel.SceneId = _e.SceneId; mSceneRecord = Table.GetScene(_e.SceneId); if (mSceneRecord == null) { return; } DataModel.ScenrIcon = mSceneRecord.ShowNameIcon; NpcDataModels.Clear(); var _scale = 1f * mSceneRecord.TerrainHeightMapWidth / mSceneRecord.TerrainHeightMapLength; if (_scale > 1.0f) { DataModel.MapWidth = (int)(MAP_HIGHT); DataModel.MapHeight = (int)(MAP_HIGHT / _scale); } else { DataModel.MapWidth = (int)(MAP_HIGHT * _scale); DataModel.MapHeight = (int)MAP_HIGHT; } var _camp = ObjManager.Instance.MyPlayer.GetCamp(); DataModel.NpcList.Clear(); DataModel.PlayerList.Clear(); Table.ForeachMapTransfer((record => { if (record.SceneID != _e.SceneId) { return(true); } var _npcData = new SceneNpcDataModel(); _npcData.Id = record.Id; _npcData.NpcId = record.NpcID; _npcData.SceneLoction = new Vector3(record.PosX, 0, record.PosZ); _npcData.MapLoction = TransformSceneToMap(_npcData.SceneLoction); _npcData.Color = GameUtils.GetTableColor(record.DisplayColor); _npcData.NpcName = record.Name; _npcData.CharType = record.Type; SetSprite(record, _npcData, _camp); _npcData.Width = record.PicWidth; _npcData.Height = record.PIcHight; _npcData.LabLoc = new Vector3(record.OffsetX, record.OffsetY, 0); _npcData.NpcType = record.ShowChar; _npcData.DisplaySort = record.DisplaySort; _npcData.Mark = record.Mark; NpcDataModels.Add(_npcData); return(true); })); NpcDataModels.Sort((a, b) => { if (a.CharType == b.CharType) { return((a.DisplaySort < b.DisplaySort) ? -1 : 1); } return((a.CharType < b.CharType) ? -1 : 1); }); var _obj = ObjManager.Instance.MyPlayer; if (_obj) { PositionChange(_obj.Position); } RefurbishNpcList(); }