每日任务

back_recharge
wangyuan 2019-06-05 19:46:31 +08:00
parent 3cf9a1dd10
commit 0e8b6eda1d
14 changed files with 156 additions and 21 deletions

View File

@ -30,10 +30,12 @@ public class SRechargeCommodityConfig implements BaseConfig {
private int order;
public static Map<Integer, SRechargeCommodityConfig> rechargeCommodityConfigMap;
@Override
public void init() throws Exception {
rechargeCommodityConfigMap = STableManager.getConfig(SRechargeCommodityConfig.class);
}

View File

@ -1768,8 +1768,8 @@ public class MapLogic {
if (levelDifficulty.getState() != Global.FIGHT_CLEARANCE) {
reward = sLevelDifficultyConfig.getFirstReward();
levelDifficulty.setState(Global.FIGHT_CLEARANCE);
user.getUserMissionManager().onGameEvent(user,GameEvent.STORY_FIGHT,fightId,0);
}
user.getUserMissionManager().onGameEvent(user,GameEvent.STORY_FIGHT,fightId,0);
CommonProto.Drop.Builder drop = ItemUtil.drop(user,reward, 1, 0,BIReason.LEVELDIFFICULTY_FIGHT_REWARD);
levelDifficulty.setChallengeTimes(levelDifficulty.getChallengeTimes() +1);
//开启关卡

View File

@ -2,11 +2,17 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import java.util.Map;
public class RechargeInfo extends MongoBase{
private int saveAmt;//累计充值
private long createTime;
private Map<Integer,Integer> levelBagMap;
private Map<Integer,Integer> buyGoodsTimes;
public RechargeInfo(){
}
@ -27,4 +33,12 @@ public class RechargeInfo extends MongoBase{
public long getCreateTime() {
return createTime;
}
public Map<Integer, Integer> getLevelBagMap() {
return levelBagMap;
}
public Map<Integer, Integer> getBuyGoodsTimes() {
return buyGoodsTimes;
}
}

View File

@ -37,7 +37,7 @@ public class UserMissionManager extends MongoBase {
}
break;
case DAILY_REFRESH:
/* Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
int type = (int)parm[0];
if(type == 0){
if( dailyMissionIdsType.getDoingMissionIds().isEmpty() && dailyMissionIdsType.getFinishMissionIds().isEmpty() && dailyMissionIdsType.getRewardedMissionIds().isEmpty() ){
@ -49,7 +49,7 @@ public class UserMissionManager extends MongoBase {
dailyCumulationData.reset();
updateString("dailyCumulationData",dailyCumulationData);
}
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);*/
dailyMissionIdsType.getDoingMissionIds().addAll(missionIds);
updateString("dailyMissionIdsType",dailyMissionIdsType);
@ -66,7 +66,7 @@ public class UserMissionManager extends MongoBase {
break;
case DAILY_MISSION_REWARD:{
dailyMissionIdsType.rewardMission((int)parm[0], missionTypeEnumListMap.get(GameMisionType.DAILYMISSION));
calCumulationDataResult(user,MissionType.FINSIH_DAYILY_TIMES,missionTypeEnumListMap,1);
calCumulationDataResult(user,MissionType.FINSIH_DAYILY_TIMES,missionTypeEnumListMap,1,(int)parm[0]);
}
break;
}

View File

@ -259,6 +259,10 @@ public class WorkShopLogic {
int uid=session.getUid();
User user = UserManager.getUser(uid);
SWorkShopEquipmentConfig sWorkShopEquipmentConfig = SWorkShopEquipmentConfig.getsWorkShopEquipmentConfigMap().get(equipTid);
if(sWorkShopEquipmentConfig == null){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"equipTid not exists");
return;
}
if(!checkIsUnlock(GlobalsDef.WORK_CREATE_TYPE,sWorkShopEquipmentConfig.getType(),user.getWorkShopController(),sWorkShopEquipmentConfig.getOpenRules(),sWorkShopEquipmentConfig.getId())){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"未开");
return;

View File

@ -217,6 +217,9 @@ public class MissionLoigc {
case BUY_GOLD_TIMES:
count=cumulationData.buyGoldTimes;
break;
case BUY_STAMINA_TIMES:
count=cumulationData.buyStaminaTimes;
break;
case WORKSHOP_CREATE_EQUIP_NUMS:
count=cumulationData.createEquips;
break;

View File

@ -19,6 +19,7 @@ public class ArenaChallengeManager implements BaseDataManager{
}else if(missionType == MissionType.ARENA_FIGHTSUCCES_TIMES){
if((int)parm[0] == 1){
data.arenaFightsuccesTimes++;
result = new CumulationData.Result(missionType);
}
}
return result;

View File

@ -8,12 +8,14 @@ public class BuyGoodsManager implements BaseDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int itemId = (int)parm[0];
int itemNum = (int)parm[0];
int itemNum = (int)parm[1];
if(missionType == MissionType.BUY_GOLD_TIMES && itemId == Global.GOLD){
data.buyGoldTimes = data.buyGoldTimes + itemNum;
return new CumulationData.Result(missionType);
}else if(missionType == MissionType.BUY_STAMINA_TIMES && itemId == Global.STAMINA){
data.buyStaminaTimes = data.buyStaminaTimes + itemNum;
return new CumulationData.Result(missionType);
}
return new CumulationData.Result(missionType);
return null;
}
}

View File

@ -48,6 +48,8 @@ public class DataManagerDistributor {
judges.put(MissionType.HERO_LEVLE_TIMES,new HeroLevelUpManager());
judges.put(MissionType.ARENA_FIGHTSUCCES_TIMES,new ArenaChallengeManager());
judges.put(MissionType.FINSIH_DAYILY_TIMES,new FinishDailyManager());
}
public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception {

View File

@ -11,24 +11,40 @@ public class FightDataManager implements BaseDataManager{
CumulationData.Result result = null;
int fightId = (int)parm[0];
int fightType = (int)parm[1];// 0: 故事副本 1 普通副本
if(fightType == 0 && missionType == MissionType.LEVEL_STORY_PASS){
LevelDifficulty levelDifficulty = SLevelDifficultyConfig.getLevelDifficultyMap().get(fightId);
int type = levelDifficulty.getType();
Integer maxFightId = data.getHeroLevleCountMap().get(type);
if(maxFightId!=null){
if(fightId>maxFightId){
if(fightType == 0){
if(missionType == MissionType.LEVEL_STORY_TIMES){
data.levelStoryTimes++;
result = new CumulationData.Result(missionType);
}else if(missionType == MissionType.LEVEL_STORY_PASS){
LevelDifficulty levelDifficulty = SLevelDifficultyConfig.getLevelDifficultyMap().get(fightId);
int type = levelDifficulty.getType();
Integer maxFightId = data.getHeroLevleCountMap().get(type);
if(maxFightId!=null){
if(fightId>maxFightId){
data.getHeroLevleCountMap().put(type,fightId);
result = new CumulationData.Result(missionType);
}
}else{
data.getHeroLevleCountMap().put(type,fightId);
result = new CumulationData.Result(missionType);
}
}else{
data.getHeroLevleCountMap().put(type,fightId);
result = new CumulationData.Result(missionType);
}
}
if(fightType == 1 && (missionType == MissionType.GENERAL_STORY_PASS || missionType == MissionType.HERO_STORY_PASS)){
data.addExploreFight(fightId);
result = new CumulationData.Result(missionType);
if(fightType == 1){
if(missionType == MissionType.GENERAL_STORY_TIMES){
data.generalStoryTimes++;
result = new CumulationData.Result(missionType);
}else if(missionType == MissionType.HERO_LEVLE_TIMES){
data.heroStoryTimes++;
result = new CumulationData.Result(missionType);
}else if(missionType == MissionType.GENERAL_STORY_PASS || missionType == MissionType.HERO_STORY_PASS){
data.addExploreFight(fightId);
result = new CumulationData.Result(missionType);
}
}
return result;
}

View File

@ -0,0 +1,17 @@
package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.config.SDailyTasksConfig;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.mission.MissionType;
public class FinishDailyManager implements BaseDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int missionId = (int) parm[0];
if(SDailyTasksConfig.getSDailyTasksConfigById(missionId).getType()!= MissionType.FINSIH_DAYILY_TIMES.getMissionTypeValue()){
data.finsihDayilyTimes++;
}
return new CumulationData.Result(missionType);
}
}

View File

@ -1,5 +1,6 @@
package com.ljsd.jieling.logic.mission.event;
import com.ljsd.jieling.config.SDailyTasksConfig;
import com.ljsd.jieling.config.STaskConfig;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
@ -103,7 +104,7 @@ public class MissionEventDistributor {
typeList.add(MissionType.HERO_STORY_TIMES);
typeList.add(MissionType.LEVEL_STORY_TIMES);
typeList.add(MissionType.HERO_LEVLE_TIMES);
typeList.add(MissionType.GENERAL_STORY_TIMES);
eventEnumListMap.put(GameEvent.STORY_FIGHT,typeList);
eventProcessor.put(GameEvent.STORY_FIGHT,new CumulationDataEventProcessor());
@ -174,6 +175,10 @@ public class MissionEventDistributor {
if (missionStateChangeInfos.size() != 0) {
sendMissionUpdate(session,user,missionStateChangeInfos,GameMisionType.VIPMISSION);
}
List<MissionStateChangeInfo> dailyMissioStateInfos = missionTypeEnumListMap.get(GameMisionType.DAILYMISSION);
if (dailyMissioStateInfos.size() != 0) {
sendMissionUpdate(session,user,dailyMissioStateInfos,GameMisionType.DAILYMISSION);
}
}
}
@ -188,11 +193,19 @@ public class MissionEventDistributor {
STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId());
progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sTaskConfig.getTaskType(),sTaskConfig.getTaskValue()[0]);
}
if(gameMisionType == GameMisionType.DAILYMISSION){
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId());
progress= MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getCumulationData(),sDailyTasksConfig.getType(),sDailyTasksConfig.getValues()[0]);
}
}else if(missionState == MissionState.FINISH){
if(gameMisionType == GameMisionType.VIPMISSION){
STaskConfig sTaskConfig = STaskConfig.getsTaskConfigById(missionStateChangeInfo.getMissionId());
progress=sTaskConfig.getTaskValue()[1];
}
if(gameMisionType == GameMisionType.DAILYMISSION){
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionStateChangeInfo.getMissionId());
progress= sDailyTasksConfig.getValues()[1];
}
}
builder.addUserMissionInfo(CommonProto.UserMissionInfo.newBuilder().setMissionId(missionStateChangeInfo.getMissionId()).setType(gameMisionType.getType()).setState(state).setProgress(progress));
}

