using CommonAI.data;
using CommonAI.Zone;
using CommonAI.Zone.Instance;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XmdsCommonServer.XLS.Data;

namespace XmdsCommonSkill.Plugin.Skills
{
	// 战士天赋数据
	public class PlayerCache_Warrior : PlayerCacheBase
	{
		private int mTalnetMax;                                     // 天赋最大值

		//普攻怒气增加
		private int mNormalAtkAnger;

		public PlayerCache_Warrior(InstanceUnit unit, int talnetMaxValue, IntIntIntData refreshRule) : base(unit, refreshRule)
		{
			this.mTalnetMax = talnetMaxValue;
			//this.mTalnetUpdateTime = 0;
			this.mTalentValue = 0;
		}

		// 增加天赋点信息
		public override bool AddTalentValue(int value)
		{
			if(value <= 0)
			{
				return false;
			}

			// 基础天赋值变更
			this.mTalentValue = Math.Min(this.mTalentValue + value, this.mTalnetMax);
			//this.mTalnetUpdateTime = CommonLang.CUtils.S_LOCAL_TIMESTAMPMS;
			return base .AddTalentValue(value);
		}

		// 使用天赋(怒气/剑气)
		public override bool UseTalentValue(int value)
		{
			if (value <= 0)
			{
				return false;
			}
			else if (value > this.mTalentValue)
			{
				string stackInfo = new StackTrace().ToString();
				log.Error("UseTalentValue天赋扣除异常:" + this.mTalentValue + " - " + value + ", " + this.mOwner.PlayerUUID + ", " + stackInfo);
			}

			this.mTalentValue = Math.Max(0, this.mTalentValue - value);
			//this.mTalnetUpdateTime = CommonLang.CUtils.localTimeMS;
			return base.UseTalentValue(value);
		}

		public void SetNormalAtakAnger(int value)
		{
			this.mNormalAtkAnger = value;
		}

		public void NormalHitAddAnger()
		{
			if (this.mNormalAtkAnger > 0)
			{
				this.AddTalentValue(this.mNormalAtkAnger);
			}			
		}
	}
}