Пример #1
0
        private bool ProcessPlayerInfo(StreamWriter s, PacketTypes p, PlayerInfo pi)
        {
            switch (p)
            {
            case PacketTypes.REQUEST:
            {
                Player playa = WorldInterface.GetPlayer(pi.id, pi.key);
                if (playa != null)
                {
                    PlayerID = pi.id;
                    var coord = playa.GetPosition();
                    var vel   = playa.GetVelocity();
                    pi = new PlayerInfo(PacketTypes.REQUESTED)
                    {
                        id = playa.Id,
                        x  = coord.x,
                        y  = coord.y,
                        vx = vel.x,
                        vy = vel.y
                    };
                    s(NetHelpers.ConvertStructToBytes(pi));


                    //Send over object positions in the region surrounding our player
                    //DON'T DO THIS YET... Still thinking about it, Client needs to support it
                    foreach (var obj in WorldInterface.GetRegionObjects(coord.x - 10, coord.x + 10, coord.y - 10, coord.y + 10))
                    {
                        if (obj == null)
                        {
                            continue;
                        }
                        var oc = obj.GetPosition();
                        var oi = new ObjectInfo(PacketTypes.REQUESTED)
                        {
                            id         = obj.Id,
                            objecttype = (int)obj.ObjectType,
                            x          = oc.x,
                            y          = oc.y,
                            vx         = 0,
                            vy         = 0,
                        };
                        s(NetHelpers.ConvertStructToBytes(oi));
                    }
                }
                return(true);
            }
            }
            return(false);
        }
Пример #2
0
 private bool ProcessPlayerControl(StreamWriter s, PacketTypes p, PlayerControl pi)
 {
     switch (p)
     {
     case PacketTypes.SET:
     {
         Player playa = WorldInterface.GetPlayer(pi.id, pi.key);
         if (playa != null)
         {
             playa.SetDirection(pi.direction, pi.paces);
         }
         return(true);
     }
     }
     return(false);
 }