private void LoadTraitSpecialCaseData(PersonalityTraitData inTrait, DatabaseEntry inEntry)
    {
        inTrait.specialCases.Clear();
        string stringValue1 = inEntry.GetStringValue("Special Case");

        if (!string.IsNullOrEmpty(stringValue1) && stringValue1 != "0")
        {
            string str1    = stringValue1;
            char[] chArray = new char[1] {
                ';'
            };
            foreach (string str2 in str1.Split(chArray))
            {
                string inSpecialCaseString = str2.Trim();
                if (!string.IsNullOrEmpty(inSpecialCaseString) && inSpecialCaseString != "0")
                {
                    inTrait.specialCases.Add(this.GetSpecialCaseType(inSpecialCaseString));
                }
            }
        }
        string stringValue2 = inEntry.GetStringValue("Special Case Description");

        if (string.IsNullOrEmpty(stringValue2) || !(stringValue2 != "0"))
        {
            return;
        }
        inTrait.specialCaseDescriptionID = stringValue2;
    }
    public void LoadNationalitiesFromDatabase(List <DatabaseEntry> databaseEntryList)
    {
        for (int index = 0; index < databaseEntryList.Count; ++index)
        {
            DatabaseEntry databaseEntry = databaseEntryList[index];
            string        stringValue1  = databaseEntry.GetStringValue("Sprite Reference");
            if (!this.mNationalitiesDict.ContainsKey(stringValue1))
            {
                this.mNationalitiesDict[stringValue1]           = new Nationality();
                this.mNationalitiesDict[stringValue1].continent = NationalityManager.GetContinent(databaseEntry.GetStringValue("Continent"));
                this.mNationalitiesDict[stringValue1].SetKey(stringValue1);
                this.mNationalities.Add(this.mNationalitiesDict[stringValue1]);
            }
            string stringValue2 = databaseEntry.GetStringValue("ID");
            string stringValue3 = databaseEntry.GetStringValue("Type");
            if (stringValue3.Equals("Country"))
            {
                this.mNationalitiesDict[stringValue1].SetCountry(stringValue2);
            }
            else if (stringValue3.Equals("Nationality"))
            {
                this.mNationalitiesDict[stringValue1].SetNationality(stringValue2);
            }

            try
            {
                var uri = new Uri(string.Format("pack://application:,,,/Assets/Flags/{0}.png", this.mNationalitiesDict[stringValue1].localisedCountry));
                System.Windows.Resources.StreamResourceInfo resourceStream = Application.GetResourceStream(uri);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Could not find flag " + this.mNationalitiesDict[stringValue1].localisedCountry + ".png");
            }
        }
    }
