예제 #1
0
        public SelectableCharacter ToSelectable()
        {
            var selectable = new SelectableCharacter();

            selectable.Rank     = 1;
            selectable.Ship     = Ship.Nickname;
            selectable.Name     = Name;
            selectable.Funds    = Credits;
            selectable.Location = gData.GetBase(Base).System;
            return(selectable);
        }
예제 #2
0
        public SaveGame NewCharacter(string name, int factionIndex)
        {
            var fac   = GameData.Ini.NewCharDB.Factions[factionIndex];
            var pilot = GameData.Ini.NewCharDB.Pilots.First(x =>
                                                            x.Nickname.Equals(fac.Pilot, StringComparison.OrdinalIgnoreCase));
            var package = GameData.Ini.NewCharDB.Packages.First(x =>
                                                                x.Nickname.Equals(fac.Package, StringComparison.OrdinalIgnoreCase));
            //TODO: initial_rep = %%FACTION%%
            //does this have any effect in FL?

            var src = new StringBuilder(Encoding.UTF8.GetString(FlCodec.ReadFile(GameData.VFS.Resolve("EXE\\mpnewcharacter.fl"))));

            src.Replace("%%NAME%%", SavePlayer.EncodeName(name));
            src.Replace("%%BASE_COSTUME%%", pilot.Body);
            src.Replace("%%COMM_COSTUME%%", pilot.Comm);
            //Changing voice breaks in vanilla (commented out in mpnewcharacter)
            src.Replace("%%VOICE%%", pilot.Voice);
            //TODO: pilot comm_anim (not in vanilla mpnewcharacter)
            //TODO: pilot body_anim (not in vanilla mpnewcharacter)
            src.Replace("%%MONEY%%", package.Money.ToString());
            src.Replace("%%HOME_SYSTEM%%", GameData.GetBase(fac.Base).System);
            src.Replace("%%HOME_BASE%%", fac.Base);

            var pkgStr = new StringBuilder();

            pkgStr.Append("ship_archetype = ").AppendLine(package.Ship);
            var loadout = GameData.Ini.Loadouts.Loadouts.First(x =>
                                                               x.Nickname.Equals(package.Loadout, StringComparison.OrdinalIgnoreCase));

            //do loadout
            foreach (var x in loadout.Equip)
            {
                pkgStr.AppendLine(new PlayerEquipment()
                {
                    EquipName = x.Nickname,
                    Hardpoint = x.Hardpoint ?? ""
                }.ToString());
            }

            foreach (var x in loadout.Cargo)
            {
                pkgStr.AppendLine(new PlayerCargo()
                {
                    CargoName = x.Nickname,
                    Count     = x.Count
                }.ToString());
            }
            //append
            src.Replace("%%PACKAGE%%", pkgStr.ToString());
            var initext = src.ToString();

            return(SaveGame.FromString($"mpnewcharacter: {fac.Nickname}", initext));
        }