private void OnKillMonster(object sender, GameEventArgs e)
        {
            KillMonsterEventArgs ne = e as KillMonsterEventArgs;

            if (ne == null)
            {
                return;
            }

            if (!this.m_Monsters.Contains(ne.MonsterEntityId))
            {
                return;
            }
            m_Monsters.Remove(ne.MonsterEntityId);
            //if(m_Monsters.Count<MaxCount)
            //{
            //    if (RebornCD > 0)
            //        Invoke("CreateMonster", RebornCD);
            //}

            if (m_Monsters.Count == 0)
            {
                HolderBarrier pHolder = GameEntry.Level.GetHolder(MapHolderType.Barrier) as HolderBarrier;
                this.Barrier = pHolder.FindElement(data.UnlockBarrierId);
                Barrier?.Hide();

                if (TriggerResult)
                {
                    GameEntry.Timer.Register(5, () =>
                    {
                        GameEntry.Event.Fire(this, new PassLevelEventArgs());
                    });
                }
            }
        }
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            HolderBarrier holder = target as HolderBarrier;

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("动态障碍物");
            if (GUILayout.Button("添加光墙障碍"))
            {
                holder.AddElement();
            }
        }
        public void StartMapEvent(MapEvent pData, LevelRegion pRegion)
        {
            switch (pData.Type)
            {
            case MapTriggerType.Barrier:
            {
                HolderBarrier pHolder = GetHolder(MapHolderType.Barrier) as HolderBarrier;
                CreateMapEvent <LevelBarrier, MapBarrier>(pData, pRegion, pHolder, Config.Barriers);
            }
            break;

            case MapTriggerType.Region:
            {
                HolderRegion pHolder = GetHolder(MapHolderType.Region) as HolderRegion;
                CreateMapEvent <LevelRegion, MapRegion>(pData, pRegion, pHolder, Config.Regions);
            }
            break;

            case MapTriggerType.Portal:
            {
                HolderPortal pHolder = GetHolder(MapHolderType.Portal) as HolderPortal;
                CreateMapEvent <LevelPortal, MapPortal>(pData, pRegion, pHolder, Config.Portals);
            }
            break;

            case MapTriggerType.Waveset:
            {
                HolderWaveSet pHolder = GetHolder(MapHolderType.WaveSet) as HolderWaveSet;
                CreateMapEvent <LevelWaveSet, MapWaveSet>(pData, pRegion, pHolder, Config.WaveSets);
            }
            break;

            case MapTriggerType.Result:
            {
                OnLevelEnd();
            }
            break;

            case MapTriggerType.Monstegroup:
            {
                HolderMonsterGroup pHolder = GetHolder(MapHolderType.MonsterGroup) as HolderMonsterGroup;
                CreateMapEvent <LevelMonsterGroup, MapMonsterGroup>(pData, pRegion, pHolder, Config.MonsterGroups);
            }
            break;

            case MapTriggerType.Minegroup:
            {
                HolderMineGroup pHolder = GetHolder(MapHolderType.MineGroup) as HolderMineGroup;
                CreateMapEvent <LevelMineGroup, MapMineGroup>(pData, pRegion, pHolder, Config.MineGroups);
            }
            break;
            }
        }
Beispiel #4
0
        private MapConfig Export()
        {
            LevelComponent pHandler = target as LevelComponent;
            MapConfig      data     = new MapConfig();

            data.Id      = pHandler.LevelID;
            data.MapName = pHandler.MapName;
            data.MapPath = pHandler.MapPath;

            List <LevelElement> pList = new List <LevelElement>();

            for (int i = 0; i < pHandler.transform.childCount; i++)
            {
                Transform    child = pHandler.transform.GetChild(i);
                LevelElement pElem = child.GetComponent <LevelElement>();
                if (pElem)
                {
                    pList.Add(pElem);
                }
            }

            for (int k = 0; k < pList.Count; k++)
            {
                string       classType = pList[k].GetType().Name;
                LevelElement current   = pList[k];
                switch (classType)
                {
                case "HolderBorn":
                {
                    HolderBorn pHolder = current as HolderBorn;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            switch (pHolder.Elements[i].Camp)
                            {
                            case BattleCampType.Ally:
                                data.Ally = pElem.Export() as MapBorn;
                                break;

                            case BattleCampType.Enemy:
                                data.Enemy = pElem.Export() as MapBorn;
                                break;

                            case BattleCampType.Neutral:
                                data.Neutral = pElem.Export() as MapBorn;
                                break;
                            }
                        }
                    }
                }
                break;

                case "HolderBarrier":
                {
                    HolderBarrier pHolder = current as HolderBarrier;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.Barriers.Add(pElem.Export() as MapBarrier);
                        }
                    }
                }
                break;

                case "HolderPortal":
                {
                    HolderPortal pHolder = current as HolderPortal;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.Portals.Add(pElem.Export() as MapPortal);
                        }
                    }
                }
                break;

                case "HolderRegion":
                {
                    HolderRegion pHolder = current as HolderRegion;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.Regions.Add(pElem.Export() as MapRegion);
                        }
                    }
                }
                break;

                case "HolderWaveSet":
                {
                    HolderWaveSet pHolder = current as HolderWaveSet;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.WaveSets.Add(pElem.Export() as MapWaveSet);
                        }
                    }
                }
                break;

                case "HolderMonsterGroup":
                {
                    HolderMonsterGroup pHolder = current as HolderMonsterGroup;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.MonsterGroups.Add(pElem.Export() as MapMonsterGroup);
                        }
                    }
                }
                break;

                case "HolderMineGroup":
                {
                    HolderMineGroup pHolder = current as HolderMineGroup;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.MineGroups.Add(pElem.Export() as MapMineGroup);
                        }
                    }
                }
                break;

                case "HolderNpc":
                {
                    HolderNpc pHolder = current as HolderNpc;
                    if (pHolder != null)
                    {
                        for (int i = 0; i < pHolder.Elements.Count; i++)
                        {
                            LevelElement pElem = pHolder.Elements[i];
                            data.Npcs.Add(pElem.Export() as MapNpc);
                        }
                    }
                }
                break;
                }
            }
            return(data);
        }