private void countNeedIncrease() { _needIncrease = false; AttributeCalculateInfo info = _info; int[] attributes = _attributes; int currentID; int maxID; int index; foreach (int k in info.increaseList) { index = info.increaseToIndex[k]; //有值 if (attributes[k] != 0) { //无上限值或还没满 if (_increaseNeedSet[index] = ((maxID = info.currentToMaxMap[currentID = info.increaseToCurrentMap[k]]) <= 0 || attributes[currentID] < attributes[maxID])) { _needIncrease = true; } } else { _increaseNeedSet[index] = false; } } }
/** 初始化 */ public static void init() { attribute = new AttributeCalculateInfo(); attribute.formulaFunc = BaseC.logic.calculateAttribute; status = new StatusCalculateInfo(); roleAttribute = new AttributeCalculateInfo(); roleAttribute.formulaFunc = BaseC.logic.calculateAttribute; }
/** 数据信息 */ public void setInfo(AttributeCalculateInfo info) { _info = info; _attributes = new int[info.size]; _attributeModifications = new bool[info.size]; _changeSet = new bool[info.size]; _normalLastAttributes = new int[info.size]; _lastDispatch = new int[info.size]; _currentMaxCache = new int[info.currentList.Length]; _dispatchList = new int[info.needDispatchList.Length]; _increaseNeedSet = new bool[info.increaseList.Length]; }
/** 加一次 */ private void increaseOnce() { AttributeCalculateInfo info = _info; bool[] increaseNeedSet = _increaseNeedSet; int type; int value; for (int i = increaseNeedSet.Length - 1; i >= 0; --i) { if (increaseNeedSet[i]) { value = getAttribute(type = info.increaseList[i]); addOneAttribute(info.increaseToCurrentMap[type], value); } } }