public void Relese() { mainCam = null; camTouchCtrl = null; camTouchInputCtrl = null; camFocusCtrl = null; buildingDic.Clear(); }
public void InitCampsiteObjects(GameObject m_FightNode) { #region Cam mainCam = Camera.main; Global.gApp.gGameAdapter.AdaptCamera(ref mainCam); camTouchCtrl = mainCam.GetComponent <MobileTouchCamera>(); camTouchInputCtrl = mainCam.GetComponent <TouchInputController>(); camFocusCtrl = mainCam.GetComponent <FocusCameraOnItem>(); ApplyCamRecord(); #endregion #region Npc Transform npcRoot = m_FightNode.transform.Find("NpcPoints"); CampsiteNpcPoint[] campsiteNpcs = null; if (npcRoot != null && npcRoot.gameObject.activeSelf) { campsiteNpcs = m_FightNode.GetComponentsInChildren <CampsiteNpcPoint>(true); for (int i = 0; i < campsiteNpcs.Length; i++) { var point = campsiteNpcs[i]; int linkDataIndex = point.PointId - 1; //if (CampsiteMgr.singleton.HasPoint(linkDataIndex)) //{ point.SetValid(linkDataIndex); //} //else //{ // point.SetInvalid(); //} } } #endregion int baseSeed = CampsiteMgr.singleton.Id * 10; #region Building buildingDic.Clear(); int allocLockObjIndex = 0; int[] lockObjPathArr = new int[] { 1, 2, 3, 4, 5, 6 }; Vector2Int[] lockObjParamArr = new Vector2Int[lockObjPathArr.Length * 4]; for (int i = 0; i < 4; i++) { for (int j = 0; j < lockObjPathArr.Length; j++) { int index = i * lockObjPathArr.Length + j; lockObjParamArr[index] = new Vector2Int(lockObjPathArr[j], i); } } var campsiteBuildings = m_FightNode.GetComponentsInChildren <CampsiteBuildingPoint>(true); for (int i = 0; i < campsiteBuildings.Length; i++) { var building = campsiteBuildings[i]; int linkDataIndex = building.PointId - 1; MyRandom random = new MyRandom(new MyRandom.State(baseSeed + linkDataIndex, 0)); #region Alloc LockObj to Building { int j = random.Range(allocLockObjIndex, lockObjParamArr.Length); var lockObjParam = lockObjParamArr[j]; lockObjParamArr[j] = lockObjParamArr[allocLockObjIndex]; lockObjParamArr[allocLockObjIndex] = lockObjParam; building.SetLockObjParam(string.Format("Prefabs/Campsite/Building/LockObj/Lock{0}", lockObjParam.x), new Vector3(0, 0, lockObjParam.y * 90f)); allocLockObjIndex++; if (allocLockObjIndex >= lockObjParamArr.Length) { allocLockObjIndex = 0; } } #endregion if (CampsiteMgr.singleton.HasPoint(linkDataIndex)) { building.SetValid(linkDataIndex); buildingDic[linkDataIndex] = building; } else { building.SetInvalid(); } } #endregion int allocNpcCount = 0; foreach (var building in buildingDic.Values) { MyRandom random = new MyRandom(new MyRandom.State(baseSeed + building.PointDataIndex, 0)); #region Alloc Npc to Building if (campsiteNpcs != null) { int lastNpcIndex = campsiteNpcs.Length - 1 - allocNpcCount; if (lastNpcIndex >= 0) { int linkNpcIndex = random.Range(0, buildingDic.Count - building.PointDataIndex); if (linkNpcIndex <= lastNpcIndex) { var npc = campsiteNpcs[linkNpcIndex]; building.SetLinkNpc(npc); campsiteNpcs[linkNpcIndex] = campsiteNpcs[lastNpcIndex]; campsiteNpcs[lastNpcIndex] = npc; allocNpcCount++; } } } #endregion building.Init(); } }