public void SetBuildingData(BuildingInfoBean itemData) { GameObject objBuilding = GameObject.Find("Building"); GameObject objModel = GameObject.Find("Model"); CptUtil.RemoveChildsByActiveInEditor(objBuilding); List <BuildingBean> listData = itemData.listBuildingData; if (listData == null) { return; } for (int i = 0; i < listData.Count; i++) { BuildingBean buildingData = listData[i]; GameObject objItem = Instantiate(objModel); objItem.SetActive(true); objItem.transform.SetParent(objBuilding.transform); BuildingEditor buildingEditor = objItem.GetComponent <BuildingEditor>(); buildingEditor.direction = (DirectionEnum)buildingData.direction; buildingEditor.blockType = (BlockTypeEnum)buildingData.blockId; buildingEditor.randomRate = buildingData.randomRate; buildingEditor.transform.position = buildingData.GetPosition(); buildingEditor.OnValidate(); } }
/// <summary> /// 初始化建筑信息 /// </summary> /// <param name="listData"></param> public void InitBuildingInfo(List <BuildingInfoBean> listData) { for (int i = 0; i < listData.Count; i++) { BuildingInfoBean itemInfo = listData[i]; arrayBuildingInfo[itemInfo.id] = itemInfo; } }
public void InitBuildingInfo(List <BuildingInfoBean> listData) { dicBuildingInfo.Clear(); for (int i = 0; i < listData.Count; i++) { BuildingInfoBean itemInfo = listData[i]; dicBuildingInfo.Add(itemInfo.id, itemInfo); } }
/// <summary> /// 获取游戏数据 /// </summary> /// <returns></returns> public BuildingInfoBean GetBuildingInfoData() { BuildingInfoBean data = serviceBuildingInfo.QueryData(); if (data == null) { data = new BuildingInfoBean(); } return(data); }
/// <summary> /// 更新数据 /// </summary> /// <param name="data"></param> /// <returns></returns> public bool UpdateData(BuildingInfoBean data) { bool deleteState = BaseDeleteDataById(data.id); if (deleteState) { bool insertSuccess = BaseInsertData(tableNameForMain, data); return(insertSuccess); } return(false); }
public GameObject GetSceneBuildingModel(long buildingId) { BuildingInfoBean buildingInfo = GetBuildingInfo(buildingId); if (buildingInfo != null) { GameObject gameObject = GetModel(dicSceneBuilding, "building/building", buildingInfo.model_name, "Assets/Prefabs/Building/" + buildingInfo.model_name + ".prefab"); return(gameObject); } return(null); }
/// <summary> /// 获取数据 /// </summary> /// <param name="action"></param> /// <returns></returns> public BuildingInfoBean GetBuildingInfoData(Action <BuildingInfoBean> action) { BuildingInfoBean data = GetModel().GetBuildingInfoData(); if (data == null) { GetView().GetBuildingInfoFail("没有数据", null); return(null); } GetView().GetBuildingInfoSuccess <BuildingInfoBean>(data, action); return(data); }
/// <summary> /// 展示 /// </summary> /// <param name="itemData"></param> protected void UIForBuildingItem(BuildingInfoBean itemData, bool isCreate) { GUILayout.BeginHorizontal(); if (isCreate) { if (EditorUI.GUIButton("创建建筑", 150)) { GetBuildingData(itemData); serviceForBuildingInfo.UpdateData(itemData); } } else { if (EditorUI.GUIButton("加载建筑", 150)) { SetBuildingData(itemData); } if (EditorUI.GUIButton("更新建筑", 150)) { GetBuildingData(itemData); serviceForBuildingInfo.UpdateData(itemData); } } EditorUI.GUIText("id", 50); itemData.id = EditorUI.GUIEditorText(itemData.id, 100); EditorUI.GUIText("名称", 50); itemData.name_cn = EditorUI.GUIEditorText(itemData.name_cn, 100); itemData.name_en = EditorUI.GUIEditorText(itemData.name_en, 100); if (isCreate) { } else { if (EditorUI.GUIButton("删除建筑", 150)) { serviceForBuildingInfo.DeleteData(itemData.id); } } GUILayout.EndHorizontal(); }
public void InitSceneData(long sceneId, Action callBack) { manager.GetSceneInfo(sceneId, (sceneInfo) => { SceneDetailsBean sceneDetails = sceneInfo.GetSceneDetilas(); for (int i = 0; i < sceneDetails.listBuildingData.Count; i++) { SceneDetailsItemBean sceneDetailsItem = sceneDetails.listBuildingData[i]; GameObject objModel = manager.GetSceneBuildingModel(sceneDetailsItem.buildingId); GameObject objItem = Instantiate(gameObject, objModel); objItem.transform.position = sceneDetailsItem.position.GetVector3(); objItem.transform.localScale = sceneDetailsItem.size.GetVector3(); objItem.transform.eulerAngles = sceneDetailsItem.angle.GetVector3(); BuildingInfoBean buildingInfo = manager.GetBuildingInfo(sceneDetailsItem.buildingId); BuildingBase baseBuilding; switch (buildingInfo.GetBuildingType()) { case BuildingTypeEnum.Ground: baseBuilding = objItem.AddComponent <BuildingGround>(); break; case BuildingTypeEnum.Person: baseBuilding = objItem.AddComponent <BuildingPerson>(); break; case BuildingTypeEnum.Obstacle: baseBuilding = objItem.AddComponent <BuildingObstacle>(); break; default: baseBuilding = objItem.AddComponent <BuildingBase>(); break; } baseBuilding.buildingInfo = buildingInfo; } callBack?.Invoke(); }); }
/// <summary> /// 增加建筑 /// </summary> /// <param name="addRate"></param> /// <param name="randomData"></param> /// <param name="startPosition"></param> /// <param name="buildingType"></param> public static bool AddBuilding(float addRate, uint randomData, Vector3Int startPosition, BuildingTypeEnum buildingType) { float randomRate; if (addRate < 0.00001f) { //概率小于万分之一的用RandomTools int seed = WorldCreateHandler.Instance.manager.GetWorldSeed(); RandomTools randomTools = RandomUtil.GetRandom(seed, startPosition.x, startPosition.y, startPosition.z); //生成概率 randomRate = randomTools.NextFloat(); } else { randomRate = WorldRandTools.GetValue(startPosition, randomData); } if (randomRate < addRate) { BuildingInfoBean buildingInfo = BiomeHandler.Instance.manager.GetBuildingInfo(buildingType); List <BuildingBean> listBuildingData = buildingInfo.listBuildingData; int randomAngle = WorldRandTools.Range(0, 4, startPosition) * 90; for (int i = 0; i < listBuildingData.Count; i++) { BuildingBean buildingData = listBuildingData[i]; Vector3Int targetPosition = startPosition + buildingData.GetPosition(); float createRate = WorldRandTools.GetValue(targetPosition); if (buildingData.randomRate == 0 || createRate < buildingData.randomRate) { VectorUtil.GetRotatedPosition(startPosition, targetPosition, new Vector3(0, randomAngle, 0)); WorldCreateHandler.Instance.manager.AddUpdateBlock(targetPosition, buildingData.blockId, (BlockDirectionEnum)buildingData.direction); } } return(true); } return(false); }
public void GetBuildingData(BuildingInfoBean itemData) { GameObject objBuilding = GameObject.Find("Building"); List <BuildingBean> listBuildingData = new List <BuildingBean>(); for (int i = 0; i < objBuilding.transform.childCount; i++) { Transform tfChild = objBuilding.transform.GetChild(i); BuildingEditor buildingEditor = tfChild.GetComponent <BuildingEditor>(); if (buildingEditor == null) { continue; } BuildingBean buildingData = new BuildingBean(); buildingData.position = Vector3Int.CeilToInt(tfChild.position); buildingData.direction = (int)buildingEditor.direction; buildingData.blockId = (int)buildingEditor.blockType; buildingData.randomRate = buildingEditor.randomRate; listBuildingData.Add(buildingData); } itemData.SetListBuildingData(listBuildingData); }
/// <summary> /// 保存游戏数据 /// </summary> /// <param name="data"></param> public void SetBuildingInfoData(BuildingInfoBean data) { serviceBuildingInfo.UpdateData(data); }