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(); } }
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++; } }
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); }