限时抽卡
parent
d9c2104c8c
commit
0d19b9d141
|
|
@ -234,7 +234,7 @@ public class GlobalDataManaager implements IManager {
|
|||
new UserLevelEventHandler();
|
||||
new RemoveEventHeroHandler();
|
||||
new FightMainEventHandler();
|
||||
ChampionshipLogic.whenStart();
|
||||
// ChampionshipLogic.whenStart();
|
||||
} catch (Exception 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.Poster;
|
||||
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.RankEnum;
|
||||
import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank;
|
||||
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
|
||||
|
|
@ -36,16 +47,27 @@ public class LimitRandomCardActivity extends AbstractActivity {
|
|||
scoreById=0;
|
||||
}
|
||||
randomRank.addRank(cardEvent.getUid(),scoreById+cardEvent.getScore());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||
return super.takeReward(session, missionId);
|
||||
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]);
|
||||
Stream.of(cardEvent.getHeros()).filter(pre).forEach(consumer);
|
||||
update(UserManager.getUser(cardEvent.getUid()),cardEvent.getScore());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityEnd() throws Exception {
|
||||
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 type;
|
||||
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.type = type;
|
||||
this.score = score;
|
||||
this.heros = heros;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
|
|
@ -39,4 +41,12 @@ public class RandomCardEvent implements IEvent {
|
|||
public void setUid(int 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];
|
||||
}
|
||||
}
|
||||
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);
|
||||
builder.setDrop(drop);
|
||||
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:无
|
||||
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_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 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.RedisUtil;
|
||||
import com.ljsd.jieling.logic.dao.GuilidManager;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.rank.IRank;
|
||||
|
|
@ -100,6 +101,7 @@ public abstract class AbstractRank implements IRank {
|
|||
.setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame())
|
||||
.setLevel(everyUser.getPlayerInfoManager().getLevel())
|
||||
.setRankInfo(everyRankInfo)
|
||||
.setGuildName(GuilidManager.guildInfoMap.get(everyUser.getPlayerInfoManager().getGuildId()).getName())
|
||||
.build();
|
||||
builder.addRanks(everyRank);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
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.RedisUtil;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
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.PlayerInfoProto;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
|
|
@ -23,17 +25,26 @@ public class RandomCardPerfectRank extends AbstractRank {
|
|||
@Override
|
||||
public void addRank(int uid, double... data) {
|
||||
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
|
||||
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()
|
||||
.setRank(index)
|
||||
.setParam1(getParam1(data.getScore()))
|
||||
.setParam2(getParam2(data.getScore()))
|
||||
.setParam3(getParam3(data.getScore()))
|
||||
.setParam2(randomCardSpecialKey.getHeroId())
|
||||
.setParam3(0)
|
||||
.build();
|
||||
CommonProto.UserRank everyRank = CommonProto.UserRank.newBuilder()
|
||||
.setUid(everyUser.getId())
|
||||
|
|
@ -45,14 +56,13 @@ public class RandomCardPerfectRank extends AbstractRank {
|
|||
.build();
|
||||
builder.addRanks(everyRank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDataByScore(double score) {
|
||||
return new int[0];
|
||||
return new int[]{Double.valueOf(score).intValue()};
|
||||
}
|
||||
|
||||
@Override
|
||||
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 static Map<Integer,SCHero> piecesMap;
|
||||
|
||||
|
||||
public static class ConsumeMaterialInfo{
|
||||
private int groupID;
|
||||
private int nums;
|
||||
|
|
@ -150,8 +153,15 @@ public class SCHero implements BaseConfig{
|
|||
|
||||
}
|
||||
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) {
|
||||
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_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\
|
||||
public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度
|
||||
public static final String TIME_LIMIT_RECRUITMENT_INTEGRAL = "time_limit_recruitment_integral";//限时抽卡一次积分
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
|
|
|||
Loading…
Reference in New Issue