public void addObject(GameObject o) { if (o == null) { return; } lock (objects) objects.Add(o.getNetId(), o); var u = o as Unit; if (u == null) { return; } collisionHandler.addObject(o); var team = o.getTeam(); var teamVision = visionUnits[Convert.fromTeamId(team)]; if (teamVision.ContainsKey(o.getNetId())) { teamVision[o.getNetId()] = u; } else { teamVision.Add(o.getNetId(), u); } var m = u as Minion; if (m != null) { PacketNotifier.notifyMinionSpawned(m, m.getTeam()); } var mo = u as Monster; if (mo != null) { PacketNotifier.notifySpawn(mo); } var c = o as Champion; if (c != null) { champions[c.getNetId()] = c; PacketNotifier.notifyChampionSpawned(c, c.getTeam()); } }
public void removeObject(GameObject o) { var c = o as Champion; if (c != null) { champions.Remove(c.getNetId()); } lock (objects) objects.Remove(o.getNetId()); visionUnits[Convert.fromTeamId(o.getTeam())].Remove(o.getNetId()); }
public void RemoveObject(GameObject o) { lock (_objectsLock) _objects.Remove(o.getNetId()); //collisionHandler.stackChanged(o); _collisionHandler.removeObject(o); if (o is Unit) { RemoveVisionUnit(o as Unit); } if (o is Champion) { RemoveChampion(o as Champion); } }
public void AddObject(GameObject o) { if (o == null) { return; } // If it crashes here the problem is most likely somewhere else lock (_objectsLock) { // (_objects.ContainsKey(o.getNetId())) // _objects[o.getNetId()] = o; //else _objects.Add(o.getNetId(), o); } _collisionHandler.addObject(o); if (!(o is Unit)) { return; } AddVisionUnit(o as Unit); if (o is Minion) { _game.PacketNotifier.notifyMinionSpawned(o as Minion, o.getTeam()); } else if (o is Monster) { _game.PacketNotifier.notifySpawn(o as Monster); } else if (o is Champion) { AddChampion(o as Champion); } }
//see PKT_S2C_CharStats mask //TODO movement public MovementAns(GameObject actor, Map map) : base(PacketCmdS2C.PKT_S2C_MoveAns) { var waypoints = actor.getWaypoints(); buffer.Write((short)1); //count buffer.Write((byte)(2 * waypoints.Count)); buffer.Write((int)actor.getNetId()); int startPos = (int)buffer.BaseStream.Position; int coordCount = 2 * waypoints.Count(); var maskSize = (coordCount + 5) / 8; //mask size //buffer.reserve(pos + maskSize + coordCount * sizeof(short)); //reserve max total size for (uint i = 0; i < maskSize; i++) { buffer.Write((byte)0); } var lastCoord = new Vector2(); for (int i = 0; i < waypoints.Count; i++) { var mapSize = map.getSize(); var curVector = new Vector2((waypoints[i].X - mapSize.X) / 2, (waypoints[i].Y - mapSize.Y) / 2); var relative = new Vector2(curVector.X - lastCoord.X, curVector.Y - lastCoord.Y); var isAbsolute = new Tuple<bool, bool>( i == 0 || relative.X < sbyte.MinValue || relative.X > sbyte.MaxValue, i == 0 || relative.Y < sbyte.MinValue || relative.Y > sbyte.MaxValue); Change(SetBitmaskValue(GetBytes(), startPos, (2 * i - 2), !isAbsolute.Item1)); if (isAbsolute.Item1) buffer.Write((short)curVector.X); else buffer.Write((byte)relative.X); Change(SetBitmaskValue(GetBytes(), startPos, (2 * i - 1), !isAbsolute.Item2)); if (isAbsolute.Item2) buffer.Write((short)curVector.Y); else buffer.Write((byte)relative.Y); lastCoord = curVector; } }
public DeleteObjectFromVision(GameObject o) : base(PacketCmdS2C.PKT_S2C_DeleteObject, o.getNetId()) { }
public LeaveVision(GameObject o) : base(PacketCmdS2C.PKT_S2C_LeaveVision, o.getNetId()) { }
public void removeObject(GameObject o) { var c = o as Champion; if (c != null) champions.Remove(c.getNetId()); lock (objects) objects.Remove(o.getNetId()); visionUnits[Convert.fromTeamId(o.getTeam())].Remove(o.getNetId()); }
public void addObject(GameObject o) { if (o == null) return; lock (objects) objects.Add(o.getNetId(), o); var u = o as Unit; if (u == null) return; collisionHandler.addObject(o); var team = o.getTeam(); var teamVision = visionUnits[Convert.fromTeamId(team)]; if (teamVision.ContainsKey(o.getNetId())) teamVision[o.getNetId()] = u; else teamVision.Add(o.getNetId(), u); var m = u as Minion; if (m != null) PacketNotifier.notifyMinionSpawned(m, m.getTeam()); var mo = u as Monster; if (mo != null) PacketNotifier.notifySpawn(mo); var inhi = u as Inhibitor; if (inhi != null) PacketNotifier.notifySpawn(inhi); var c = o as Champion; if (c != null) { champions[c.getNetId()] = c; PacketNotifier.notifyChampionSpawned(c, c.getTeam()); } }