命石抽奖优化
parent
83634c822e
commit
1b345924de
|
@ -17,6 +17,7 @@ import com.ljsd.jieling.tools.Utils;
|
|||
import com.ljsd.jieling.util.CBean2Proto;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import com.ljsd.jieling.util.ToolsUtil;
|
||||
import config.*;
|
||||
import org.apache.commons.lang3.RandomUtils;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -374,53 +375,32 @@ public class EquipLogic {
|
|||
int[] dailyNumber = config.getDailyNumber();
|
||||
int indexOfNum = 0;
|
||||
for (int i = 0; i < dailyNumber.length; i++) {
|
||||
if (dailyNumber[i] > count){
|
||||
if (count >= dailyNumber[i]){
|
||||
indexOfNum = i;
|
||||
}
|
||||
}
|
||||
LOGGER.info("宝石抽奖,每日抽奖次数判断======================:{}",indexOfNum);
|
||||
// LOGGER.info("宝石抽奖,每日抽奖次数判断======================:{}",indexOfNum);
|
||||
|
||||
// 品质概率判断
|
||||
int[] quality = config.getQualityProbability()[indexOfNum];
|
||||
int qualityTotalWeight = Arrays.stream(quality).sum();
|
||||
int qualityResult = RandomUtils.nextInt(0, qualityTotalWeight);
|
||||
int indexOfQuality = 0;
|
||||
for (int i = 0; i < quality.length; i++) {
|
||||
if (quality[i] != 0 && qualityResult > quality[i]){
|
||||
indexOfQuality = i;
|
||||
}
|
||||
}
|
||||
int indexOfQuality = ToolsUtil.getRandomInt(quality);
|
||||
int level = config.getGemLevel()[indexOfQuality];
|
||||
|
||||
LOGGER.info("宝石抽奖,品质概率判断======================:{}",level);
|
||||
// LOGGER.info("宝石抽奖,品质概率判断======================:{}",level);
|
||||
|
||||
// 类型概率判断
|
||||
int[] typeProbability = config.getGemTypeProbability();
|
||||
int typeTotalWeight = Arrays.stream(typeProbability).sum();
|
||||
int typeResult = RandomUtils.nextInt(0, typeTotalWeight);
|
||||
int indexOfType = 0;
|
||||
for (int i = 0; i < typeProbability.length; i++) {
|
||||
if (typeResult > typeProbability[i]){
|
||||
indexOfType = i;
|
||||
}
|
||||
}
|
||||
int indexOfType = ToolsUtil.getRandomInt(typeProbability);
|
||||
int type = config.getGemType()[indexOfType];
|
||||
|
||||
LOGGER.info("宝石抽奖,类型概率判断======================:{}",type);
|
||||
// LOGGER.info("宝石抽奖,类型概率判断======================:{}",type);
|
||||
|
||||
// 获取到具体宝石
|
||||
SGemConfigNew gemConfigNew = SGemConfigNew.typeMap.get(type).get(level);
|
||||
|
||||
// 属性权重区间判断
|
||||
int[] proportion = gemConfigNew.getProportion();
|
||||
int proportionTotalWeight = Arrays.stream(proportion).sum();
|
||||
int proportionResult = RandomUtils.nextInt(0, proportionTotalWeight);
|
||||
int indexOfProportion = 0;
|
||||
for (int i = 0; i < proportion.length; i++) {
|
||||
if (proportionResult > proportion[i]){
|
||||
indexOfProportion = i;
|
||||
}
|
||||
}
|
||||
int indexOfProportion = ToolsUtil.getRandomInt(proportion);
|
||||
|
||||
// 获取命格属性
|
||||
int[] property = gemConfigNew.getPropertyNumber()[indexOfProportion];
|
||||
|
|
|
@ -4,6 +4,9 @@ import com.ljsd.GameApplication;
|
|||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
|
||||
public class ToolsUtil {
|
||||
|
||||
public static long getTimeLong(long startTimeLong, long endTimeLong, int time, long createUserTime, int type){
|
||||
|
@ -42,11 +45,34 @@ public class ToolsUtil {
|
|||
}
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public static long getEndTimeLong(long startTimeLong , long endTimeLong,int time,long createUserTime,int dayOut){
|
||||
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2);
|
||||
return timeLong + TimeUtils.DAY * dayOut;
|
||||
}
|
||||
|
||||
public static int getRandomInt(int[] array){
|
||||
int sum = Arrays.stream(array).sum();
|
||||
|
||||
Random random = new Random();
|
||||
int randomValue = random.nextInt(sum + 1);
|
||||
|
||||
int startIndex = -1;
|
||||
int runningSum = 0;
|
||||
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
runningSum += array[i];
|
||||
if (runningSum >= randomValue) {
|
||||
startIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// System.out.println("Random Value: " + randomValue);
|
||||
// System.out.println("Start Index: " + startIndex);
|
||||
|
||||
return startIndex;
|
||||
}
|
||||
|
||||
//
|
||||
// /**
|
||||
|
|
Loading…
Reference in New Issue