Exemplo n.º 1
0
        public int Build()
        {
            var table = Database["Missions"];

            var row = table.Create(Id);

            var mission = new MissionsTable(row);

            mission.defined_type               = Type;
            mission.defined_subtype            = SubType;
            mission.UISortOrder                = UiSortOrder;
            mission.reward_currency            = RewardCurrency;
            mission.LegoScore                  = RewardScore;
            mission.isMission                  = IsMission;
            mission.isChoiceReward             = ChoiceRewards;
            mission.localize                   = true;
            mission.reward_maximagination      = RewardMaxImagination;
            mission.reward_maxhealth           = RewardMaxHealth;
            mission.reward_maxinventory        = RewardMaxInventory;
            mission.repeatable                 = Repeatable;
            mission.reward_currency_repeatable = RepeatRewardCurrency;
            mission.missionIconID              = MissionIconId;
            mission.prereqMissionID            = Prerequisites;
            mission.offer_objectID             = OfferObject;
            mission.target_objectID            = TargetObject;
            mission.inMOTD       = InMotd;
            mission.gate_version = "freetrial";

            row["time_limit"].Type = DataType.Nothing;

            for (var i = 0; i < 4; i++)
            {
                var item   = ItemRewards[i];
                var repeat = RepeatItemRewards[i];
                var emote  = EmoteRewards[i];

                row[$"reward_item{i + 1}"].Value       = item.Lot;
                row[$"reward_item{i + 1}_count"].Value = item.Count;

                row[$"reward_item{i + 1}_repeatable"].Value   = repeat.Lot;
                row[$"reward_item{i + 1}_repeat_count"].Value = repeat.Count;

                var id = i == 0 ? "" : $"{i + 1}";

                row[$"reward_emote{id}"].Value = emote;
            }

            foreach (var task in Tasks)
            {
                task.Build(Database, Id);
            }

            BuildMissionText();

            return(Id);
        }
Exemplo n.º 2
0
        public static BaseTable ReadXBin(BinaryReader reader, ulong hash)
        {
            BaseTable XBinData = null;

            switch (hash)
            {
            case 0x5E42EF29E8A3E1D3:     // StringTable
                XBinData = new StringTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0xA869F8A3AC7656E1:           // M3
            case 0xA869F8A3ED0CDAFC:           // M1: DE
                XBinData = new VehicleTable(); // VehicleTable
                XBinData.ReadFromFile(reader);
                break;

            case 0x3759788EC437536C:     // CarGearboxTable
                XBinData = new CarGearBoxesTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0xF5D56763013A2B0A:     // CarInteriorColorsTable
                XBinData = new CarInteriorColorsTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0x44FA070D73C43CBD:     // CarTrafficTuningTable for M1:DE
            case 0x44FA070D55388F65:     // CarTrafficTuningTable for M3
                XBinData = new CarTrafficTuningTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0x09B5140FA382AF8F:     // CarTuningModificatorsTable
                XBinData = new CarTuningModificatorsTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0x2793BB7847F84081:     // GameMeshBindingTable
                XBinData = new GameMeshBindingTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0x493DEA76C9A390F0:     // SlotTable
                XBinData = new SlotTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0xB77D0A522C8E12A3:     // MissionsTable
                XBinData = new MissionsTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0x3990790678078A1C:     // GenericSpeechSituations
                XBinData = new GenericSpeechSituationsTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0xEF795C84CA85E193:     // CharacterCinematicsTable
                XBinData = new CharacterCinematicsTable();
                XBinData.ReadFromFile(reader);
                break;

            case 0x5D69A41C1FBD6565:     // TableContainer (Mafia I: DE)
            case 0x5D69A41CDC82936C:     // TableContainer (Mafia III)
                XBinData = new TableContainer();
                XBinData.ReadFromFile(reader);
                break;

            case 0x06F579D51CE129A5:     // GfxEnvContainer (Mafia III)
            case 0x06F579D595DA02AD:     // GfxEnvContainer (Mafia I: DE)
                XBinData = new GfxEnvContainer();
                XBinData.ReadFromFile(reader);
                break;

            case 0xAD5CF0F7FC3717F0:     // GameGuiContainer (Mafia I: DE)
            case 0xAD5CF0F764C39370:     // GameGuiContainer (Mafia III)
                XBinData = new GameGuiContainer();
                XBinData.ReadFromFile(reader);
                break;

            case 0x0E2FBBCF46754F66:     // CarTuningPackAvailabilityTable (Mafia I: DE and Mafia III)
                XBinData = new CarTuningPackAvailabilityTable();
                XBinData.ReadFromFile(reader);
                break;

            //case 0xDC327944DD83627E: // TODO: Fix for M1: DE. look for 0xA for PaintCombination array entries.
            //    XBinData = new PaintCombinationsTable(); // PaintCombinations
            //    XBinData.ReadFromFile(reader);
            //    break;
            default:
                throw new Exception("We lack the support for this type.");
                break;
            }

            Debug.Assert(XBinData != null, "XBinData is null, but we should have actually read this.");
            return(XBinData);
        }