达人活动

back_recharge
zhangshanxue 2019-09-20 19:34:41 +08:00
parent 1e6ab3dfa4
commit 5af0c05c6b
9 changed files with 251 additions and 8 deletions

View File

@ -2,6 +2,9 @@ package com.ljsd.jieling.handler.equip;
import com.ljsd.jieling.config.SEquipSign;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.activity.event.EquipEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SoulEquipUpEvent;
import com.ljsd.jieling.logic.dao.SoulEquip;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
@ -71,6 +74,7 @@ public class UpSoulEquipQuiickHandler extends BaseHandler<HeroInfoProto.UpQuickS
}
addleve += 1;
leve += 1;
Poster.getPoster().dispatchEvent(new SoulEquipUpEvent(user.getId(),equip.getEquipId(),leve));
nextNeedExp = SEquipSign.getEquipExpMap().get(nextEcfg1.getId());
}
if (full) {

View File

@ -40,5 +40,9 @@ public interface ActivityType {
int SIGN_IN = 23;//累计签到
int RECHARGE_NUM = 24;//累计充值
int ESPECIALEQUIP_EXPERT = 37;//法宝达人
int SOULEQUIP_EXPERT = 38;//魂印达人
}

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SGlobalActivity;
import com.ljsd.jieling.logic.dao.SoulEquip;
import java.util.HashMap;
import java.util.function.Function;
@ -31,6 +32,8 @@ public enum ActivityTypeEnum {
STAMINA_EXPERT(ActivityType.STAMINA_EXPERT, StaminaExpectRankActivity::new),
SIGN_IN(ActivityType.SIGN_IN, SignInSumActivity::new),
RECHARGE_NUM(ActivityType.RECHARGE_NUM, RechargeSumActivity::new),
ESPECIALEQUIP_EXPERT(ActivityType.ESPECIALEQUIP_EXPERT, EspecialEquipExpectActivity::new),
SOULEQUIP_EXPERT(ActivityType.SOULEQUIP_EXPERT, SoulEquipExpectActivity::new),
;
private int type;
private Function<Integer, AbstractActivity> toActivityFunction;

View File

@ -3,10 +3,18 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.config.SEquipConfig;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.EquipEvent;
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
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.network.session.ISession;
import java.util.Map;
class EquipExpectRankActivity extends ExpectRankActivity {
@ -20,14 +28,33 @@ class EquipExpectRankActivity extends ExpectRankActivity {
if (!(event instanceof EquipEvent))
return;
SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0);
if (sActivityRewardConfig == null)
return;
int type = sActivityRewardConfig.getValues()[0][0];
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(((EquipEvent) event).getEquipId());
if (type != sEquipConfig.getQuality())
return;
update(UserManager.getUser(((EquipEvent) event).getUid()), 1);
User user = UserManager.getUser(((EquipEvent) event).getUid());
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
for (SActivityRewardConfig sActivityRewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) {
SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(((EquipEvent) event).getEquipId());
if (sEquipConfig.getQuality() == sActivityRewardConfig.getValues()[0][0]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
if (null == activityProgressInfo)
continue;
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1);
activityMission.updateProgressInfo(sActivityRewardConfig.getId(), activityProgressInfo);
}
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
int missionProgress = activityProgressInfo.getProgrss();
if (missionProgress < values[1][0]) {
return false;
}
return true;
}
}

View File

@ -0,0 +1,59 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.config.SEquipConfig;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.*;
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.network.session.ISession;
import java.util.Map;
class EspecialEquipExpectActivity extends ExpectRankActivity {
public EspecialEquipExpectActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, EspecialEquipUpEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof EspecialEquipUpEvent))
return;
User user = UserManager.getUser(((EspecialEquipUpEvent) event).getUid());
if (null == user) {
return;
}
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
for (SActivityRewardConfig sActivityRewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) {
if (((EspecialEquipUpEvent) event).getStar() == sActivityRewardConfig.getValues()[0][0]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
if (null == activityProgressInfo)
continue;
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1);
activityMission.updateProgressInfo(sActivityRewardConfig.getId(), activityProgressInfo);
}
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
int missionProgress = activityProgressInfo.getProgrss();
if (missionProgress < values[1][0]) {
return false;
}
return true;
}
}

View File

@ -0,0 +1,61 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.config.SEquipConfig;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.event.EquipEvent;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SoulEquipUpEvent;
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.network.session.ISession;
import java.util.Map;
class SoulEquipExpectActivity extends ExpectRankActivity {
public SoulEquipExpectActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, SoulEquipUpEvent.class);
}
@Override
public void onEvent(IEvent event) throws Exception {
if (!(event instanceof SoulEquipUpEvent))
return;
User user = UserManager.getUser(((SoulEquipUpEvent) event).getUid());
if (null == user) {
return;
}
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
for (SActivityRewardConfig sActivityRewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) {
if (((SoulEquipUpEvent) event).getLeve() == sActivityRewardConfig.getValues()[0][0]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null);
if (null == activityProgressInfo)
continue;
activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1);
activityMission.updateProgressInfo(sActivityRewardConfig.getId(), activityProgressInfo);
}
}
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception {
int[][] values = sActivityRewardConfig.getValues();
int missionProgress = activityProgressInfo.getProgrss();
if (missionProgress < values[1][0]) {
return false;
}
return true;
}
}

View File

@ -0,0 +1,41 @@
package com.ljsd.jieling.logic.activity.event;
/**
*
*/
public class EspecialEquipUpEvent implements IEvent {
private int uid;
private int equipId;
private int star;
public EspecialEquipUpEvent(int uid, int equipId, int leve) {
this.uid = uid;
this.equipId = equipId;
this.star = leve;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getEquipId() {
return equipId;
}
public void setEquipId(int equipId) {
this.equipId = equipId;
}
public int getStar() {
return star;
}
public void setStar(int star) {
this.star = star;
}
}

View File

@ -0,0 +1,41 @@
package com.ljsd.jieling.logic.activity.event;
/**
*
*/
public class SoulEquipUpEvent implements IEvent {
private int uid;
private int equipId;
private int leve;
public SoulEquipUpEvent(int uid, int equipId, int leve) {
this.uid = uid;
this.equipId = equipId;
this.leve = leve;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getEquipId() {
return equipId;
}
public void setEquipId(int equipId) {
this.equipId = equipId;
}
public int getLeve() {
return leve;
}
public void setLeve(int leve) {
this.leve = leve;
}
}

View File

@ -6,6 +6,8 @@ import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.activity.event.EspecialEquipUpEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
@ -488,6 +490,7 @@ public class ItemLogic {
}
}
user.getEquipManager().upStarEspecialEquip(equipId);
Poster.getPoster().dispatchEvent(new EspecialEquipUpEvent(user.getId(),0, user.getEquipManager().getEspecialEquipMap().get(equipId).getStar()));
user.getUserMissionManager().onGameEvent(user, GameEvent.ESPECIAL_EQUIP,especialEquip.getStar()+1);
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true);
}else{