Example #1
0
        public TriggerInstance GenerateItemTrigger(float percentile)
        {
            TriggerInstance rst = new TriggerInstance
            {
                Key = GeneratePara(key, percentile)
            };

            if (rst.TriggerData == null)
            {
                rst.Key         = "Error";
                rst.ArgvsString = "$$" + key;
                return(rst);
            }

            List <string> tmp = new List <string>();

            foreach (var p in paras)
            {
                tmp.Add(GeneratePara(p, percentile));
            }
            string argvs = string.Join(",", tmp.ToArray());

            if (!string.IsNullOrEmpty(rst.TriggerData.KeyParam))
            {
                int pos = argvs.LastIndexOf(",");
                argvs = argvs.Substring(0, pos) + "#" + argvs.Substring(pos + 1);
            }
            rst.ArgvsString = argvs;
            return(rst);
        }
Example #2
0
        public List <TriggerInstance> GenerateDifferentTriggers(List <ItemDropTip> tipPools, int count, float percentile, string tag = "")
        {
            List <ItemDropTip>     visited = new List <ItemDropTip>();
            List <TriggerInstance> rst     = new List <TriggerInstance>();

            if (tipPools.Count < count)
            {
                HSUtils.LogError("物品随机属性个数小于设定个数!模板=" + Key);
                count = tipPools.Count;
            }
            var tList = ToolsShared.GenerateRandomListNotRepeat(tipPools, count);

            for (var i = 0; i < tList.Count; i++)
            {
                var             t       = tList[i];
                TriggerInstance trigger = t.GenerateItemTrigger(percentile);
                if (trigger != null)
                {
                    trigger.Tag = tag;
                    rst.Add(trigger);
                }
            }

            return(rst);
        }
Example #3
0
        public void RemoveTrigger(TriggerInstance trigger)
        {
            if (_allTriggersMap == null)
            {
                return;
            }
            if (_mergedTriggersMap == null)
            {
                return;
            }

            //可回溯的所有词条
            if (_allTriggersMap.ContainsKey(trigger.PK))
            {
                _allTriggersMap[trigger.PK].Remove(trigger);
                //List<TriggerInstance>数量为0时从Dictionary中清除
                if (_allTriggersMap[trigger.PK].Count == 0)
                {
                    _allTriggersMap.Remove(trigger.PK);
                }
            }

            //合并后的词条
            if (_mergedTriggersMap.ContainsKey(trigger.PK))
            {
                _mergedTriggersMap[trigger.PK].KeyArgv -= trigger.KeyArgv;
                _mergedTriggersMap[trigger.PK].Count--;
                //Trigger.Count计数为0时从Dictionary中清除
                if (_mergedTriggersMap[trigger.PK].Count == 0)
                {
                    _mergedTriggersMap.Remove(trigger.PK);
                }
            }
        }
Example #4
0
 public TriggerInstance(TriggerInstance trigger)
 {
     _trigger    = trigger.TriggerData;
     Key         = trigger.Key;
     ArgvsString = trigger.ArgvsString;
     KeyArgv     = trigger.KeyArgv;
     CommonArgvs = trigger.CommonArgvs;
 }
Example #5
0
        /// <summary>
        /// 比较一个词条与目标词条的区别
        /// </summary>
        public static string GetTriggerComparedString(TriggerInstance sourceTrigger, TriggerInstance targetTrigger, bool isReverse = false)
        {
            string up   = "<color=#a9ffe0>↑↑";
            string down = "<color=#ffa9a9>↓↓";

            if (sourceTrigger.KeyArgv > targetTrigger.KeyArgv)
            {
                return(isReverse ? down : up + sourceTrigger.Desc + "</color>");
            }
            if (sourceTrigger.KeyArgv < targetTrigger.KeyArgv)
            {
                return(isReverse ? up : down + sourceTrigger.Desc + "</color>");
            }
            return(sourceTrigger.Desc);
        }
Example #6
0
        /// <summary>
        /// 比较一个词条与目标词条列表中对应词条的区别
        /// </summary>
        public static string GetTriggerComparedString(TriggerInstance sourceTrigger, List <TriggerInstance> targetTriggers, bool isReverse = false)
        {
            if (targetTriggers == null || targetTriggers.Count == 0)
            {
                return(sourceTrigger.Desc);
            }

            var targetTrigger = targetTriggers.Find(trigger => { return(trigger.Key == sourceTrigger.Key); });

            if (targetTrigger == null)
            {
                return(sourceTrigger.Desc);
            }

            return(GetTriggerComparedString(sourceTrigger, targetTrigger, isReverse));
        }
Example #7
0
        /// <summary>
        /// 增加新的TriggerInstance
        /// </summary>
        /// <param name="trigger"></param>
        public void AddTrigger(TriggerInstance trigger)
        {
            if (_allTriggersMap == null)
            {
                _allTriggersMap = new Dictionary <string, List <TriggerInstance> >();
            }
            if (_mergedTriggersMap == null)
            {
                _mergedTriggersMap = new Dictionary <string, TriggerInstance>();
            }

            //可回溯的所有词条
            if (_allTriggersMap.ContainsKey(trigger.PK))
            {
                _allTriggersMap[trigger.PK].Add(trigger);
            }
            else
            {
                _allTriggersMap.Add(trigger.PK, new List <TriggerInstance>()
                {
                    trigger
                });
            }

            //合并后的词条
            if (_mergedTriggersMap.ContainsKey(trigger.PK))
            {
                _mergedTriggersMap[trigger.PK].KeyArgv += trigger.KeyArgv;
                _mergedTriggersMap[trigger.PK].Source   = "Merged";
                _mergedTriggersMap[trigger.PK].Count++;
            }
            else
            {
                Debug.Log(trigger.Key);
                _mergedTriggersMap.Add(trigger.PK, new TriggerInstance(trigger));
            }
        }