private void InternalUpdateFloatStat(UserStatFloat i_Stat, float i_Value, FloatStatUpdateFunction i_UpdateFunction) { switch (i_UpdateFunction) { case FloatStatUpdateFunction.Add: i_Stat.Add(i_Value); break; case FloatStatUpdateFunction.Max: i_Stat.Max(i_Value); break; case FloatStatUpdateFunction.Min: i_Stat.Min(i_Value); break; case FloatStatUpdateFunction.Multiply: i_Stat.Multiply(i_Value); break; case FloatStatUpdateFunction.Set: i_Stat.Set(i_Value); break; } }
// 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); }
// CALLBACKS private void OnUserStatsReceived(UserStatsReceived_t i_CallbackParams) { if (m_UserStatsManager == null || m_RemoteStatsMapper == null) { return; } if (i_CallbackParams.m_nGameID == ((ulong)m_GameId)) { EResult callbackResult = i_CallbackParams.m_eResult; if (callbackResult == EResult.k_EResultOK) { for (int userStatIndex = 0; userStatIndex < m_UserStatsManager.statsCount; ++userStatIndex) { UserStat userStat = m_UserStatsManager.GetStatByIndex(userStatIndex); if (userStat != null) { UserStatType userStatType = userStat.type; switch (userStatType) { case UserStatType.Int: UserStatInt userStatInt = (UserStatInt)userStat; CombineIntUserStat(userStatInt); break; case UserStatType.Bool: UserStatBool userStatBool = (UserStatBool)userStat; CombineBoolUserStat(userStatBool); break; case UserStatType.Float: UserStatFloat userStatFloat = (UserStatFloat)userStat; CombineFloatUserStat(userStatFloat); break; case UserStatType.String: UserStatString userStatString = (UserStatString)userStat; CombineStringUserStat(userStatString); break; } } } m_StatsValid = true; } } }
public void StoreStats() { if (!SteamManager.initializedMain) { return; } if (!m_StatsValid) { return; } for (int userStatIndex = 0; userStatIndex < m_UserStatsManager.statsCount; ++userStatIndex) { UserStat userStat = m_UserStatsManager.GetStatByIndex(userStatIndex); if (userStat != null) { UserStatType userStatType = userStat.type; switch (userStatType) { case UserStatType.Int: UserStatInt userStatInt = (UserStatInt)userStat; StoreIntUserStat(userStatInt); break; case UserStatType.Bool: UserStatBool userStatBool = (UserStatBool)userStat; StoreBoolUserStat(userStatBool); break; case UserStatType.Float: UserStatFloat userStatFloat = (UserStatFloat)userStat; StoreFloatUserStat(userStatFloat); break; case UserStatType.String: UserStatString userStatString = (UserStatString)userStat; StoreStringUserStat(userStatString); break; } } } SteamManager.SetStatsDirtyMain(); }
private void StoreFloatUserStat(UserStatFloat i_UserStatFloat) { string statId = i_UserStatFloat.id; RemoteStatInfo remoteStatInfo = m_RemoteStatsMapper.GetRemoteStatInfo(statId); if (remoteStatInfo != null) { string steamStatId = remoteStatInfo.steamId; if (steamStatId != "") { float statValue = i_UserStatFloat.floatValue; SteamUserStats.SetStat(steamStatId, statValue); } } }
private void CombineFloatUserStat(UserStatFloat i_UserStatFloat) { string statId = i_UserStatFloat.id; RemoteStatInfo remoteStatInfo = m_RemoteStatsMapper.GetRemoteStatInfo(statId); if (remoteStatInfo != null) { string steamStatId = remoteStatInfo.steamId; if (steamStatId != "") { float remoteValue = 0; if (SteamUserStats.GetStat(steamStatId, out remoteValue)) { i_UserStatFloat.Combine(remoteValue); } } } }
public void UnregisterFloatStatHandler(int i_StatId, UserStatValueChangedEvent <float> i_Handler) { for (int userStatIndex = 0; userStatIndex < m_UserStats.Count; ++userStatIndex) { UserStat userStat = m_UserStats[userStatIndex]; if (userStat != null) { int statId = userStat.hashId; if (statId == i_StatId) { if (userStat.type == UserStatType.Float) { UserStatFloat intUserStat = (UserStatFloat)userStat; intUserStat.onValueChangedEvent -= i_Handler; break; } } } } }
public UserStatFloat GetFloatStat(int i_StatId) { for (int userStatIndex = 0; userStatIndex < m_UserStats.Count; ++userStatIndex) { UserStat userStat = m_UserStats[userStatIndex]; if (userStat != null) { int statId = userStat.hashId; if (statId == i_StatId) { if (userStat.type == UserStatType.Float) { UserStatFloat floatUserStat = (UserStatFloat)userStat; return(floatUserStat); } } } } return(null); }
public bool TryGetFloatStatValue(int i_StatId, out float o_Value) { o_Value = 0f; for (int userStatIndex = 0; userStatIndex < m_UserStats.Count; ++userStatIndex) { UserStat userStat = m_UserStats[userStatIndex]; if (userStat != null) { int statId = userStat.hashId; if (statId == i_StatId) { if (userStat.type == UserStatType.Float) { UserStatFloat floatUserStat = (UserStatFloat)userStat; o_Value = floatUserStat.floatValue; return(true); } } } } return(false); }
// OVERRIDE public override void Initialize(StatsModule i_StatsModule) { m_Stat = i_StatsModule.GetFloatStat(m_StatId); }