//----------------------------------------------------------------------------- // Purpose: Game state has changed //----------------------------------------------------------------------------- #region public fun public void OnGameStateChange(Eachievement eNewState, bool isIncrease = true) { if (!m_bStatsValid) { return; } if (m_Stats == null || ((int)eNewState) > m_Stats.Length || (int)eNewState > m_Achievements.Length || m_Stats[(int)eNewState].IsAccomplish()) { return; } if (isIncrease) { m_Stats[(int)eNewState].IncreaseStat(); } else { m_Stats[(int)eNewState].DropStat(); } // We want to update stats the next frame. m_bStoreStats = true; }
/// <summary> /// Creates an Achievement. You must also mirror the data provided here in https://partner.steamgames.com/apps/achievements/yourappid /// </summary> /// <param name="achievement">The "API Name Progress Stat" used to uniquely identify the achievement.</param> /// <param name="name">The "Display Name" that will be shown to players in game and on the Steam Community.</param> /// <param name="desc">The "Description" that will be shown to players in game and on the Steam Community.</param> public AchievementInfo(Eachievement achievementID, Estat statID, string name, string desc, int protoId) { m_eAchievementID = achievementID; m_eStatID = statID; m_apiName = name; m_strDescription = desc; m_bAchieved = false; m_ProtoId = protoId; }
private void OnItemValueChange(Eachievement eNewState, int value) { if (!m_bStatsValid) { return; } if (m_Stats == null || ((int)eNewState) > m_Stats.Length || (int)eNewState > m_Achievements.Length || m_Stats[(int)eNewState].IsAccomplish()) { return; } m_Stats[(int)eNewState].m_StatValue = value; m_bStoreStats = true; }
private void LoadAchievement(string str) { XmlDocument doc = new XmlDocument(); StringReader reader = new StringReader(str); if (doc == null || reader == null) { return; } doc.Load(reader); XmlNode root = doc.SelectSingleNode("AchievementData"); XmlNode achNode = root.SelectSingleNode("Achievements"); XmlNode statsNode = root.SelectSingleNode("Stats"); //Achievements XmlNodeList _AchDataList = ((XmlElement)achNode).GetElementsByTagName("TriggerData"); XmlNodeList _statDataList = ((XmlElement)statsNode).GetElementsByTagName("Data"); int _achCount = _AchDataList.Count; int _statCount = _statDataList.Count; m_Achievements = new AchievementInfo[_achCount]; m_MissionAchs = new MissionAchievement[_achCount]; m_StatNames = new string[1 + _statCount]; m_Stats = new Istat[_achCount]; foreach (XmlNode node in _AchDataList) { XmlElement xe = node as XmlElement; int _achid = PETools.XmlUtil.GetAttributeInt32(xe, "achID"); int _staid = PETools.XmlUtil.GetAttributeInt32(xe, "staID"); Eachievement _achievementID = (Eachievement)_achid; Estat _statID = (Estat)_staid; string _name = PETools.XmlUtil.GetAttributeString(xe, "APIname"); string _desc = PETools.XmlUtil.GetAttributeString(xe, "AchieveDesc"); int _missionid = PETools.XmlUtil.GetAttributeInt32(xe, "MissionID"); MissionAchievement.Emisschedule _accomplishOrGet = (MissionAchievement.Emisschedule)PETools.XmlUtil.GetAttributeInt32(xe, "AccomplishOrGet"); int _protoId = PETools.XmlUtil.GetAttributeInt32(xe, "ItemProtoId"); m_Achievements[_achid] = (new AchievementInfo(_achievementID, _statID, _name, _desc, _protoId)); m_StatNames[_staid] = ""; TriggerStat mstat = new TriggerStat(); mstat.SetGoal(1); m_Stats[_achid] = mstat; m_MissionAchs[_achid] = new MissionAchievement(_missionid, _accomplishOrGet); } //stats foreach (XmlNode node in _statDataList) { XmlElement xe = node as XmlElement; int _id = PETools.XmlUtil.GetAttributeInt32(xe, "ID"); int _achid = PETools.XmlUtil.GetAttributeInt32(xe, "achID"); string _name = PETools.XmlUtil.GetAttributeString(xe, "StatName"); int _goal = PETools.XmlUtil.GetAttributeInt32(xe, "Goal"); if (m_Stats.Length > _achid && m_Stats[_achid] != null) { m_Stats[_achid].SetGoal(_goal); } m_StatNames[_id] = _name; } }