Esempio n. 3
0
 public void LoadVotesFromDatabase(List <DatabaseEntry> votesData)
 {
     for (int index = 0; index < votesData.Count; ++index)
     {
         DatabaseEntry databaseEntry = votesData[index];
         PoliticalVote inVote        = new PoliticalVote();
         if (Enum.IsDefined(typeof(CarPart.PartType), (object)databaseEntry.GetStringValue("Object Type")))
         {
             inVote.currentPartType = (CarPart.PartType)Enum.Parse(typeof(CarPart.PartType), databaseEntry.GetStringValue("Object Type"));
         }
         inVote.displayRule        = databaseEntry.GetBoolValue("Display Rule");
         inVote.group              = databaseEntry.GetStringValue("Rule Group");
         inVote.nameID             = databaseEntry.GetStringValue("Rule Name ID");
         inVote.descriptionID      = databaseEntry.GetStringValue("Rule Description ID");
         inVote.ID                 = databaseEntry.GetIntValue("ID");
         inVote.lockedToPlayerVote = databaseEntry.GetBoolValue("Locked To Player Vote");
         inVote.effectType         = databaseEntry.GetStringValue("Effect Type");
         inVote.impacts            = VotesManager.GetImpacts(inVote.effectType, inVote);
         inVote.messageCriteria    = VotesManager.GetMessageCriteria(databaseEntry.GetStringValue("Message Trigger"));
         string stringValue1 = databaseEntry.GetStringValue("Benefits");
         char[] chArray1     = new char[1] {
             ';'
         };
         foreach (string str1 in stringValue1.Split(chArray1))
         {
             string str2 = str1.Trim();
             if (!Enum.IsDefined(typeof(PoliticalVote.TeamCharacteristics), (object)str2))
             {
                 Console.WriteLine(34.ToString() + str2 + (object)'"' + " does not exist in the teamCharacteristicsEnum");
             }
             else
             {
                 inVote.benificialCharacteristics.Add((PoliticalVote.TeamCharacteristics)Enum.Parse(typeof(PoliticalVote.TeamCharacteristics), str2));
             }
         }
         string stringValue2 = databaseEntry.GetStringValue("Challenges");
         char[] chArray2     = new char[1] {
             ';'
         };
         foreach (string str1 in stringValue2.Split(chArray2))
         {
             string str2 = str1.Trim();
             if (!Enum.IsDefined(typeof(PoliticalVote.TeamCharacteristics), (object)str2))
             {
                 Console.WriteLine(34.ToString() + str2 + (object)'"' + " does not exist in the teamCharacteristicsEnum");
             }
             else
             {
                 inVote.detrimentalCharacteristics.Add((PoliticalVote.TeamCharacteristics)Enum.Parse(typeof(PoliticalVote.TeamCharacteristics), str2));
             }
         }
         if (this.votes.ContainsKey(inVote.ID))
         {
             Console.WriteLine("Rule Changes database contains rules with duplicate IDs: {0}", (object)inVote.ID);
         }
         this.votes.Add(inVote.ID, inVote);
         this.voteIDs.Add(inVote.ID);
     }
     Console.WriteLine("RulesLoaded");
 }
