// STATIC INTERNALS private static UserStat CreateUserStat(UserStatDescriptor i_Descriptor) { UserStat userStat = null; string id = i_Descriptor.id; if (id != "") { switch (i_Descriptor.type) { case UserStatType.Bool: bool defaultBoolValue = i_Descriptor.defaultBoolValue; BooleanCombineFunction booleanCombineFunction = i_Descriptor.booleanCombineFunction; userStat = new UserStatBool(id, defaultBoolValue, booleanCombineFunction); break; case UserStatType.Float: float defaultFloatValue = i_Descriptor.defaultFloatValue; bool usingFloatLowLimit = i_Descriptor.usingLowLimit; bool usingFloatHighLimit = i_Descriptor.usingHighLimit; float minFloatValue = i_Descriptor.minFloatValue; float maxFloatValue = i_Descriptor.maxFloatValue; NumericCombineFunction floatCombineFunction = i_Descriptor.numericCombineFunction; userStat = new UserStatFloat(id, defaultFloatValue, usingFloatLowLimit, usingFloatHighLimit, minFloatValue, maxFloatValue, floatCombineFunction); break; case UserStatType.Int: int defaultIntValue = i_Descriptor.defaultIntValue; bool usingIntLowLimit = i_Descriptor.usingLowLimit; bool usingIntHighLimit = i_Descriptor.usingHighLimit; int minIntValue = i_Descriptor.minIntValue; int maxIntValue = i_Descriptor.maxIntValue; NumericCombineFunction intCombineFunction = i_Descriptor.numericCombineFunction; userStat = new UserStatInt(id, defaultIntValue, usingIntLowLimit, usingIntHighLimit, minIntValue, maxIntValue, intCombineFunction); break; case UserStatType.String: string defaultStringValue = i_Descriptor.defaultStringValue; StringCombineFunction stringCombineFunction = i_Descriptor.stringCombineFunction; userStat = new UserStatString(id, defaultStringValue, stringCombineFunction); break; } } return(userStat); }
// LOGIC public void Initialize() { m_Database = Resources.Load <UserStatsDatabase>(m_DatabaseResourcePath); if (m_Database != null) { for (int userStatIndex = 0; userStatIndex < m_Database.statsCount; ++userStatIndex) { UserStatDescriptor descriptor = m_Database.GetUserStat(userStatIndex); if (descriptor != null) { UserStat userStat = CreateUserStat(descriptor); if (userStat != null) { m_UserStats.Add(userStat); } } } } else { LogManager.LogWarning(this, "Database could not be loaded."); } }