public MoraleState(MoraleLevel level, int requiredPoints, int powerBonus, int researchBonus, int factoryBonus, int foodBonus, int defectRate, int fertilityRate, int deathRate) { MoraleType = level; RequiredPoints = requiredPoints; PowerBonus = powerBonus; ResearchBonus = researchBonus; FactoryBonus = factoryBonus; FoodBonus = foodBonus; DefectRate = defectRate; FertilityRate = fertilityRate; DeathRate = deathRate; }
/// <summary> /// Read morale sheet. /// </summary> public static GlobalMoraleInfo ReadMoraleSheet() { string[][] miningSheet = ReadSheet("morale.txt"); if (miningSheet == null) { return(null); } // Read MoraleState rows List <MoraleState> moraleStates = new List <MoraleState>(); int rowIndex = 0; for ( ; rowIndex < miningSheet.GetLength(0); ++rowIndex) { string[] row = miningSheet[rowIndex]; // Table ends when row is empty if (row[0] == "") { break; } // Skip rows that don't contain enough data (probably empty line) if (row.Length < 9) { continue; } string codeName = row[0]; int requiredPoints = ReadInt(row[1]); int powerBonus = ReadInt(row[2]); int researchBonus = ReadInt(row[3]); int factoryBonus = ReadInt(row[4]); int foodBonus = ReadInt(row[5]); int defectRate = ReadInt(row[6]); int fertilityRate = ReadInt(row[7]); int deathRate = ReadInt(row[8]); MoraleLevel level = GetMoraleLevelFromCodeName(codeName); moraleStates.Add(new MoraleState(level, requiredPoints, powerBonus, researchBonus, factoryBonus, foodBonus, defectRate, fertilityRate, deathRate)); } // Read event rows Dictionary <MoraleEvent, int> moraleEvents = new Dictionary <MoraleEvent, int>(); for ( ; rowIndex < miningSheet.GetLength(0); ++rowIndex) { string[] row = miningSheet[rowIndex]; // Skip empty rows if (row[0] == "") { continue; } string codeName = row[0]; int value = ReadInt(GetFirstColumnWithData(row, 1)); MoraleEvent moraleEvent = GetMoraleEventFromCodeName(codeName); moraleEvents[moraleEvent] = value; } return(new GlobalMoraleInfo(moraleStates, moraleEvents)); }