Esempio n. 4
0
    public void LoadCircuitsFromDatabase(List <DatabaseEntry> locationData, ClimateManager climateManager)
    {
        Debug.Assert(this.mCircuits.Count == 0, "Loading from database when content is already loaded; this will work but indicates that the game is loading in a strange unintended way.");
        this.mCircuits.Clear();

        for (int index = 0; index < locationData.Count; ++index)
        {
            DatabaseEntry databaseEntry = locationData[index];
            Circuit       circuit       = new Circuit();
            this.mCircuits.Add(circuit);
            circuit.circuitID                   = databaseEntry.GetIntValue("Circuit ID");
            circuit.locationName                = databaseEntry.GetStringValue("Location");
            circuit.travelCost                  = (long)((double)databaseEntry.GetFloatValue("Travel Cost") * (double)GameStatsConstants.millionScalar);
            circuit.locationNameID              = databaseEntry.GetStringValue("Location ID");
            circuit.nationalityKey              = databaseEntry.GetStringValue("Country");
            circuit.countryNameID               = databaseEntry.GetStringValue("Country ID");
            circuit.spriteName                  = databaseEntry.GetStringValue("Sprite Name");
            circuit.trackRubberModifier         = databaseEntry.GetFloatValue("Track Rubber Modifier");
            circuit.safetyCarFlagProbability    = databaseEntry.GetFloatValue("Safety Car Flag Chance");
            circuit.virtualSafetyCarProbability = databaseEntry.GetFloatValue("Virtual Safety Car Chance");
            circuit.minimapRotation             = databaseEntry.GetIntValue("Minimap Rotation");
            circuit.minimapAxisX                = databaseEntry.GetStringValue("Minimap Axis") == "x";
            circuit.trackStatsCharacteristics.SetStat(CarStats.StatType.TopSpeed, databaseEntry.GetFloatValue("TS"));
            circuit.trackStatsCharacteristics.SetStat(CarStats.StatType.Acceleration, databaseEntry.GetFloatValue("ACC"));
            circuit.trackStatsCharacteristics.SetStat(CarStats.StatType.Braking, databaseEntry.GetFloatValue("DEC"));
            circuit.trackStatsCharacteristics.SetStat(CarStats.StatType.HighSpeedCorners, databaseEntry.GetFloatValue("HSC"));
            circuit.trackStatsCharacteristics.SetStat(CarStats.StatType.MediumSpeedCorners, databaseEntry.GetFloatValue("MSC"));
            circuit.trackStatsCharacteristics.SetStat(CarStats.StatType.LowSpeedCorners, databaseEntry.GetFloatValue("LSC"));
            circuit.isInNorthHemisphere = databaseEntry.GetStringValue("Hemisphere") == "North";
            circuit.trackLayout         = CircuitManager.GetTrackLayoutFromString(databaseEntry.GetStringValue("Track Layout"));
            circuit.trackLengthMiles    = databaseEntry.GetFloatValue("Track Length");
            circuit.firstTyreOption     = (TyreSet.Compound)Enum.Parse(typeof(TyreSet.Compound), databaseEntry.GetStringValue("First Tyre Option"));
            circuit.secondTyreOption    = (TyreSet.Compound)Enum.Parse(typeof(TyreSet.Compound), databaseEntry.GetStringValue("Second Tyre Option"));
            circuit.thirdTyreOption     = (TyreSet.Compound)Enum.Parse(typeof(TyreSet.Compound), databaseEntry.GetStringValue("Third Tyre Option"));
            circuit.tyreWearRate        = (Circuit.Rate)Enum.Parse(typeof(Circuit.Rate), databaseEntry.GetStringValue("Tyre Wear Rate"));
            circuit.fuelBurnRate        = (Circuit.Rate)Enum.Parse(typeof(Circuit.Rate), databaseEntry.GetStringValue("Fuel Burn Rate"));
            float num1       = 120f;
            float num2       = 90f;
            float inMinutes1 = (float)((double)circuit.trackLengthMiles / (double)num1 * 60.0);
            float inMinutes2 = (float)((double)circuit.trackLengthMiles / (double)num2 * 60.0);
            circuit.bestPossibleLapTime  = GameUtility.MinutesToSeconds(inMinutes1);
            circuit.worstPossibleLapTime = GameUtility.MinutesToSeconds(inMinutes2);
            circuit.scene = databaseEntry.GetStringValue("Scene");

            circuit.climate     = CircuitManager.GetClimateFromString(databaseEntry.GetStringValue("Climate"), climateManager);
            circuit.driverStats = Game.instance.driverStatsProgressionManager.GetDriverStatsProgression(circuit.locationName);
        }
    }
 private void LoadIsRepeatableFlag(PersonalityTraitData inTrait, DatabaseEntry inEntry)
 {
     if (inEntry.GetStringValue("Repeatable") == "Yes")
     {
         inTrait.isRepeatable = true;
     }
     else
     {
         inTrait.isRepeatable = false;
     }
 }
 private void LoadTriatShownType(PersonalityTraitData inTrait, DatabaseEntry inEntry)
 {
     if (inEntry.GetStringValue("Shown") == "PlayerDriverOnly")
     {
         inTrait.shownType = PersonalityTraitData.TriggerShownType.PlayerDriverOnly;
     }
     else
     {
         inTrait.shownType = PersonalityTraitData.TriggerShownType.AllDrivers;
     }
 }
 public void LoadPersonalityTraitsFromDatabase(List <DatabaseEntry> personalityTraitsData)
 {
     for (int index = 0; index < personalityTraitsData.Count; ++index)
     {
         bool                 flag     = false;
         DatabaseEntry        inEntry  = personalityTraitsData[index];
         int                  intValue = inEntry.GetIntValue("ID");
         PersonalityTraitData inTrait;
         if (this.personalityTraits.ContainsKey(intValue))
         {
             inTrait = this.personalityTraits[intValue];
         }
         else
         {
             inTrait = new PersonalityTraitData();
             flag    = true;
         }
         inTrait.ID = intValue;
         inTrait.SetNameID(inEntry.GetStringValue("Trait Name ID"));
         inTrait.SetDescriptionID(inEntry.GetStringValue("Description ID"));
         inTrait.customTraitName        = inEntry.GetStringValue("Trait Name");
         inTrait.customTraitDescription = inEntry.GetStringValue("Trait Description");
         this.LoadTraitType(inTrait, inEntry);
         inTrait.possibleLength = this.ParseStringToIntegerArray(inEntry, "Length");
         this.LoadTraitRequirements(inTrait, inEntry);
         inTrait.probability   = (float)(1.0 - (double)inEntry.GetFloatValue("Probability") / 100.0);
         inTrait.evolvesInto   = this.ParseStringToIntegerArray(inEntry, "Evolves Into");
         inTrait.opposites     = this.ParseStringToIntegerArray(inEntry, "Opposites");
         inTrait.removesTraits = this.ParseStringToIntegerArray(inEntry, "Removes Traits");
         this.LoadTraitTriggerSource(inTrait, inEntry);
         this.LoadTriatShownType(inTrait, inEntry);
         this.LoadTraitModifiers(inTrait, inEntry);
         this.LoadTraitSpecialCaseData(inTrait, inEntry);
         this.LoadEventTriggerType(inTrait, inEntry);
         this.LoadIsRepeatableFlag(inTrait, inEntry);
         if (flag)
         {
             this.personalityTraits.Add(inTrait.ID, inTrait);
         }
     }
 }
 private void SetComponentData(CarPartComponent inComponent, DatabaseEntry data)
 {
     inComponent.nameID   = data.GetStringValue("Name ID");
     inComponent.iconID   = data.GetIntValue("Icon");
     inComponent.iconPath = data.GetStringValue("Icon Path");
     inComponent.agressiveTeamWeightings    = data.GetFloatValue("AggressiveTeamWeightings");
     inComponent.nonAgressiveTeamWeightings = data.GetFloatValue("PassiveTeamWeightings");
     inComponent.componentType       = (CarPartComponent.ComponentType)Enum.Parse(typeof(CarPartComponent.ComponentType), data.GetStringValue("Type"));
     inComponent.riskLevel           = data.GetFloatValue("Risk Level");
     inComponent.statBoost           = data.GetFloatValue("Stat Boost");
     inComponent.maxStatBoost        = data.GetFloatValue("Max Stat Boost");
     inComponent.reliabilityBoost    = data.GetFloatValue("Reliability Boost") / 100f;
     inComponent.maxReliabilityBoost = data.GetFloatValue("Max Reliability Boost") / 100f;
     inComponent.productionTime      = data.GetFloatValue("Production Time");
     inComponent.cost                = data.GetFloatValue("Cost");
     inComponent.redZone             = data.GetFloatValue("Red Zone") / 100f;
     inComponent.customComponentName = data.GetStringValue("Custom Trait Name");
     this.AddPartAvailability(inComponent, data.GetStringValue("Part"));
     this.AddRequirements(inComponent, data.GetStringValue("Activation Requirement"));
     this.AddBonus(inComponent, data);
     inComponent.level = data.GetIntValue("Level");
     inComponent.id    = data.GetIntValue("ID");
 }
    private void LoadEventTriggerType(PersonalityTraitData inTrait, DatabaseEntry inEntry)
    {
        string stringValue = inEntry.GetStringValue("EventTrigger");

        if (string.IsNullOrEmpty(stringValue))
        {
            return;
        }
        if (stringValue == "PostRace")
        {
            inTrait.eventTriggerType = PersonalityTraitData.EventTriggerType.PostRace;
        }
        else
        {
            inTrait.eventTriggerType = PersonalityTraitData.EventTriggerType.None;
        }
    }
    private void LoadTraitType(PersonalityTraitData inTrait, DatabaseEntry inEntry)
    {
        string stringValue = inEntry.GetStringValue("Type");

        if (stringValue == "Permanent")
        {
            inTrait.type = PersonalityTraitData.TraitType.Permanent;
        }
        else
        {
            if (!(stringValue == "Temp"))
            {
                return;
            }
            inTrait.type = PersonalityTraitData.TraitType.Temporary;
        }
    }
    private int[] ParseStringToIntegerArray(DatabaseEntry inEntry, string fieldName)
    {
        string[] strArray = inEntry.GetStringValue(fieldName).Split(new char[2] {
            ';', '-'
        });
        List <int> intList = new List <int>();

        for (int index = 0; index < strArray.Length; ++index)
        {
            string s = strArray[index].Trim();
            if (!(s == string.Empty))
            {
                int num = int.Parse(s);
                if (num != 0)
                {
                    intList.Add(num);
                }
            }
        }
        return(intList.ToArray());
    }
    private void LoadTraitRequirements(PersonalityTraitData inTrait, DatabaseEntry inEntry)
    {
        List <DialogCriteria> dialogCriteriaList = new List <DialogCriteria>();
        string stringValue = inEntry.GetStringValue("Requirement");

        if (!string.IsNullOrEmpty(stringValue))
        {
            string str     = stringValue;
            char[] chArray = new char[1] {
                ';'
            };
            foreach (string inString in str.Split(chArray))
            {
                DialogCriteria personalityCriteria = this.GetPersonalityCriteria(inTrait, inString);
                if (personalityCriteria != null)
                {
                    dialogCriteriaList.Add(personalityCriteria);
                }
            }
        }
        inTrait.requirements = dialogCriteriaList;
    }
    private void LoadTraitTriggerSource(PersonalityTraitData inTrait, DatabaseEntry inEntry)
    {
        inTrait.triggerCriteria.Clear();
        string stringValue = inEntry.GetStringValue("Triggers");

        if (string.IsNullOrEmpty(stringValue))
        {
            return;
        }
        string[] strArray1 = stringValue.Split(';');
        for (int index = 0; index < strArray1.Length; ++index)
        {
            if (!string.IsNullOrEmpty(strArray1[index]) && !(strArray1[index] == "0"))
            {
                string[] strArray2 = strArray1[index].Split('=');
                if (strArray2.Length == 2)
                {
                    inTrait.triggerCriteria.Add(new DialogCriteria("Type", "Header"));
                    inTrait.triggerCriteria.Add(new DialogCriteria(strArray2[0].Trim(), strArray2[1].Trim()));
                }
            }
        }
    }
 public void LoadDriverProgressionFromDatabase(List <DatabaseEntry> statProgressionData)
 {
     this.statsProgressionDictionary = new Dictionary <string, DriverStatsProgression>();
     for (int index = 0; index < statProgressionData.Count; ++index)
     {
         DatabaseEntry inEntry     = statProgressionData[index];
         string        stringValue = inEntry.GetStringValue("Type");
         if (stringValue.Contains("/"))
         {
             int    num    = int.Parse(stringValue[1].ToString());
             string inType = stringValue.Substring(3);
             for (int inIndex = 0; inIndex < num; ++inIndex)
             {
                 DriverStatsProgression statsProgression = new DriverStatsProgression(inEntry, inIndex, inType);
                 this.statsProgressionDictionary.Add(inType + (object)inIndex, statsProgression);
             }
         }
         else
         {
             DriverStatsProgression statsProgression = new DriverStatsProgression(inEntry, stringValue);
             this.statsProgressionDictionary.Add(stringValue, statsProgression);
         }
     }
 }
    private void AddBonus(CarPartComponent inComponent, DatabaseEntry inData)
    {
        inComponent.bonuses.Clear();
        string stringValue = inData.GetStringValue("Bonus Type");
        string text        = stringValue;

        switch (text)
        {
        case "NoConditionLossFirstRace":
            inComponent.AddBonuses(new BonusNoConditionLossFirstSession
            {
                session = SessionDetails.SessionType.Race,
                name    = stringValue
            });
            break;

        case "SecondPartFree":
            inComponent.AddBonuses(new BonusCreateTwoParts
            {
                name = stringValue
            });
            break;

        case "NoConditionLossEver":
            inComponent.AddBonuses(new BonusNoConditionLoss
            {
                name = stringValue
            });
            break;

        case "TimeReductionPerMillionSpent":
            inComponent.AddBonuses(new BonusTimeReductionPerMillionSpent
            {
                bonusValue = inData.GetFloatValue("Bonus"),
                name       = stringValue
            });
            break;

        case "SlotsLevelAddNoDays":
            inComponent.AddBonuses(new BonusSpecificLevelSlotAddNoDays
            {
                bonusValue = inData.GetFloatValue("Bonus"),
                name       = stringValue
            });
            break;

        case "AddRandomLevelComponent":
            inComponent.AddBonuses(new BonusAddRandomLevelComponent
            {
                bonusValue = inData.GetFloatValue("Bonus"),
                name       = stringValue
            });
            break;

        case "ReliabilityPerDayInProduction":
            inComponent.AddBonuses(new BonusExtraReliabilityPerDayInProduction
            {
                bonusValue = inData.GetFloatValue("Bonus"),
                name       = stringValue
            });
            break;

        case "UnlockExtraSlotOfLevel":
            inComponent.AddBonuses(new BonusUnlockExtraSlot
            {
                bonusValue = inData.GetFloatValue("Bonus"),
                name       = stringValue
            });
            break;

        case "PerformanceAutoImproved":
            inComponent.AddBonuses(new BonusPerformanceAutoImproved
            {
                name = stringValue
            });
            break;

        case "ComponentLevelAddNoDays":
            inComponent.AddBonuses(new BonusSpecificLevelComponentAddNoDays
            {
                name       = stringValue,
                bonusValue = inData.GetFloatValue("Bonus")
            });
            break;

        case "ReliabilityBonusPerComponentOfLevel":
        {
            BonusPerSpecificLevelComponentUsed bonusPerSpecificLevelComponentUsed = new BonusPerSpecificLevelComponentUsed();
            bonusPerSpecificLevelComponentUsed.stat       = CarPartStats.CarPartStat.Reliability;
            bonusPerSpecificLevelComponentUsed.statBoost  = inComponent.reliabilityBoost;
            bonusPerSpecificLevelComponentUsed.bonusValue = inData.GetFloatValue("Bonus");
            bonusPerSpecificLevelComponentUsed.name       = stringValue;
            inComponent.reliabilityBoost = 0f;
            inComponent.AddBonuses(bonusPerSpecificLevelComponentUsed);
            break;
        }
        }
    }
