Beispiel #1
0
    //-----------------------------------------------------------------------------
    // 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;
    }
Beispiel #2
0
 /// <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;
 }
Beispiel #3
0
    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;
    }
Beispiel #4
0
    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;
        }
    }