Ejemplo n.º 1
0
 public void Relese()
 {
     mainCam           = null;
     camTouchCtrl      = null;
     camTouchInputCtrl = null;
     camFocusCtrl      = null;
     buildingDic.Clear();
 }
Ejemplo n.º 2
0
        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();
            }
        }