限时抽卡

back_recharge
lvxinran 2019-12-09 17:10:23 +08:00
parent d9c2104c8c
commit 0d19b9d141
10 changed files with 114 additions and 17 deletions

View File

@ -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);
}

View File

@ -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();
}
}

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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);
}

View File

@ -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];
}
}

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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 {