back_recharge
lvxinran 2020-01-15 14:25:52 +08:00
commit 3721397aa0
3 changed files with 55 additions and 2 deletions

View File

@ -205,6 +205,16 @@ public class MathUtils {
return array[index][0];
}
public static int[] randomFromWeight(int[][][] arrays){
int[] result = new int[arrays.length];
int i=0;
for(int[][] array : arrays){
int index = randomFromWeightReturnIndex(array);
result[i++] = array[index][0];
}
return result;
}

View File

@ -1105,9 +1105,9 @@ public class GuildFightLogic {
user.getGuildMyInfo().setLastHurt(myHurt);
SGuildBossRewardConfig sGuildBossRewardConfig = SGuildBossRewardConfig.getIndexByHurt(myHurt);
int randomGroupId = MathUtils.randomFromWeight(sGuildBossRewardConfig.getRandomReward());
int[] randomGroupIds = MathUtils.randomFromWeight(sGuildBossRewardConfig.getRandomRewardAllGroup());
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sGuildBossRewardConfig.getReward(), 1, 0, BIReason.GUILD_BOSS_FIGHT_BASE_REWARD);
CommonProto.Drop.Builder raadomDrop = ItemUtil.drop(user, new int[]{randomGroupId}, 1, 0, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
CommonProto.Drop.Builder raadomDrop = ItemUtil.drop(user, randomGroupIds, 1, 0, BIReason.GUILD_BOSS_FIGHT_RANDOM_REWARD);
FightInfoProto.FightEndResponse.Builder fightEndResponse = FightInfoProto.FightEndResponse.newBuilder();
fightEndResponse.setEnventDrop(drop);

View File

@ -17,12 +17,39 @@ public class SGuildBossRewardConfig implements BaseConfig {
private int[][] randomReward;
private int[][][] randomRewardAllGroup;
private static TreeMap<Integer, SGuildBossRewardConfig> sGuildBossHurtRewardConfig;
@Override
public void init() throws Exception {
Map<Integer, SGuildBossRewardConfig> config = STableManager.getConfig(SGuildBossRewardConfig.class);
for(SGuildBossRewardConfig sGuildBossRewardConfig : config.values()){
int[] reward = sGuildBossRewardConfig.getReward();
int prelength=0;
int[] preReward=null;
int[][][] randomRewardAllGroupTmpPre=null;
if(sGuildBossRewardConfig.getId()!=1){
SGuildBossRewardConfig sGuildBossRewardConfigPre = config.get(sGuildBossRewardConfig.getId() - 1);
preReward=sGuildBossRewardConfigPre.getReward();
randomRewardAllGroupTmpPre=sGuildBossRewardConfigPre.getRandomRewardAllGroup();
prelength = preReward.length;
}
int rewardFinl[] = new int[reward.length+prelength];
System.arraycopy(reward,0,rewardFinl,0,reward.length);
sGuildBossRewardConfig.setReward(rewardFinl);
int[][][] randomRewardAllGroupTmp = new int[sGuildBossRewardConfig.getId()][][];
randomRewardAllGroupTmp[0] =sGuildBossRewardConfig.getRandomReward();
if(prelength>0){
System.arraycopy(preReward,0,rewardFinl,reward.length,preReward.length);
System.arraycopy(randomRewardAllGroupTmpPre,0,randomRewardAllGroupTmp,1,preReward.length);
}
sGuildBossRewardConfig.setRandomRewardAllGroup(randomRewardAllGroupTmp);
}
TreeMap<Integer, SGuildBossRewardConfig> sGuildBossHurtRewardConfigTmp = new TreeMap<>();
config.values().forEach(item ->sGuildBossHurtRewardConfigTmp.put(item.getDamage(),item));
sGuildBossHurtRewardConfig = sGuildBossHurtRewardConfigTmp;
@ -48,4 +75,20 @@ public class SGuildBossRewardConfig implements BaseConfig {
public int[][] getRandomReward() {
return randomReward;
}
public void setReward(int[] reward) {
this.reward = reward;
}
public void setRandomReward(int[][] randomReward) {
this.randomReward = randomReward;
}
public int[][][] getRandomRewardAllGroup() {
return randomRewardAllGroup;
}
public void setRandomRewardAllGroup(int[][][] randomRewardAllGroup) {
this.randomRewardAllGroup = randomRewardAllGroup;
}
}