public void CreateMapEvent <T, S>(MapEvent pData, LevelRegion pRegion, LevelContainerBase <T> pHolder, List <S> pElemDataList) where T : LevelElement where S : MapElement
        {
            T tElement = null;

            if (pData.Active)
            {
                for (int i = 0; i < pElemDataList.Count; i++)
                {
                    if (pElemDataList[i].Id == pData.Id)
                    {
                        tElement = pHolder.AddElement();
                        tElement.Import(pElemDataList[i], false);
                        if (tElement is LevelWaveSet)
                        {
                            LevelWaveSet waveset = tElement as LevelWaveSet;
                            waveset.Region = pRegion;
                        }
                        tElement.Init();
                    }
                }
            }
            else
            {
                tElement = pHolder.FindElement(pData.Id);
                if (tElement != null)
                {
                    DestroyImmediate(tElement.gameObject);
                }
            }
        }
Example #2
0
        public override void OnInspectorGUI()
        {
            LevelWaveSet pElem = target as LevelWaveSet;
            int          pId   = EditorGUILayout.IntField("Id", pElem.Id);

            if (pElem.Id != pId)
            {
                pElem.Id = pId;
                pElem.SetName();
            }

            if (GUILayout.Button("添加波次"))
            {
                LevelWave pWave = pElem.AddElement();
            }
        }
Example #3
0
        private void Import()
        {
            LevelComponent levelCom = target as LevelComponent;

            levelCom.transform.DestroyChildren();
            levelCom.InitHolder();
            string    fsPath = AssetUtility.GetLevelConfigAsset(levelCom.LevelID.ToString());
            MapConfig data   = new MapConfig();

            data.EditorLoad(fsPath);

            levelCom.MapName = data.MapName;

            for (int i = 0; i < data.Regions.Count; i++)
            {
                LevelElement pHolder = levelCom.GetHolder(MapHolderType.Region);
                GameObject   go      = pHolder.gameObject.AddChild();
                LevelRegion  pRegion = go.AddComponent <LevelRegion>();
                pRegion.Import(data.Regions[i], true);
            }

            for (int i = 0; i < data.Barriers.Count; i++)
            {
                LevelElement pHolder  = levelCom.GetHolder(MapHolderType.Barrier);
                GameObject   go       = pHolder.gameObject.AddChild();
                LevelBarrier pBarrier = go.AddComponent <LevelBarrier>();
                pBarrier.Import(data.Barriers[i], true);
            }


            for (int i = 0; i < data.WaveSets.Count; i++)
            {
                LevelElement pHolder  = levelCom.GetHolder(MapHolderType.WaveSet);
                GameObject   go       = pHolder.gameObject.AddChild();
                LevelWaveSet pWaveSet = go.AddComponent <LevelWaveSet>();
                pWaveSet.Import(data.WaveSets[i], true);
            }

            for (int i = 0; i < data.MonsterGroups.Count; i++)
            {
                LevelElement      pHolder = levelCom.GetHolder(MapHolderType.MonsterGroup);
                GameObject        go      = pHolder.gameObject.AddChild();
                LevelMonsterGroup pGroup  = go.AddComponent <LevelMonsterGroup>();
                pGroup.Import(data.MonsterGroups[i], true);
            }

            for (int i = 0; i < data.MineGroups.Count; i++)
            {
                LevelElement   pHolder = levelCom.GetHolder(MapHolderType.MineGroup);
                GameObject     go      = pHolder.gameObject.AddChild();
                LevelMineGroup pGroup  = go.AddComponent <LevelMineGroup>();
                pGroup.Import(data.MineGroups[i], true);
            }

            for (int i = 0; i < data.Portals.Count; i++)
            {
                LevelElement pHolder = levelCom.GetHolder(MapHolderType.Portal);
                GameObject   go      = pHolder.gameObject.AddChild();
                LevelPortal  pPortal = go.AddComponent <LevelPortal>();
                pPortal.Import(data.Portals[i], true);
            }

            for (int i = 0; i < data.Npcs.Count; i++)
            {
                LevelElement pHolder = levelCom.GetHolder(MapHolderType.Npc);
                GameObject   go      = pHolder.gameObject.AddChild();
                LevelNpc     pNpc    = go.AddComponent <LevelNpc>();
                pNpc.Import(data.Npcs[i], true);
            }

            {
                LevelElement pHolder = levelCom.GetHolder(MapHolderType.Born);
                if (data.Ally != null)
                {
                    GameObject gA     = pHolder.gameObject.AddChild();
                    LevelBorn  pBornA = gA.AddComponent <LevelBorn>();
                    pBornA.Import(data.Ally, true);
                }
                if (data.Enemy != null)
                {
                    GameObject gB     = pHolder.gameObject.AddChild();
                    LevelBorn  pBornB = gB.AddComponent <LevelBorn>();
                    pBornB.Import(data.Enemy, true);
                }
                if (data.Neutral != null)
                {
                    GameObject gC     = pHolder.gameObject.AddChild();
                    LevelBorn  pBornC = gC.AddComponent <LevelBorn>();
                    pBornC.Import(data.Neutral, true);
                }
            }

            Debug.Log("导入关卡数据:" + fsPath);
        }