private static Dictionary <ETalkLevel, Item> GetPlyerHealthCase()
        {
            Dictionary <ETalkLevel, Item> items = new Dictionary <ETalkLevel, Item>();

            items[ETalkLevel.Medium] = NpcRandomTalkDb.Get((int)ENpcTalkType.MainPlayer_health_medium);
            items[ETalkLevel.Low]    = NpcRandomTalkDb.Get((int)ENpcTalkType.MainPlayer_health_low);
            return(items);
        }
 public AgentInfo(ENpcTalkType type, ENpcSpeakType spType, bool canLoop = false)
 {
     _type      = type;
     _spType    = spType;
     _startTime = Time.time;
     _canLoop   = canLoop;
     _loopTime  = NpcRandomTalkDb.Get(type)._interval;
 }
        private static Dictionary <ETalkLevel, Item> GetHungerCase()
        {
            Dictionary <ETalkLevel, Item> items = new Dictionary <ETalkLevel, Item>();

            items[ETalkLevel.Medium] = NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_hunger_medium);
            items[ETalkLevel.Low]    = NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_hunger_low);
            return(items);
        }
        private static Dictionary <ETalkLevel, Item> GetPlyerComfortCase()
        {
            Dictionary <ETalkLevel, Item> items = new Dictionary <ETalkLevel, Item>();

            items[ETalkLevel.Common] = NpcRandomTalkDb.Get((int)ENpcTalkType.MainPlayer_comfort_common);
            items[ETalkLevel.Medium] = NpcRandomTalkDb.Get((int)ENpcTalkType.MainPlayer_comfort_medium);
            items[ETalkLevel.Low]    = NpcRandomTalkDb.Get((int)ENpcTalkType.MainPlayer_comfort_low);
            return(items);
        }
        public void RunAttrAgent(PeEntity peEntity)
        {
            //npc self
            List <NpcRandomTalkDb.Item> Items = NpcRandomTalkDb.GetTalkItems(peEntity);

            for (int i = 0; i < Items.Count; i++)
            {
                if (Items[i] == null || Items[i].Type == AttribType.Max || Items[i].Level == ETalkLevel.Max)
                {
                    continue;
                }

                if (!NpcEatDb.CanEatByAttr(peEntity, Items[i].Type, Items[i].TypeMax, false))
                {
                    AddAgentInfo(new AgentInfo(Items[i].TalkType, ENpcSpeakType.TopHead, true));
                }
            }


            //ask for Player
//			PeEntity palyer = null;
//			//int playerID = (int)peEntity.GetAttribute (AttribType.DefaultPlayerID);
//			if (GameConfig.IsMultiClient)
//			{
//				//get main palyer peEntity
//			}
//			else
//			{
//				if (PeCreature.Instance != null)
//				{
//					palyer = PeCreature.Instance.mainPlayer;
//				}
//			}

//			if(palyer != null)
//			{
//				Items = NpcRandomTalkDb.GetPlyerTalkItems(palyer);
//				for (int i = 0; i < Items.Count; i++)
//				{
//					if (Items[i] == null || Items[i].Type == AttribType.Max || Items[i].Level == ETalkLevel.Max)
//						continue;
//
//					AddAgentInfo(new AgentInfo(Items[i].TalkType,ENpcSpeakType.TopHead,true));
//				}
//			}
//
//			NpcRandomTalkDb.Item item = NpcRandomTalkDb.Get(ENpcTalkType.Day_to_day);
//			AddAgentInfo(new AgentInfo(item.TalkType,ENpcSpeakType.TopHead,true));

            RunAgent();
        }
        public static int GetTalkCase(int id)
        {
            NpcRandomTalkDb.Item item = NpcRandomTalkDb.Get(id);
            if (item == null)
            {
                return(-1);
            }

            if (UnityEngine.Random.value <= item._probability)
            {
                return(item.Scenario.RandCase());
            }
            return(-1);
        }
        public static int GetTalkCase(int id, out float time)
        {
            time = 0.0f;
            NpcRandomTalkDb.Item item = NpcRandomTalkDb.Get(id);
            if (item == null)
            {
                return(-1);
            }

            if (UnityEngine.Random.value <= item._probability)
            {
                time = item._interval;
                return(item.Scenario.RandCase());
            }
            return(-1);
        }
        public static int CheckAttrbCase(PESkEntity peskentity)
        {
            RandomAttrChoce attr     = new RandomAttrChoce();
            AttribType      type     = attr.RandType();
            float           curvalue = peskentity.GetAttribute(type);

            switch (type)
            {
            case AttribType.Hunger:
            {
                float maxHunger = peskentity.GetAttribute(AttribType.HungerMax);

                if (curvalue <= maxHunger * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_hunger_medium)._value &&
                    curvalue > maxHunger * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_hunger_low)._value)
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_hunger_medium).Scenario.RandCase());
                }
                else if (curvalue <= maxHunger * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_health_low)._value)
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_hunger_low).Scenario.RandCase());
                }
                else
                {
                    return(-1);
                }
            }

            //	break;
            case AttribType.Hp:
            {
                float maxHp = peskentity.GetAttribute(AttribType.HpMax);
                if (curvalue <= maxHp * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_health_medium)._value &&
                    curvalue > maxHp * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_health_low)._value)
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_health_medium).Scenario.RandCase());
                }
                else if (curvalue <= maxHp * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_health_low)._value)
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_health_low).Scenario.RandCase());
                }
                else
                {
                    return(-1);
                }
            }

            //	break;
            case AttribType.Comfort:
            {
                float maxcomfort = peskentity.GetAttribute(AttribType.ComfortMax);
                if (curvalue <= maxcomfort * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_common)._value &&
                    curvalue > maxcomfort * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_medium)._value)
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_common).Scenario.RandCase());
                }
                else if (curvalue <= maxcomfort * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_medium)._value &&
                         curvalue > maxcomfort * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_low)._value
                         )
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_medium).Scenario.RandCase());
                }
                else if (curvalue <= maxcomfort * NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_low)._value)
                {
                    return(NpcRandomTalkDb.Get((int)ENpcTalkType.Follower_comfort_low).Scenario.RandCase());
                }
                else
                {
                    return(-1);
                }
            }
            //	break;

            default:
                break;
            }
            return(-1);
        }