Beispiel #1
0
 public static void SaveMissions(this PlayerModel player, BinaryWriter writer)
 {
     foreach (var mission in player.Missions)
     {
         writer.Write(mission.Id);
         writer.WriteField(SaveField.CustomDate, mission.Date);
         writer.Write(mission.ClientName.PadRight(10, ' ').ToCharArray());
         writer.Write((short)mission.RewardAmount);
         writer.Write((byte)mission.Type);
         writer.Write((byte)mission.Difficulty);
         writer.Write((byte)mission.TargetStarSystem.Coords.Y);
         writer.Write((byte)mission.TargetStarSystem.Coords.X);
         switch (mission.Type)
         {
             case MissionType.PackageDelivery:	writer.Write(mission.PackageDescription.PadRight(20).ToCharArray());	break;
             case MissionType.GoodsDelivery	:	writer.Write((byte)mission.GoodsToDeliver_Type);	writer.Write((byte)mission.GoodsToDeliver_Amount);	break;
             case MissionType.Assassination	:	mission.AssassinationTarget.Save(writer);	break;
         }
     }
 }
Beispiel #2
0
        public static void Save(this GalaxyModel galaxy, BinaryWriter writer)
        {
            var galaxySizeX = galaxy.StarSystems.GetLength(1);
            var galaxySizeY = galaxy.StarSystems.GetLength(0);
            writer.WriteField(SaveField.GameDate,		galaxy.GameDate);
            writer.WriteField(SaveField.LastEventDate,	galaxy.LastEventDate);
            writer.WriteField(SaveField.RandomSeed,	0);	writer.Write(galaxy.RandomSeed);
            writer.WriteField(SaveField.AlienStrength,	(int)galaxy.AlienStrength);
            writer.WriteField(SaveField.StarSystems,	(galaxySizeX << 8) + galaxySizeY);

            #region Star System Array

            for (var i = 0; i < galaxySizeY; i++)
                for (var j = 0; j < galaxySizeX; j++)
                {
                    var starSystem = galaxy.StarSystems[i,j];
                    writer.WriteField(SaveField.StarName,		starSystem.Name);
                    writer.WriteField(SaveField.TechLevel,		starSystem.TechLevel);
                    writer.WriteField(SaveField.IsExplored,		starSystem.IsExplored);
                    writer.WriteField(SaveField.Allegiance,		(int)starSystem.Allegiance);
                    writer.WriteField(SaveField.CurrentEvent,	(int)starSystem.CurrentEvent);
                    writer.WriteField(SaveField.EventDuration,	starSystem.EventDuration);

                    writer.WriteField(SaveField.GoodsLegality,	Enums.All_Merchandise.Count);
                    foreach (var merch in Enums.All_Merchandise)
                        writer.Write((byte)(starSystem.IllegalGoods.Contains(merch) ? 1 : 0));

                    writer.WriteField(SaveField.PriceDeviations, Enums.All_Merchandise.Count);
                    for (var k = 0; k < Enums.All_Merchandise.Count; k++)
                        writer.Write((sbyte)(starSystem.PriceChanges[k]));

                    writer.WriteField(SaveField.StarSystemDataEnd,	0);
                }

            #endregion

            #region Global Event Log

            writer.WriteField(SaveField.GlobalEventsLog,	galaxy.GlobalEventLog.Count);
            foreach (var t in galaxy.GlobalEventLog)
            {
                writer.Write((byte)t.StarSystemIndex);
                writer.Write((byte)t.Event);
                writer.Write((short)t.EventValue);
                writer.WriteField(SaveField.CustomDate, t.EventDate);
            }

            #endregion

            writer.WriteField(SaveField.GalaxyDataEnd,	0);
        }
Beispiel #3
0
        public static void Save(this NPC_Model npc, BinaryWriter writer)
        {
            writer.WriteField(SaveField.NPC_Type,		(int)npc.NPC_Type);
            writer.WriteField(SaveField.PlayerName,		npc.Name);
            writer.WriteField(SaveField.ShipName,		npc.Ship.ModelName);
            writer.WriteField(SaveField.CurrentHP,		npc.CurrentHP);
            writer.WriteField(SaveField.CurrentMissiles, npc.CurrentMissiles);
            writer.WriteField(SaveField.Attack,			npc.Attack);
            writer.WriteField(SaveField.Defense,		npc.Defense);
            writer.WriteField(SaveField.HasECM,			(int)npc.ECM);
            writer.WriteField(SaveField.Bounty,			npc.Bounty);
            writer.WriteField(SaveField.EscapeChance,	npc.EscapeChance);
            writer.WriteField(SaveField.IsRelevealedECM, npc.IsRelevealedECM);

            writer.WriteField(SaveField.CurrentCargo, Enums.All_Merchandise.Count);
            foreach (var merch in Enums.All_Merchandise)
                writer.Write((byte)npc.CurrentCargo[merch]);

            writer.WriteField(SaveField.NPC_DataEnd, 0);
        }
Beispiel #4
0
        public static void Save(this PlayerModel player, BinaryWriter writer)
        {
            writer.WriteField(SaveField.PlayerName,		player.Name);
            writer.WriteField(SaveField.ShipName,		player.Ship.ModelName);
            writer.WriteField(SaveField.PosX,			player.PosX);
            writer.WriteField(SaveField.PosY,			player.PosY);
            writer.WriteField(SaveField.IsLanded,		player.IsLanded);
            writer.WriteField(SaveField.Credits,		player.Credits);
            writer.WriteField(SaveField.FuelLeft,		player.FuelLeft);
            writer.WriteField(SaveField.CurrentHP,		player.CurrentHP);
            writer.WriteField(SaveField.CurrentMissiles, player.CurrentMissiles);
            writer.WriteField(SaveField.Attack,			player.Attack);
            writer.WriteField(SaveField.Defense,		player.Defense);
            writer.WriteField(SaveField.HasECM,			(int)player.ECM);
            writer.WriteField(SaveField.HasScanner,		(int)player.Scanner);
            writer.WriteField(SaveField.HasMiningLaser, (int)player.MiningLaser);
            writer.WriteField(SaveField.HasEscapeBoat,	(int)player.EscapeBoat);
            writer.WriteField(SaveField.CombatRating,	player.CombatRating);
            writer.WriteField(SaveField.Reputation,		player.ReputationRating);

            writer.WriteField(SaveField.CurrentCargo, Enums.All_Merchandise.Count);
            foreach (var merch in Enums.All_Merchandise)
                writer.Write((byte)player.CurrentCargo[merch]);

            writer.WriteField(SaveField.LegalStatus, Enums.All_Allegiances.Count);
            foreach (var allegiance in Enums.All_Allegiances)
                writer.Write((short)player.LegalRecords[allegiance].FineAmount);

            writer.WriteField(SaveField.Missions, player.Missions.Count);
            player.SaveMissions(writer);

            writer.WriteField(SaveField.MilitaryRanks, GameConfig.FractionsWithNavy.Length);
            for (var i = 0; i < GameConfig.FractionsWithNavy.Length; i++)
            {
                writer.Write((byte)GameConfig.FractionsWithNavy[i]);
                writer.Write((short)player.MilitaryRanks[GameConfig.FractionsWithNavy[i]].Rating);
            }

            writer.WriteField(SaveField.PlayerDataEnd, 0);
        }