Пример #1
0
        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());
            }
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        //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;
            }
        }
Пример #6
0
 public DeleteObjectFromVision(GameObject o) : base(PacketCmdS2C.PKT_S2C_DeleteObject, o.getNetId())
 {
 }
Пример #7
0
 public LeaveVision(GameObject o) : base(PacketCmdS2C.PKT_S2C_LeaveVision, o.getNetId())
 {
 }
Пример #8
0
        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());
        }
Пример #9
0
        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());
            }
        }