Ejemplo n.º 1
0
    public override void Deserialize(DataStream reader)
    {
        enemyPointList.Clear();
        int dataid = reader.ReadSInt32();

        while (dataid != -1)
        {
            switch (dataid)
            {
            case 1: flushTime = (float)reader.ReadSInt32() / 1000f; break;

            case 2:
                int count = reader.ReadSInt32();
                for (int i = 0; i < count; i++)
                {
                    MapEnemyPointEnemy point = new MapEnemyPointEnemy();
                    point.Deserialize(reader);
                    enemyPointList.Add(point);
                }
                break;

            case 3: isElite = reader.ReadBoolean(); break;
            }
            dataid = reader.ReadSInt32();
        }
    }
Ejemplo n.º 2
0
    void AddRangeEnemy()
    {
        if (enemyPointList.Count <= 0)
        {
            return;
        }

        List <int> objidList = new List <int>();

        //将所有敌人随机插入到队列中
        for (int i = 0; i < enemyPointList.Count; i++)
        {
            MapEnemyPointEnemy point = enemyPointList[i];
            int enemycount           = Random.Range(point.rangeMinCount, point.rangeMaxCount);
            for (int j = 0; j < enemycount; j++)
            {
                if (objidList.Count <= 0)
                {
                    objidList.Add(point.rangeObjIdList[Random.Range(0, point.rangeObjIdList.Count)]);
                }
                else
                {
                    objidList.Insert(Random.Range(0, objidList.Count),
                                     point.rangeObjIdList[Random.Range(0, point.rangeObjIdList.Count)]);
                }
            }
        }

        //向周围扩散加入敌人
        int     count   = objidList.Count;
        int     size    = 1;
        Vector2 basepos = GameCommon.GetMapPos(transform.position);

        while (count >= 0)
        {
            for (int i = 0; i < size; i++)
            {
                count--;
                if (count < 0)
                {
                    break;
                }
                Vector2 _pos = basepos + new Vector2(i, size - 1);
                AddObj(objidList[count], GameCommon.GetWorldPos(_pos));

                count--;
                if (count < 0)
                {
                    break;
                }
                _pos = basepos + new Vector2(size - 1, i);
                AddObj(objidList[count], GameCommon.GetWorldPos(_pos));
            }
            size++;
        }
    }
Ejemplo n.º 3
0
    public override void Serialize(DataStream writer)
    {
        writer.WriteSInt32(1);
        writer.WriteSInt32((int)(flushTime * 1000f));

        writer.WriteSInt32(2);
        int count = enemyPointList.Count;

        writer.WriteSInt32(enemyPointList.Count);

        for (int i = 0; i < count; i++)
        {
            MapEnemyPointEnemy point = enemyPointList[i];
            point.Serialize(writer);
        }

        writer.WriteSInt32(3);
        writer.WriteBoolean(isElite);

        writer.WriteSInt32(-1);
    }