public IEnumerator UserCanRenameSceneTest() { yield return(StartCoroutine(Q.driver.Click(sceneseBtn, "Click on scenes."))); SceneTile sceneTile = MainScreen.Instance.GetSceneTile("test scene"); yield return(StartCoroutine(Q.assert.IsTrue(sceneTile != null, "Scene not found!"))); yield return(StartCoroutine(Q.driver.Click(sceneTile.GetOptionButton().gameObject, "Click on option menu."))); yield return(StartCoroutine(Q.assert.IsTrue(sceneOptionMenu.GetComponent <SimpleSideMenu>().CurrentState == SimpleSideMenu.State.Open, "Option menu not opened!"))); yield return(StartCoroutine(Q.driver.Click(sceneRename, "Click on scene rename."))); inputDialog.GetComponent <InputDialog>().SetInputValue("test scene renamed"); yield return(StartCoroutine(Q.driver.Click(inputDialogOKButton, "Click on Got it button"))); // wait for server to respond yield return(new WaitForSeconds(2)); sceneTile = MainScreen.Instance.GetSceneTile("test scene renamed"); yield return(StartCoroutine(Q.assert.IsTrue(sceneTile != null, "Scene not found!"))); bool sceneExist = false; foreach (IO.Swagger.Model.ListScenesResponseData scene in Base.GameManager.Instance.Scenes) { if (scene.Name == "test scene renamed") { sceneExist = true; } } yield return(StartCoroutine(Q.assert.IsTrue(sceneExist, "Test scene does not exist"))); }
public void UpdateScenes(object sender, EventArgs eventArgs) { SceneTiles.Clear(); foreach (Transform t in ScenesDynamicContent.transform) { if (t.gameObject.tag != "Persistent") { Destroy(t.gameObject); } } foreach (IO.Swagger.Model.ListScenesResponseData scene in Base.GameManager.Instance.Scenes) { SceneTile tile = Instantiate(SceneTilePrefab, ScenesDynamicContent.transform).GetComponent <SceneTile>(); bool starred = PlayerPrefsHelper.LoadBool("scene/" + scene.Id + "/starred", false); if (scene.Problems == null) { tile.InitTile(scene.Name, () => Base.GameManager.Instance.OpenScene(scene.Id), () => SceneOptionMenu.Open(tile), starred, scene.Created, scene.Modified, scene.Id); } else { tile.InitInvalidScene(scene.Name, starred, scene.Created, scene.Modified, scene.Id, scene.Problems.FirstOrDefault()); } SceneTiles.Add(tile); } SortCurrentList(); GameManager.Instance.HideLoadingScreen(); }
public void UpdateScenes(object sender, EventArgs eventArgs) { SceneTiles.Clear(); foreach (Transform t in ScenesDynamicContent.transform) { Destroy(t.gameObject); } foreach (IO.Swagger.Model.ListScenesResponseData scene in Base.GameManager.Instance.Scenes) { SceneTile tile = Instantiate(SceneTilePrefab, ScenesDynamicContent.transform).GetComponent <SceneTile>(); bool starred = PlayerPrefsHelper.LoadBool("scene/" + scene.Id + "/starred", false); tile.InitTile(scene.Name, () => Base.GameManager.Instance.OpenScene(scene.Id), () => SceneOptionMenu.Open(tile), starred, scene.Modified, scene.Modified, scene.Id); SceneTiles.Add(tile); } SortCurrentList(); //Button button = Instantiate(TileNewPrefab, ScenesDynamicContent.transform).GetComponent<Button>(); // TODO new scene //button.onClick.AddListener(ShowNewSceneDialog); }
public async Task <IActionResult> Save(SceneTile tile) { if (ModelState.IsValid) { return(await SaveBaseTile(ConfigStore, tile)); } ViewBag.Entities = (await EntityClient.GetEntities("scene")).OrderBy(e => e).Select(e => new SelectListItem(e, e)); return(View("Add", tile)); }
public IEnumerator UserCanRemoveSceneTest() { yield return(StartCoroutine(Q.driver.Click(sceneseBtn, "Click on scenes."))); SceneTile sceneTile = MainScreen.Instance.GetSceneTile("test scene renamed"); yield return(StartCoroutine(Q.assert.IsTrue(sceneTile != null, "Scene not found!"))); yield return(StartCoroutine(Q.driver.Click(sceneTile.GetOptionButton().gameObject, "Click on option menu."))); yield return(StartCoroutine(Q.assert.IsTrue(sceneOptionMenu.GetComponent <SimpleSideMenu>().CurrentState == SimpleSideMenu.State.Open, "Option menu not opened!"))); yield return(StartCoroutine(Q.driver.Click(sceneRemove, "Click on scene remove."))); yield return(StartCoroutine(Q.driver.Click(confirmationDialogOKButton, "Click on ok button"))); // wait for server to respond yield return(new WaitForSeconds(2)); try { sceneTile = MainScreen.Instance.GetSceneTile("test scene renamed"); } catch (ItemNotFoundException) { sceneTile = null; } yield return(StartCoroutine(Q.assert.IsTrue(sceneTile == null, "Scene should be removed but it is not!"))); bool sceneExist = false; foreach (IO.Swagger.Model.ListScenesResponseData scene in Base.GameManager.Instance.Scenes) { if (scene.Name == "test scene renamed") { sceneExist = true; } } yield return(StartCoroutine(Q.assert.IsTrue(!sceneExist, "Test scene should not exist"))); }
public void Open(SceneTile sceneTile) { this.sceneTile = sceneTile; Open((Tile)sceneTile); }
public static List <SceneObject> RefreshSceneObjects(int id, int mapWidth, int mapHeight, SceneFreshReason reason) { List <ScenePosData> cachedMapData = new List <ScenePosData>(); var cachedSpecialData = new Dictionary <int, DbSceneSpecialPosData>(); var filePath = ConfigData.GetSceneConfig(id).TilePath; List <DbSceneSpecialPosData> specialDataList = new List <DbSceneSpecialPosData>(); if (reason != SceneFreshReason.Load || UserProfile.Profile.InfoWorld.PosInfos == null || UserProfile.Profile.InfoWorld.PosInfos.Count <= 0) {//重新生成 UserProfile.InfoBasic.DungeonRandomSeed = MathTool.GetRandom(int.MaxValue); Random r = new Random(UserProfile.InfoBasic.DungeonRandomSeed); SceneQuestBook.LoadSceneFile(mapWidth, mapHeight, filePath, r, cachedMapData, specialDataList); FilterSpecialData(specialDataList, cachedSpecialData); var questCellCount = cachedMapData.Count - cachedSpecialData.Count; GenerateSceneRandomInfo(id, questCellCount, cachedMapData, cachedSpecialData); } else {//从存档加载 Random r = new Random(UserProfile.InfoBasic.DungeonRandomSeed); SceneQuestBook.LoadSceneFile(mapWidth, mapHeight, filePath, r, cachedMapData, specialDataList); foreach (var posData in UserProfile.Profile.InfoWorld.PosInfos) { cachedSpecialData[posData.Id] = posData; } } List <SceneObject> sceneObjects = new List <SceneObject>(); foreach (var scenePosData in cachedMapData) { DbSceneSpecialPosData cachedData; cachedSpecialData.TryGetValue(scenePosData.Id, out cachedData); SceneObject so; if (cachedData != null) { switch (cachedData.Type) { case "Quest": so = new SceneQuest(scenePosData.Id, scenePosData.X, scenePosData.Y, scenePosData.Width, scenePosData.Height, cachedData.Info); so.Disabled = cachedData.Disabled; break; case "Warp": so = new SceneWarp(scenePosData.Id, scenePosData.X, scenePosData.Y, scenePosData.Width, scenePosData.Height, cachedData.Info); so.Disabled = cachedData.Disabled; if (ConfigData.GetSceneConfig(id).Type == SceneTypes.Common && reason == SceneFreshReason.Warp) { cachedData.Disabled = true; so.Disabled = true;//如果是切场景,切到战斗场景,所有传送门自动关闭 } break; default: so = new SceneTile(scenePosData.Id, scenePosData.X, scenePosData.Y, scenePosData.Width, scenePosData.Height); break; } so.Flag = cachedData.Flag; so.MapSetting = cachedData.MapSetting; } else { so = new SceneTile(scenePosData.Id, scenePosData.X, scenePosData.Y, scenePosData.Width, scenePosData.Height); break; so.Disabled = true; //throw new Exception("RefreshSceneObjects error"); } sceneObjects.Add(so); } return(sceneObjects); }
/// <summary> /// 创建地形分块 /// </summary> public void TerrainTileCreate(Vector2 rOffset) { if (mTerrainData == null) { return; } var rSplatMaps = mTerrainData.splatPrototypes; Scene rScene = EditorSceneManager.GetActiveScene(); LargeScene rLargeScene = ScriptableObject.CreateInstance <LargeScene>(); rLargeScene.ID = rScene.name; rLargeScene.Size = mTerrainData.size; rLargeScene.TileRows = mTileNumHeight; rLargeScene.TileCols = mTileNumWidth; rLargeScene.Offset = rOffset; // 保存大场景数据 string rLargeSceneConfigPath = string.Format(MultiSceneDir + "MultiScene/{0}.asset", rScene.name); AssetDatabase.CreateAsset(rLargeScene, rLargeSceneConfigPath); AssetDatabase.Refresh(); int k = 0; List <Terrain> rTerrains = new List <Terrain>(); for (int i = 0; i < mTileNumHeight; i++) { for (int j = 0; j < mTileNumWidth; j++) { TerrainData rTerrainData = new TerrainData(); rTerrainData.heightmapResolution = mTileSize; rTerrainData.baseMapResolution = mTerrainData.baseMapResolution; rTerrainData.SetDetailResolution(mTerrainData.detailResolution, 8); float[,] rHeights = mTerrainData.GetHeights((mTileSize - 1) * i, (mTileSize - 1) * j, mTileSize, mTileSize); rTerrainData.SetHeights(0, 0, rHeights); rTerrainData.size = new Vector3(mTerrainData.size.x / mTileNumWidth, mTerrainData.size.y, mTerrainData.size.z / mTileNumHeight); rTerrainData.splatPrototypes = CreateSplatPrototypes(rSplatMaps, mTerrainData.baseMapResolution, i, j); float[,,] rAlphaMaps = mTerrainData.GetAlphamaps((mTileSize - 1) * i, (mTileSize - 1) * j, mTileSize - 1, mTileSize - 1); string rTerrainPath = string.Format(MultiSceneDir + "{0}/tile_{1}_{2}.asset", rScene.name, i, j); string rTerrainConfigPath = string.Format(MultiSceneDir + "{0}/tile_{1}_{2}_config.asset", rScene.name, i, j); if (!Directory.Exists(Path.GetDirectoryName(rTerrainPath))) { Directory.CreateDirectory(Path.GetDirectoryName(rTerrainPath)); } SceneTile rTile = ScriptableObject.CreateInstance <SceneTile>(); rTile.ID = k; rTile.Row = i; rTile.Col = j; rTile.ParentID = rLargeScene.ID; rTile.Size = mTileSize; rTile.Offset = new Vector2(rTerrainData.size.x * i, rTerrainData.size.z * j); AssetDatabase.CreateAsset(rTerrainData, rTerrainPath); AssetDatabase.CreateAsset(rTile, rTerrainConfigPath); AssetDatabase.Refresh(); rTerrainData = AssetDatabase.LoadAssetAtPath(rTerrainPath, typeof(TerrainData)) as TerrainData; var rTerrainObj = Terrain.CreateTerrainGameObject(rTerrainData); rTerrainObj.name = string.Format("tile_{0}_{1}", i, j); rTerrainObj.transform.position = new Vector3(rTile.Offset.x + rOffset.x, 0, rTile.Offset.y + rOffset.y); Terrain rTerrain = rTerrainObj.GetComponent <Terrain>(); rTerrain.materialType = Terrain.MaterialType.BuiltInLegacyDiffuse; rTerrain.terrainData.alphamapResolution = mTileSize - 1; rTerrain.terrainData.SetAlphamaps(0, 0, rAlphaMaps); rTerrains.Add(rTerrain); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); k++; } } }