コード例 #1
0
        private void CreateMonsterGroup(SpwanPointIds spwanID, IList <MonsterData> group)
        {
            if (group == null || group.Count == 0)
            {
                return;
            }

            foreach (MonsterData monster in group)
            {
                CreateMonsterEntity(spwanID, monster);
            }
        }
コード例 #2
0
        private MonsterEntity2D CreateMonsterEntity(SpwanPointIds pointID, MonsterData monsterData)
        {
            SpwanPoint2D point = null;

            if (monsterData.isBoss)
            {
                point = mapWrapper.bossSpawnPoints[UnityEngine.Random.Range(0, mapWrapper.bossSpawnPoints.Count)];
            }
            else
            {
                IList <SpwanPoint2D> points = null;

                mapWrapper.monsterSpawnPoints.TryGetValue(pointID, out points);

                if (points.Count != 0)
                {
                    point = points[UnityEngine.Random.Range(0, points.Count)];
                }
            }

            if (point == null)
            {
                return(null);
            }

            MonsterEntity2D entity = ResourceUtils.GetComponent <MonsterEntity2D>(GlobalDefinitions.RESOURCE_PATH_MONSTER + monsterData.resourceID);

            entity.BindData(monsterData);
            entity.OnDispose = () => { monsters.Remove(entity); };

            LayerManager.GetInstance().AddObject(entity.transform);
            monsters.Add(entity);

            entity.transform.position += point.transform.position;
            entity.direction           = point.direction;

            if (point.direction == Vector2.right)
            {
                entity.Flip();
            }

            return(entity);
        }
コード例 #3
0
        public IList <MonsterData> GetJoinMonsters(SpwanPointIds pointID)
        {
            Func <IList <MonsterData>, int, IList <MonsterData> > TakeMonsters = (IList <MonsterData> monsters, int joinCount) =>
            {
                IList <MonsterData> results = monsters.Take <MonsterData>(joinCount).ToList();

                foreach (MonsterData monster in results)
                {
                    monsters.Remove(monster);
                }

                return(results);
            };

            List <MonsterData> joins = new List <MonsterData>();

            if (pointID == SpwanPointIds.A)
            {
                joins.AddRange(TakeMonsters(monstersA, joinCount));
            }
            else if (pointID == SpwanPointIds.B)
            {
                joins.AddRange(TakeMonsters(monstersB, joinCount));
            }
            else if (pointID == SpwanPointIds.C)
            {
                joins.AddRange(TakeMonsters(monstersC, joinCount));
            }
            else if (pointID == SpwanPointIds.D)
            {
                joins.AddRange(TakeMonsters(monstersD, joinCount));
            }
            else if (pointID == SpwanPointIds.E)
            {
                joins.AddRange(TakeMonsters(monstersE, joinCount));
            }

            return(joins);
        }