View File

@ -1,13 +1,74 @@
package com.ljsd.jieling.logic.store;
import com.ljsd.jieling.config.SRechargeCommodityConfig;
import com.ljsd.jieling.logic.dao.RechargeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
/**
* 西
*/
public class BuyGoodsLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(BuyGoodsLogic.class);
public void buyGoods(ISession session,int goodsId){
}
public void sendGoods(int uid,int goodsId) throws Exception {
User user = UserManager.getUser(uid);
SRechargeCommodityConfig sRechargeCommodityConfig = SRechargeCommodityConfig.rechargeCommodityConfigMap.get(goodsId);
RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo();
Map<Integer, Integer> buyGoodsTimes = rechargeInfo.getBuyGoodsTimes();
Integer buyCount = buyGoodsTimes.get(goodsId);
if(buyCount ==null){
buyCount = 0;
}
buyCount=buyCount+1;
int limit = sRechargeCommodityConfig.getLimit();
if(limit!=0){
if(buyCount>limit){
LOGGER.error("the uid={},the goodId={}, is over limit={}",uid,goodsId,buyCount);
return;
}
}
if(buyCount == 1){
int[][] firstMultiple = sRechargeCommodityConfig.getFirstMultiple();
int firstInvest = sRechargeCommodityConfig.getFirstInvest();
}
int saveAmt = rechargeInfo.getSaveAmt();
int isDiscount = sRechargeCommodityConfig.getIsDiscount();
int price =sRechargeCommodityConfig.getPrice();
if(isDiscount!=0){
price=(int)(sRechargeCommodityConfig.getPrice() * (10 + isDiscount)/10f);
}
rechargeInfo.setSaveAmt(price+saveAmt);
int[][] baseReward = sRechargeCommodityConfig.getBaseReward();
buyGoodsTimes.put(goodsId,buyCount+1);
}
public void getGoodsBagInfo(int uid) throws Exception {
User user = UserManager.getUser(uid);
long createTime = user.getPlayerInfoManager().getCreateTime();
RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo();
long now = TimeUtils.now();
Map<Integer, Integer> buyGoodsTimes = rechargeInfo.getBuyGoodsTimes();
for(SRechargeCommodityConfig sRechargeCommodityConfig :SRechargeCommodityConfig.rechargeCommodityConfigMap.values()){
int limit = sRechargeCommodityConfig.getLimit();
int goodsId = sRechargeCommodityConfig.getId();
if(limit!=0){
Integer integer = buyGoodsTimes.get(goodsId);
}
}
}
}

View File

@ -191,7 +191,7 @@ public class StoreLogic {
int goodsNum = sStoreConfig.getGoods()[1]*itemNum;
String reward = goodsId +"#"+goodsNum;
CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.STORE_BUY_ITEM);
user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,goodsId,goodsNum);
user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,goodsId,itemNum);
PlayerInfoProto.BuyStoreItemResponse builder = PlayerInfoProto.BuyStoreItemResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(iSession, 1,msgId, builder, true);
}