限时抽卡
parent
d9c2104c8c
commit
0d19b9d141
|
|
@ -234,7 +234,7 @@ public class GlobalDataManaager implements IManager {
|
||||||
new UserLevelEventHandler();
|
new UserLevelEventHandler();
|
||||||
new RemoveEventHeroHandler();
|
new RemoveEventHeroHandler();
|
||||||
new FightMainEventHandler();
|
new FightMainEventHandler();
|
||||||
ChampionshipLogic.whenStart();
|
// ChampionshipLogic.whenStart();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.error("e",e);
|
LOGGER.error("e",e);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,21 @@ import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||||
import com.ljsd.jieling.logic.activity.event.RandomCardEvent;
|
import com.ljsd.jieling.logic.activity.event.RandomCardEvent;
|
||||||
|
import com.ljsd.jieling.logic.dao.ActivityMission;
|
||||||
|
import com.ljsd.jieling.logic.dao.ActivityProgressInfo;
|
||||||
|
import com.ljsd.jieling.logic.dao.UserManager;
|
||||||
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.rank.RankContext;
|
import com.ljsd.jieling.logic.rank.RankContext;
|
||||||
import com.ljsd.jieling.logic.rank.RankEnum;
|
import com.ljsd.jieling.logic.rank.RankEnum;
|
||||||
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
|
import config.SActivityRewardConfig;
|
||||||
|
import config.SCHero;
|
||||||
|
import util.TimeUtils;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lvxinran
|
* @author lvxinran
|
||||||
|
|
@ -36,16 +47,27 @@ public class LimitRandomCardActivity extends AbstractActivity {
|
||||||
scoreById=0;
|
scoreById=0;
|
||||||
}
|
}
|
||||||
randomRank.addRank(cardEvent.getUid(),scoreById+cardEvent.getScore());
|
randomRank.addRank(cardEvent.getUid(),scoreById+cardEvent.getScore());
|
||||||
|
Predicate<int[]> pre = a-> (SCHero.getHeroByPieceId(a[0])!=null&&SCHero.getHeroByPieceId(a[0]).getNatural()>=13);
|
||||||
}
|
//
|
||||||
|
Consumer<int[]> consumer = a->RankContext.getRankEnum(RankEnum.RANDOM_CARD_PERFECT_RANK.getType()).addRank(cardEvent.getUid(), TimeUtils.now()/1000,a[0]);
|
||||||
@Override
|
Stream.of(cardEvent.getHeros()).filter(pre).forEach(consumer);
|
||||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
update(UserManager.getUser(cardEvent.getUid()),cardEvent.getScore());
|
||||||
return super.takeReward(session, missionId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityEnd() throws Exception {
|
public void onActivityEnd() throws Exception {
|
||||||
RedisUtil.getInstence().del(RedisKey.RANDOM_CARD_RANK);
|
RedisUtil.getInstence().del(RedisKey.RANDOM_CARD_RANK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void updateProgressWithUser(User user, ActivityMission activityMission, int count) {
|
||||||
|
activityMission.setValue(activityMission.getValue()+count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
|
||||||
|
User user = UserManager.getUser(session.getUid());
|
||||||
|
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||||
|
return sActivityRewardConfig.getValues()[0][0]<=activityMission.getValue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,13 @@ public class RandomCardEvent implements IEvent {
|
||||||
private int uid;
|
private int uid;
|
||||||
private int type;
|
private int type;
|
||||||
private int score;
|
private int score;
|
||||||
|
private int[][] heros;
|
||||||
|
|
||||||
public RandomCardEvent(int uid,int type, int score) {
|
public RandomCardEvent(int uid,int type, int score,int[][] heros) {
|
||||||
this.uid = uid;
|
this.uid = uid;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
|
this.heros = heros;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getType() {
|
public int getType() {
|
||||||
|
|
@ -39,4 +41,12 @@ public class RandomCardEvent implements IEvent {
|
||||||
public void setUid(int uid) {
|
public void setUid(int uid) {
|
||||||
this.uid = uid;
|
this.uid = uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int[][] getHeros() {
|
||||||
|
return heros;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeros(int[][] heros) {
|
||||||
|
this.heros = heros;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -293,7 +293,7 @@ public class HeroLogic{
|
||||||
dropHeroAndItem[j++] = tenTimesMustGetItem[i];
|
dropHeroAndItem[j++] = tenTimesMustGetItem[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Poster.getPoster().dispatchEvent(new RandomCardEvent(uid,sLotterySetting.getLotteryType(),10*sLotterySetting.getPerCount()));
|
Poster.getPoster().dispatchEvent(new RandomCardEvent(uid,sLotterySetting.getLotteryType(),SSpecialConfig.getIntegerValue(SSpecialConfig.TIME_LIMIT_RECRUITMENT_INTEGRAL)*sLotterySetting.getPerCount(),dropHeroAndItem));
|
||||||
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropHeroAndItem,BIReason.HERO_RANDOM);
|
CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, dropHeroAndItem,BIReason.HERO_RANDOM);
|
||||||
builder.setDrop(drop);
|
builder.setDrop(drop);
|
||||||
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE, builder.build(), true);
|
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HERO_RAND_RESPONSE_VALUE, builder.build(), true);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ public enum RankEnum {
|
||||||
MAIN_LEVEL_RANK(3,RedisKey.MAIN_LEVEL_RANK, MainLevelRank::new),//param1:通关关卡Id param2:无 param3:无
|
MAIN_LEVEL_RANK(3,RedisKey.MAIN_LEVEL_RANK, MainLevelRank::new),//param1:通关关卡Id param2:无 param3:无
|
||||||
MONSTER_ATTACK_RANK(4,RedisKey.MONSTER_ATTACK_RANK,MonsterAttackRank::new),//param1:兽潮层数 param2:无 param3:无
|
MONSTER_ATTACK_RANK(4,RedisKey.MONSTER_ATTACK_RANK,MonsterAttackRank::new),//param1:兽潮层数 param2:无 param3:无
|
||||||
RANDOM_CARD_RANK(10,RedisKey.RANDOM_CARD_RANK, RandomCardRank::new),//param1:抽取积分 param2:无 param3:无
|
RANDOM_CARD_RANK(10,RedisKey.RANDOM_CARD_RANK, RandomCardRank::new),//param1:抽取积分 param2:无 param3:无
|
||||||
RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new)
|
RANDOM_CARD_PERFECT_RANK(11,RedisKey.RANDOM_CARD_PERFECT_RANK,RandomCardPerfectRank::new)//param1:时间 param2:英雄tempId param3:uid
|
||||||
;
|
;
|
||||||
private int type;
|
private int type;
|
||||||
private String redisKey;
|
private String redisKey;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.rank.rankImpl;
|
||||||
|
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
|
import com.ljsd.jieling.logic.dao.GuilidManager;
|
||||||
import com.ljsd.jieling.logic.dao.UserManager;
|
import com.ljsd.jieling.logic.dao.UserManager;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.rank.IRank;
|
import com.ljsd.jieling.logic.rank.IRank;
|
||||||
|
|
@ -100,6 +101,7 @@ public abstract class AbstractRank implements IRank {
|
||||||
.setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame())
|
.setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame())
|
||||||
.setLevel(everyUser.getPlayerInfoManager().getLevel())
|
.setLevel(everyUser.getPlayerInfoManager().getLevel())
|
||||||
.setRankInfo(everyRankInfo)
|
.setRankInfo(everyRankInfo)
|
||||||
|
.setGuildName(GuilidManager.guildInfoMap.get(everyUser.getPlayerInfoManager().getGuildId()).getName())
|
||||||
.build();
|
.build();
|
||||||
builder.addRanks(everyRank);
|
builder.addRanks(everyRank);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
package com.ljsd.jieling.logic.rank.rankImpl;
|
package com.ljsd.jieling.logic.rank.rankImpl;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
import com.ljsd.jieling.logic.dao.UserManager;
|
import com.ljsd.jieling.logic.dao.UserManager;
|
||||||
import com.ljsd.jieling.logic.dao.root.User;
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
|
import com.ljsd.jieling.logic.rank.rankKey.RandomCardSpecialKey;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||||
import org.springframework.data.redis.core.ZSetOperations;
|
import org.springframework.data.redis.core.ZSetOperations;
|
||||||
|
|
@ -23,17 +25,26 @@ public class RandomCardPerfectRank extends AbstractRank {
|
||||||
@Override
|
@Override
|
||||||
public void addRank(int uid, double... data) {
|
public void addRank(int uid, double... data) {
|
||||||
String key = RedisKey.getKey(redisKey,"",false);
|
String key = RedisKey.getKey(redisKey,"",false);
|
||||||
RedisUtil.getInstence().zsetAddOne(key, UUID.randomUUID().toString(), getScore(data));
|
double[] doubles = new double[3];
|
||||||
|
System.arraycopy(data, 0, doubles, 0, data.length);
|
||||||
|
doubles[2] = uid;
|
||||||
|
// data[0]+"_"+data[1]+"_"+RedisUtil.getInstence().incrementZsetScore()
|
||||||
|
Gson gson = new Gson();
|
||||||
|
String heroKey = gson.toJson(new RandomCardSpecialKey(uid, Double.valueOf(data[1]).intValue(), RedisUtil.getInstence().incr("incr_Card", 1)));
|
||||||
|
RedisUtil.getInstence().zsetAddOne(key, heroKey, getScore(doubles));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
protected void getOptional(int index, ZSetOperations.TypedTuple<String> data, PlayerInfoProto.RankResponse.Builder builder) throws Exception {
|
||||||
User everyUser = UserManager.getUser(Double.valueOf(getParam2(data.getScore())).intValue(), true);
|
Gson gson = new Gson();
|
||||||
|
String value = data.getValue();
|
||||||
|
RandomCardSpecialKey randomCardSpecialKey = gson.fromJson(value, RandomCardSpecialKey.class);
|
||||||
|
User everyUser = UserManager.getUser(randomCardSpecialKey.getUid(), true);
|
||||||
CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder()
|
CommonProto.RankInfo everyRankInfo = CommonProto.RankInfo.newBuilder()
|
||||||
.setRank(index)
|
.setRank(index)
|
||||||
.setParam1(getParam1(data.getScore()))
|
.setParam1(getParam1(data.getScore()))
|
||||||
.setParam2(getParam2(data.getScore()))
|
.setParam2(randomCardSpecialKey.getHeroId())
|
||||||
.setParam3(getParam3(data.getScore()))
|
.setParam3(0)
|
||||||
.build();
|
.build();
|
||||||
CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder()
|
CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder()
|
||||||
.setUid(everyUser.getId())
|
.setUid(everyUser.getId())
|
||||||
|
|
@ -45,14 +56,13 @@ public class RandomCardPerfectRank extends AbstractRank {
|
||||||
.build();
|
.build();
|
||||||
builder.addRanks(everyRank);
|
builder.addRanks(everyRank);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getDataByScore(double score) {
|
public int[] getDataByScore(double score) {
|
||||||
return new int[0];
|
return new int[]{Double.valueOf(score).intValue()};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getScore(double... data) {
|
public double getScore(double... data) {
|
||||||
return data[0]+data[1]+data[2];
|
return data[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.ljsd.jieling.logic.rank.rankKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lvxinran
|
||||||
|
* @date 2019/12/9
|
||||||
|
* @discribe
|
||||||
|
*/
|
||||||
|
public class RandomCardSpecialKey {
|
||||||
|
private int uid;
|
||||||
|
private int heroId;
|
||||||
|
private long version;
|
||||||
|
|
||||||
|
public void setUid(int uid) {
|
||||||
|
this.uid = uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeroId(int heroId) {
|
||||||
|
this.heroId = heroId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersion(long version) {
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RandomCardSpecialKey(int uid, int heroId, long version) {
|
||||||
|
this.uid = uid;
|
||||||
|
this.heroId = heroId;
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUid() {
|
||||||
|
return uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeroId() {
|
||||||
|
return heroId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getVersion() {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -59,6 +59,9 @@ public class SCHero implements BaseConfig{
|
||||||
|
|
||||||
private Map<Integer, Map<Integer, ConsumeMaterialInfo>> consumeMaterialInfoOfPositionByStar;
|
private Map<Integer, Map<Integer, ConsumeMaterialInfo>> consumeMaterialInfoOfPositionByStar;
|
||||||
|
|
||||||
|
private static Map<Integer,SCHero> piecesMap;
|
||||||
|
|
||||||
|
|
||||||
public static class ConsumeMaterialInfo{
|
public static class ConsumeMaterialInfo{
|
||||||
private int groupID;
|
private int groupID;
|
||||||
private int nums;
|
private int nums;
|
||||||
|
|
@ -150,8 +153,15 @@ public class SCHero implements BaseConfig{
|
||||||
|
|
||||||
}
|
}
|
||||||
sCHero = integerSCHeroMap;
|
sCHero = integerSCHeroMap;
|
||||||
|
piecesMap = new HashMap<>();
|
||||||
|
for(Map.Entry<Integer,SCHero> hero:sCHero.entrySet()){
|
||||||
|
piecesMap.put(hero.getValue().getPiecesId(),hero.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SCHero getHeroByPieceId(int piecesId){
|
||||||
|
return piecesMap.get(piecesId);
|
||||||
|
}
|
||||||
|
|
||||||
public Map<Integer, ConsumeMaterialInfo> getConsumeMaterialInfoOfPositionByStar(int star) {
|
public Map<Integer, ConsumeMaterialInfo> getConsumeMaterialInfoOfPositionByStar(int star) {
|
||||||
return consumeMaterialInfoOfPositionByStar.get(star);
|
return consumeMaterialInfoOfPositionByStar.get(star);
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ public class SSpecialConfig implements BaseConfig {
|
||||||
public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包
|
public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包
|
||||||
public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\
|
public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\
|
||||||
public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度
|
public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度
|
||||||
|
public static final String TIME_LIMIT_RECRUITMENT_INTEGRAL = "time_limit_recruitment_integral";//限时抽卡一次积分
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() throws Exception {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue