コード例 #1
0
 public static object Read(NetPacketReader message)
 {
     return(new SpawnObjectPacket()
     {
         ID = message.GetInt(),
         Name = message.GetString(),
         Position = message.GetVector3(),
         Orientation = message.GetQuaternion(),
         Loadout = NetShipLoadout.Read(message)
     });
 }
コード例 #2
0
 public static object Read(NetIncomingMessage message)
 {
     return(new SpawnObjectPacket()
     {
         ID = message.ReadInt32(),
         Name = message.ReadString(),
         Position = message.ReadVector3(),
         Orientation = message.ReadQuaternion(),
         Loadout = NetShipLoadout.Read(message)
     });
 }
コード例 #3
0
        public static NetShipLoadout Read(NetIncomingMessage message)
        {
            var s = new NetShipLoadout();

            s.ShipCRC = message.ReadUInt32();
            var equipCount = (int)message.ReadVariableUInt32();

            s.Equipment = new List <NetShipEquip>(equipCount);
            for (int i = 0; i < equipCount; i++)
            {
                s.Equipment.Add(new NetShipEquip(message.ReadUInt32(), message.ReadUInt32(), message.ReadByte()));
            }
            return(s);
        }
コード例 #4
0
ファイル: Packets.cs プロジェクト: Regenhardt/Librelancer
        public static NetShipLoadout Read(NetPacketReader message)
        {
            var s = new NetShipLoadout();

            s.ShipCRC = message.GetUInt();
            s.Health  = message.GetFloat();
            var cargoCount = (int)message.GetVariableUInt32();

            s.Items = new List <NetShipCargo>(cargoCount);
            for (int i = 0; i < cargoCount; i++)
            {
                s.Items.Add(new NetShipCargo(message.GetInt(), message.GetUInt(), message.GetUInt(), message.GetByte(), message.GetInt()));
            }
            return(s);
        }
コード例 #5
0
        public NetShipLoadout EncodeLoadout()
        {
            var sl = new NetShipLoadout();

            sl.ShipCRC   = Ship.CRC;
            sl.Equipment = new List <NetShipEquip>(Equipment.Count);
            foreach (var equip in Equipment)
            {
                sl.Equipment.Add(new NetShipEquip(
                                     equip.Hardpoint == null ? 0 : CrcTool.FLModelCrc(equip.Hardpoint),
                                     equip.Equipment.CRC,
                                     (byte)(equip.Health * 255f)));
            }
            return(sl);
        }
コード例 #6
0
ファイル: NPCManager.cs プロジェクト: Regenhardt/Librelancer
        public GameObject DoSpawn(string nickname, Loadout loadout, GameData.Pilot pilot, Vector3 position, Quaternion orient)
        {
            NetShipLoadout netLoadout = new NetShipLoadout();

            netLoadout.Items = new List <NetShipCargo>();
            var ship = World.Server.GameData.GetShip(loadout.Archetype);

            netLoadout.ShipCRC = ship.CRC;
            var obj = new GameObject(ship, World.Server.Resources, false, true);

            obj.Name     = $"Bob NPC - {loadout.Nickname}";
            obj.Nickname = nickname;
            obj.SetLocalTransform(Matrix4x4.CreateFromQuaternion(orient) * Matrix4x4.CreateTranslation(position));
            obj.Components.Add(new SHealthComponent(obj)
            {
                CurrentHealth = ship.Hitpoints,
                MaxHealth     = ship.Hitpoints
            });
            foreach (var equipped in loadout.Equip)
            {
                var e = World.Server.GameData.GetEquipment(equipped.Nickname);
                if (e == null)
                {
                    continue;
                }
                EquipmentObjectManager.InstantiateEquipment(obj, World.Server.Resources, EquipmentType.Server,
                                                            equipped.Hardpoint, e);
                var hp = equipped.Hardpoint == null ? NetShipCargo.InternalCrc : CrcTool.FLModelCrc(equipped.Hardpoint);
                netLoadout.Items.Add(new NetShipCargo(0, e.CRC, hp, 255, 1));
            }
            obj.Components.Add(new SNPCComponent(obj, this)
            {
                Loadout = netLoadout, Pilot = pilot
            });
            obj.Components.Add(new ShipPhysicsComponent(obj)
            {
                Ship = ship
            });
            obj.Components.Add(new ShipInputComponent(obj));
            obj.Components.Add(new AutopilotComponent(obj));
            obj.Components.Add(new WeaponControlComponent(obj));
            World.OnNPCSpawn(obj);
            if (nickname != null)
            {
                missionNPCs[nickname] = obj;
            }
            return(obj);
        }
コード例 #7
0
        public NetShipLoadout EncodeLoadout()
        {
            var sl = new NetShipLoadout();

            sl.ShipCRC = Ship.CRC;
            sl.Items   = new List <NetShipCargo>(Items.Count);
            foreach (var c in Items)
            {
                sl.Items.Add(new NetShipCargo(
                                 c.ID, c.Equipment.CRC,
                                 CrcTool.HardpointCrc(c.Hardpoint), (byte)(c.Health * 255f),
                                 c.Count
                                 ));
            }
            return(sl);
        }
コード例 #8
0
        void SetSelfLoadout(NetShipLoadout ld)
        {
            var sh = Game.GameData.GetShip((int)ld.ShipCRC);

            PlayerShip = sh.Nickname;
            var hplookup = new HardpointLookup(sh.ModelFile.LoadFile(Game.ResourceManager));

            Items = new List <NetCargo>(ld.Items.Count);
            foreach (var cg in ld.Items)
            {
                var equip = Game.GameData.GetEquipment(cg.EquipCRC);
                Items.Add(new NetCargo(cg.ID)
                {
                    Equipment = equip,
                    Hardpoint = hplookup.GetHardpoint(cg.HardpointCRC),
                    Health    = cg.Health / 255f,
                    Count     = cg.Count
                });
            }
        }
コード例 #9
0
        void SetSelfLoadout(NetShipLoadout ld)
        {
            var sh = Game.GameData.GetShip((int)ld.ShipCRC);

            sh.LoadResources();
            PlayerShip = sh.Nickname;
            var hpcrcs = new Dictionary <uint, string>();

            foreach (var hp in HardpointList(sh.Drawable))
            {
                hpcrcs.Add(CrcTool.FLModelCrc(hp), hp);
            }
            Mounts = new List <EquipMount>();
            foreach (var eq in ld.Equipment)
            {
                Mounts.Add(new EquipMount(
                               hpcrcs[eq.HardpointCRC],
                               Game.GameData.GetEquipment(eq.EquipCRC).Nickname
                               ));
            }
        }