/** 权重随机一个(intArr)(重置随机) */ public int[] randomForIntArr(ILogicEntity entity, int seedType) { int[][] intArr; if ((intArr = _intArr).Length == 0) { return(null); } int rd = 0; if (seedType == ClientRandomSeedType.Client) { rd = MathUtils.randomInt(_weight); } else { rd = entity.randomInt(_weight); } int index = 0; while (rd >= intArr[index][0]) { rd -= intArr[index++][0]; } return(intArr[index]); }
/// <summary> /// 随机一个物品(可能为空) /// </summary> public ItemData randomOne(ILogicEntity entity, int seedType) { switch (type) { case RandomItemType.Single: { int[] arr = args[0]; if (arr[0] <= 0) { return(null); } return(BaseC.logic.createItem(arr[0], arr.Length > 1 ? arr[1] : 1)); } case RandomItemType.AverageItem: { int[] arr = null; if (seedType == ClientRandomSeedType.Client) { arr = args[MathUtils.randomInt(args.Length)]; } else { arr = args[entity.randomInt(args.Length)]; } if (arr[0] <= 0) { return(null); } return(BaseC.logic.createItem(arr[0], arr.Length > 1 ? arr[1] : 1)); } case RandomItemType.WeightItem: { int[] arr = _weightTool.randomForIntArr(entity, seedType); if (arr[1] <= 0) { return(null); } return(BaseC.logic.createItem(arr[1], arr.Length > 2 ? arr[2] : 1)); } case RandomItemType.WeightCreateItem: { int[] arr = _weightTool.randomForIntArr(entity, seedType); if (arr[1] <= 0) { return(null); } ItemData data = BaseC.logic.createItemByCreateID(arr[1]); data.num = arr.Length > 2 ? arr[2] : 1; return(data); } case RandomItemType.WeightRandomItem: { int[] arr = _weightTool.randomForIntArr(entity, seedType); if (arr[1] <= 0) { return(null); } return(get(arr[1]).randomOne(entity, seedType)); } } return(null); }