/// <summary> /// 移除数据 /// </summary> /// <param name="buildData"></param> public void RemoveListBuildData(BuildBaseBean buildData) { if (listBuildData.Contains(buildData)) { listBuildData.Remove(buildData); } }
/// <summary> /// 检测该点是否有建筑 /// </summary> /// <param name="position"></param> /// <returns></returns> public bool CheckHasBuild(Vector3 position) { for (int i = 0; i < listBuildData.Count; i++) { BuildBaseBean buildData = listBuildData[i]; if (position == buildData.buildPosition.GetVector3()) { return(true); } } return(false); }
public void CreateAllBuild(string modelName) { BuildHandler.Instance.manager.LoadBuildBaseRes(BuildTypeEnum.Building, modelName); List <BuildRuleEnum> ruleList = EnumUtil.GetEnumValue <BuildRuleEnum>(); for (int i = 0; i < ruleList.Count; i++) { BuildRuleEnum itemRule = ruleList[i]; GameObject objModel = BuildHandler.Instance.manager.GetBuildBaseModel(null, itemRule, modelName); GameObject objBuild = Instantiate(gameObject, modelBuilding.gameObject); BuildBase buildBase = objBuild.GetComponent <BuildBase>(); BuildBaseBean buildBaseData = new BuildBaseBean(); Vector3 centerPostion = new Vector3(i * 5, 0, 0); buildBaseData.SetBuildPosition(centerPostion); buildBaseData.SetBuildRule(itemRule); buildBaseData.SetBuildType(BuildTypeEnum.Building); buildBase.SetBuilBaseData(buildBaseData); objBuild.transform.position = centerPostion; BuildHandler.Instance.manager.AddBuildBase(buildBase); buildBase.AutoCheckBuildRule(); BuildRuleEnumTool.GetBuildRuleData(itemRule, out int number, out bool up, out bool down, out bool left, out bool right, out bool before, out bool after); if (up) { CreateBuildItem(centerPostion + new Vector3(0, 1, 0)); } if (down) { CreateBuildItem(centerPostion + new Vector3(0, -1, 0)); } if (left) { CreateBuildItem(centerPostion + new Vector3(-1, 0, 0)); } if (right) { CreateBuildItem(centerPostion + new Vector3(1, 0, 0)); } if (before) { CreateBuildItem(centerPostion + new Vector3(0, 0, -1)); } if (after) { CreateBuildItem(centerPostion + new Vector3(0, 0, 1)); } buildBase.AutoCheckBuildRule(); } }
/// <summary> /// 创建一个建筑 /// </summary> /// <param name="buildPosition"></param> public T CreateBuildBase<T>(BuildTypeEnum buildType, Vector3 buildPosition) where T : BuildBase { BuildBase modelBuild = null; //设置建造数据 BuildBaseBean buildBaseData = new BuildBaseBean(); buildBaseData.SetBuildType(buildType); buildBaseData.SetBuildRule(BuildRuleEnum.Zero); buildBaseData.SetBuildPosition(buildPosition); //生成不同的模型 switch (buildType) { case BuildTypeEnum.Building: modelBuild = modelForBuilding; break; case BuildTypeEnum.Foundation: modelBuild = modelForFoundation; break; } if (modelBuild == null) return null; GameObject objBuild = Instantiate(gameObject, modelBuild.gameObject, buildPosition); T cptBuild = objBuild.GetComponent<T>(); cptBuild.SetBuilBaseData(buildBaseData); //增加数据 GameDataHandler.Instance.manager.AddSceneListBuildData(buildBaseData); manager.AddBuildBase(cptBuild); //建筑动画 AnimForBuild(buildType, cptBuild); //获取周围方块 List<BuildBase> listAroundBuild = manager.GetAroundBuildBase(cptBuild); //改变周围方块状态 for (int i = 0; i < listAroundBuild.Count; i++) { BuildBase itemBase = listAroundBuild[i]; itemBase.AutoCheckBuildRule(); } return cptBuild; }
protected void CreateBuildItem(Vector3 position) { GameObject objBuild = Instantiate(gameObject, modelBuilding.gameObject); BuildBase buildBase = objBuild.GetComponent <BuildBase>(); BuildBaseBean buildBaseData = new BuildBaseBean(); buildBaseData.SetBuildPosition(position); buildBaseData.SetBuildRule(BuildRuleEnum.Zero); buildBaseData.SetBuildType(BuildTypeEnum.Building); buildBase.SetBuilBaseData(buildBaseData); objBuild.transform.position = position; buildBase.AutoCheckBuildRule(); Renderer[] rendererArrary = buildBase.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in rendererArrary) { renderer.material.color = Color.black; } BuildHandler.Instance.manager.AddBuildBase(buildBase); }
/// <summary> /// 增加建造数据 /// </summary> /// <param name="buildData"></param> public void AddListBuildData(BuildBaseBean buildData) { listBuildData.Add(buildData); }
/// <summary> /// 移除场景建造数据 /// </summary> /// <param name="buildData"></param> public void RemoveSceneListBuildData(BuildBaseBean buildData) { SceneBuildBean sceneBuild = GetSceneData(); sceneBuild.RemoveListBuildData(buildData); }
/// <summary> /// 增加场景建造数据 /// </summary> /// <param name="buildData"></param> public void AddSceneListBuildData(BuildBaseBean buildData) { SceneBuildBean sceneBuild = GetSceneData(); sceneBuild.AddListBuildData(buildData); }
/// <summary> /// 设置数据 /// </summary> /// <param name="buildBaseData"></param> public virtual void SetBuilBaseData(BuildBaseBean buildBaseData) { this.buildBaseData = buildBaseData; AutoCheckBuildRule(); }
/// <summary> /// 设置数据 /// </summary> /// <param name="buildBaseData"></param> public override void SetBuilBaseData(BuildBaseBean buildBaseData) { this.buildBaseData = buildBaseData; }