public void Import(BinaryReader _in, int version)
 {
     m_ReputationCamps.Clear();
     active = _in.ReadBoolean();
     if (version < 7)
     {
         for (int i = 0; i < 2; i++)
         {
             ReputationCamp camp = new ReputationCamp();
             m_ReputationCamps[i + 5] = camp;
             camp.reputationValue     = _in.ReadInt32();
             if (version < 6)
             {
                 camp.belligerency = _in.ReadBoolean();
             }
             else
             {
                 camp.exValue = _in.ReadInt32();
             }
             camp.ResetState();
         }
     }
     else
     {
         int count = _in.ReadInt32();
         for (int i = 0; i < count; ++i)
         {
             int playerID = _in.ReadInt32();
             m_ReputationCamps[playerID] = new ReputationCamp();
             m_ReputationCamps[playerID].reputationValue = _in.ReadInt32();
             m_ReputationCamps[playerID].exValue         = _in.ReadInt32();
             m_ReputationCamps[playerID].ResetState();
         }
     }
 }
    void SetEXValueByForce(int forceID, int targetPlayerID, int value)
    {
        ReputationData data = GetReputationData(forceID);
        ReputationCamp camp = data.GetReputationCamp(targetPlayerID);

        camp.exValue = Mathf.Clamp(value, 0, ReputationLevelValue[ReputationLevelValue.Length - 1]);
        camp.ResetState();
    }
    void SetReputationValueByForce(int forceID, int targetPlayerID, int value)
    {
        ReputationData data = GetReputationData(forceID);
        ReputationCamp camp = data.GetReputationCamp(targetPlayerID);

        camp.reputationValue = Mathf.Clamp(value, 0, ReputationLevelValue[ReputationLevelValue.Length - 1]);
        camp.ResetState();
        if (null != onReputationChange)
        {
            onReputationChange(forceID, targetPlayerID);
        }
    }
        public ReputationCamp GetReputationCamp(int playerID)
        {
            ReputationCamp retCamp = null;

            if (m_ReputationCamps.ContainsKey(playerID))
            {
                retCamp = m_ReputationCamps[playerID];
            }
            else
            {
                retCamp = new ReputationCamp();
                m_ReputationCamps[playerID] = retCamp;
            }
            return(retCamp);
        }
    /// <summary>
    /// Modifies the reputation value.
    /// </summary>
    void ChangeReputationValueByForce(int forceID, int targetPlayerID, int addValue, bool changeOther = false)
    {
        ReputationData data = GetReputationData(forceID);
        ReputationCamp camp = data.GetReputationCamp(targetPlayerID);

        SetReputationValueByForce(forceID, targetPlayerID, addValue + camp.reputationValue);
        if (data.active && changeOther && PeGameMgr.IsStory)
        {
            int otherChangeValue = (int)(addValue * ((addValue > 0) ? ChangeValueProportion : (1f / ChangeValueProportion)));

            List <int> playerIDList = data.GetReputationCampIDs();
            for (int i = 0; i < playerIDList.Count; i++)
            {
                if (playerIDList[i] != targetPlayerID)
                {
                    ReputationCamp otherCamp = data.GetReputationCamp(playerIDList[i]);
                    SetReputationValueByForce(forceID, playerIDList[i], otherChangeValue + otherCamp.reputationValue);
                }
            }
        }
    }