public void SetFrom(Player p) { direction = p.direction; px = p.px; py = p.py; speed = p.GetSpeed(); // powerups = p.powerups; // TODO // diseases = p.diseases; // TODO bombs = EnsureArray(bombs, p.bombs.array.Length); for (int i = 0; i < bombs.Length; ++i) { bombs[i].SetFrom(p.bombs.array[i]); } }
private void WritePlayerState(NetBuffer buffer, Player p) { bool alive = p.IsAlive; buffer.Write(alive); if (alive) { buffer.Write(p.px); buffer.Write(p.py); buffer.Write(p.IsMoving()); buffer.Write((byte)p.direction); buffer.Write(p.GetSpeed()); // powerups int powerupsCount = (int)Powerups.Count; for (int i = 0; i < powerupsCount; ++i) { bool hasPower = p.powerups.HasPowerup(i); buffer.Write(hasPower); if (hasPower) { buffer.Write((byte)p.powerups.GetCount(i)); } } // diseases int diseasesCount = DiseaseList.diseaseArray.Length; for (int i = 0; i < diseasesCount; ++i) { bool infected = p.diseases.IsInfected(i); buffer.Write(infected); if (infected) { buffer.WriteTime(NetTime.Now + p.diseases.GetInfectedRemains(i), false); } } } Bomb[] bombs = p.bombs.array; for (int i = 0; i < bombs.Length; ++i) { WriteBombState(buffer, bombs[i]); } }