Esempio n. 16
0
    public DriverStatsProgression(DatabaseEntry inEntry, int inIndex, string inType)
    {
        if (inEntry == null)
        {
            return;
        }
        string stringValue1 = inEntry.GetStringValue("Braking");
        string stringValue2 = inEntry.GetStringValue("Cornering");
        string stringValue3 = inEntry.GetStringValue("Smoothness");
        string stringValue4 = inEntry.GetStringValue("Overtaking");
        string stringValue5 = inEntry.GetStringValue("Consistency");
        string stringValue6 = inEntry.GetStringValue("Adaptability");
        string stringValue7 = inEntry.GetStringValue("Fitness");
        string stringValue8 = inEntry.GetStringValue("Feedback");
        string stringValue9 = inEntry.GetStringValue("Focus");

        string[] strArray1 = stringValue1.Split(';');
        string[] strArray2 = stringValue2.Split(';');
        string[] strArray3 = stringValue3.Split(';');
        string[] strArray4 = stringValue4.Split(';');
        string[] strArray5 = stringValue5.Split(';');
        string[] strArray6 = stringValue6.Split(';');
        string[] strArray7 = stringValue7.Split(';');
        string[] strArray8 = stringValue8.Split(';');
        string[] strArray9 = stringValue9.Split(';');
        this.progressionType = inType + (object)inIndex;
        if (strArray1.Length > inIndex)
        {
            this.braking = Convert.ToSingle(strArray1[inIndex]) / 100f;
        }
        if (strArray2.Length > inIndex)
        {
            this.cornering = Convert.ToSingle(strArray2[inIndex]) / 100f;
        }
        if (strArray3.Length > inIndex)
        {
            this.smoothness = Convert.ToSingle(strArray3[inIndex]) / 100f;
        }
        if (strArray4.Length > inIndex)
        {
            this.overtaking = Convert.ToSingle(strArray4[inIndex]) / 100f;
        }
        if (strArray5.Length > inIndex)
        {
            this.consistency = Convert.ToSingle(strArray5[inIndex]) / 100f;
        }
        if (strArray6.Length > inIndex)
        {
            this.adaptability = Convert.ToSingle(strArray6[inIndex]) / 100f;
        }
        if (strArray7.Length > inIndex)
        {
            this.fitness = Convert.ToSingle(strArray7[inIndex]) / 100f;
        }
        if (strArray8.Length > inIndex)
        {
            this.feedback = Convert.ToSingle(strArray8[inIndex]) / 100f;
        }
        if (strArray9.Length <= inIndex)
        {
            return;
        }
        this.focus = Convert.ToSingle(strArray9[inIndex]) / 100f;
    }