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) }); }
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) }); }
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); }
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); }
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); }
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); }
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); }
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 }); } }
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 )); } }