public static void AddNewCache(CacheRec _cacheRec) { if (curCacheFile?.recList == null) { #if UNITY_EDITOR Debug.Log("Butterfly:no valid CacheFile, pls Check BeginCache() firstly!"); #else MessageBox.Show("Butterfly:no valid CacheFile, pls Check BeginCache() firstly!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); #endif } curCacheFile?.recList?.Add(_cacheRec); }
public static string ShowRec(CacheFile _recFile) { StringBuilder _sBuilder = new StringBuilder(); _sBuilder.AppendLine($"战场ID:{_recFile.BattleID}"); _sBuilder.AppendLine($"战场类型:{_recFile.eCombatType}"); _sBuilder.AppendLine($"时间:{_recFile.dateTime}"); if (_recFile.UserIDs != null && _recFile.UserIDs.Length > 1) { _sBuilder.AppendLine($"发起者ID:{_recFile.UserIDs[0]}, 被攻击者:{_recFile.UserIDs[1]}"); } for (offsetIdx = 0; offsetIdx < _recFile.recList.Count; offsetIdx++) { CacheRec _rec = _recFile.recList[offsetIdx]; if (rule.MsgTypes.Count <= _rec.actionType) { continue; } //先识别消息类型 var _name = rule.MsgTypes[_rec.actionType]; _sBuilder.Append("【bFps:").Append(_rec.bFps).Append("->"); _sBuilder.Append("eFps:").Append(_rec.eFps).Append("】 "); if (rule.rules.TryGetValue(_name, out var _ruleUnit)) { var _dic = new Dictionary <string, object>(); for (var i = 0; i < _rec.recUnits.Count; i++) { if (i >= _ruleUnit.units.Count) { continue; } //var _value = _rec.recUnits[i].value; var _value = _rec.recUnits[i]; if (_ruleUnit.units[i].StartsWith("E_")) { //认为是枚举 if (rule.enumDescribes.TryGetValue(_ruleUnit.units[i], out var _list)) { if (int.TryParse(_value.ToString(), out var _enumIdx) && _list.Count > _enumIdx) { if (_dic.ContainsKey(_ruleUnit.units[i])) { throw new System.Exception($"{_name}消息中已存在{_ruleUnit.units[i]}key,同一key不可以使用多次!"); } _dic.Add(_ruleUnit.units[i], _list[_enumIdx]); continue; } } } if (_dic.ContainsKey(_ruleUnit.units[i])) { throw new System.Exception($"{_name}消息中已存在{_ruleUnit.units[i]}key,同一key不可以使用多次!"); } _dic.Add(_ruleUnit.units[i], _value); } var _describe = _ruleUnit.describe; int _idx = 0; foreach (var _d in _dic) { var _colStr = "#FF0000"; if (colorList.Count > _idx) { _colStr = colorList[_idx]; } //_describe = _describe.Replace($"[{_d.Key}]", $"<color={_colStr}>{_d.Value}</color>"); _describe = _describe.Replace($"[{_d.Key}]", $"{_d.Value}"); _idx++; } _sBuilder.AppendLine(_describe); } } return(_sBuilder.ToString()); }