Merge branch 'master' of 60.1.1.230:backend/jieling_server

back_recharge
wangyuan 2019-07-25 19:34:37 +08:00
commit 2237a35f82
12 changed files with 294 additions and 133 deletions

View File

@ -25,14 +25,14 @@ function BattleEvent:AddEvent(sEventName, fListener, pObj, bOnce)
self.m_listeners[sEventName]:Add(item)
end
function BattleEvent:RemoveEvent(sEventName, fListener)
function BattleEvent:RemoveEvent(sEventName, fListener, pObj)
if not self.m_listeners[sEventName] then
return
end
local v
for i=1, self.m_listeners[sEventName].size do
v = self.m_listeners[sEventName].buffer[i]
if v.func == fListener then
if v.func == fListener and pObj == v.obj then
itemPool:Put(v)
self.m_listeners[sEventName]:Remove(i)
break

View File

@ -868,5 +868,25 @@ local passivityList = {
role.data:SubPencentValue(propertyList[pro2], f2)
end
end,
--发动技能后,[a]概率[e]改变敌方全体[b]属性[c],持续[d]秒
--a[float],b[属性],c[float],d[int],e[改变类型]
[49] = function(role, args)
local f1 = args[1]
local pro = args[2]
local f2 = args[3]
local f3 = args[4]
local ct = args[5]
local OnSkillCastEnd = function(skill)
BattleUtil.RandomAction(f1, function ()
local arr = BattleUtil.ChooseTarget(role, 20000)
for i=1, #arr do
arr[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, f3, propertyList[pro], f2, ct))
end
end)
end
role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd)
end,
}
return passivityList

View File

@ -16,22 +16,23 @@ end)
Skill = {}
function Skill:New()
local o = {cd=0,effectList = BattleList.New(),owner=0,sp=0,spPass = 0,isTeamSkill=false }
local o = {cd=0,effectList = BattleList.New(),owner=0,sp=0,spPass = 0,isTeamSkill=false,teamSkillType=0 }
setmetatable(o, self)
self.__index = self
return o
end
function Skill:Init(role, effectData)
self.cd = effectData[1]
function Skill:Init(role, effectData, isTeamSkill)
self.cd = isTeamSkill and effectData[1] % 100 or effectData[1] --异妖技能的cd数据为类型*100 + cd
--skill = {cd, {目标id1, 效果时间, 效果1, 效果2, ...},{目标id2, 效果时间, 效果3, 效果4, ...}, ...}
--效果 = {效果类型id, 效果参数1, 效果参数2, ...}
self.effectList:Clear()
self.owner = role
self.sp = 0
self.spPass = 0
self.isTeamSkill = false
self.sp = isTeamSkill and floor(self.cd * BattleLogic.GameFrameRate) or 0
self.spPass = self.sp
self.isTeamSkill = isTeamSkill
self.teamSkillType = isTeamSkill and floor(effectData[1] / 100) or 0
self.isManual = false
for i=2, #effectData do
@ -157,8 +158,9 @@ function Skill:Cast()
end
self.owner.Event:DispatchEvent(BattleEventName.SkillCast, self)
else
self.sp = 0
self.owner.curSkill = self
BattleLogic.Event:DispatchEvent(BattleEventName.SkillCast, self.cd, self.owner) --队伍技能结构和其他相同只是cd项为对应异妖类型
BattleLogic.Event:DispatchEvent(BattleEventName.SkillCast, self)
end
--技能的施法时间计算根据当前目标id关联的持续时间取其中时间最长的一个

View File

@ -26,8 +26,8 @@ BattleLogic.Event = BattleEvent.New()
BattleLogic.BuffMgr = BuffManager.New()
local skillManualQueue = BattleQueue.New()
local playerTeamDummyRole = {camp = 0, Event = BattleLogic.Event, isTeam = true, curSkill = nil}
local enemyTeamDummyRole = {camp = 1, Event = BattleLogic.Event, isTeam = true, curSkill = nil}
local playerTeamDummyRole = {camp = 0, Event = BattleLogic.Event, isTeam = true, curSkill = nil, isDebug = false}
local enemyTeamDummyRole = {camp = 1, Event = BattleLogic.Event, isTeam = true, curSkill = nil, isDebug = false}
local playerTeamSkillList = {}
local enemyTeamSkillList = {}
local playerTeamSkillIndex
@ -49,10 +49,6 @@ BattleLogic.CurOrder = 0
local maxFrame --战斗最大用时,超时判负
local teamSkillCD = 40 * BattleLogic.GameFrameRate --异妖cd
local lastPlayerTeamSkillFrame
local lastEnemyTeamSkillFrame
local actionPool = BattleObjectPool.New(function ()
return { 0, 0 }
end)
@ -91,15 +87,15 @@ function BattleLogic.Init(maxTime, data, optionData)
playerMP = 0
enemyMP = 0
playerTeamDummyRole.isDebug = false
enemyTeamDummyRole.isDebug = false
playerTeamSkillIndex = 1
enemyTeamSkillIndex = 1
playerSkillUsable = true
enemySkillUsable = true
lastPlayerTeamSkillFrame = 0
lastEnemyTeamSkillFrame = 0
isAuto = true
BattleLogic.Event:ClearEvent()
@ -113,6 +109,7 @@ function BattleLogic.StartOrder()
if BattleLogic.CurOrder == 1 then
for i=1, #fightData.playerData do
BattleLogic.AddRole(fightData.playerData[i])
end
for i=1, #fightData.enemyData[BattleLogic.CurOrder] do
BattleLogic.AddRole(fightData.enemyData[BattleLogic.CurOrder][i])
@ -124,8 +121,7 @@ function BattleLogic.StartOrder()
end
for i=1, #fightData.playerData.teamSkill do
playerTeamSkillList[i] = skillPool:Get()
playerTeamSkillList[i]:Init(playerTeamDummyRole, fightData.playerData.teamSkill[i])
playerTeamSkillList[i].isTeamSkill = true
playerTeamSkillList[i]:Init(playerTeamDummyRole, fightData.playerData.teamSkill[i], true)
end
for i=1, #enemyTeamSkillList do
@ -134,8 +130,7 @@ function BattleLogic.StartOrder()
end
for i=1, #fightData.enemyData[BattleLogic.CurOrder].teamSkill do
enemyTeamSkillList[i] = skillPool:Get()
enemyTeamSkillList[i]:Init(enemyTeamDummyRole, fightData.enemyData[BattleLogic.CurOrder].teamSkill[i])
enemyTeamSkillList[i].isTeamSkill = true
enemyTeamSkillList[i]:Init(enemyTeamDummyRole, fightData.enemyData[BattleLogic.CurOrder].teamSkill[i], true)
end
else
BattleLogic.ClearOrder()
@ -149,8 +144,7 @@ function BattleLogic.StartOrder()
end
for i=1, #fightData.enemyData[BattleLogic.CurOrder].teamSkill do
enemyTeamSkillList[i] = skillPool:Get()
enemyTeamSkillList[i]:Init(enemyTeamDummyRole, fightData.enemyData[BattleLogic.CurOrder].teamSkill[i])
enemyTeamSkillList[i].isTeamSkill = true
enemyTeamSkillList[i]:Init(enemyTeamDummyRole, fightData.enemyData[BattleLogic.CurOrder].teamSkill[i], true)
end
end
BattleLogic.InitAggro()
@ -173,7 +167,16 @@ function BattleLogic.GetMP(camp)
end
function BattleLogic.CanManualTeamSkill()
return not isAuto and playerMP == 100 and (lastPlayerTeamSkillFrame == 0 or curFrame - lastPlayerTeamSkillFrame >= teamSkillCD)
local teamSkill = playerTeamSkillList[playerTeamSkillIndex]
return not isAuto and playerMP == 100 and teamSkill and teamSkill.sp >= teamSkill.spPass
end
function BattleLogic.GetTeamSkillCDPass()
local teamSkill = playerTeamSkillList[playerTeamSkillIndex]
if not teamSkill then
return 1
end
return teamSkill.sp / teamSkill.spPass
end
function BattleLogic.GenerateBuffId()
@ -285,6 +288,10 @@ function BattleLogic.GetOption()
return optionRecord
end
function BattleLogic.GetTeamSkillCaster(camp)
return camp == 0 and playerTeamDummyRole or enemyTeamDummyRole
end
--执行操作逻辑
function BattleLogic.ExecuteOption(option)
local opType = option[2]
@ -307,16 +314,7 @@ function BattleLogic.ExecuteOption(option)
skillManualQueue:Enqueue(role.superSkill)
end
elseif opType == 4 then --释放teamSkill
local teamSkill = playerTeamSkillList[playerTeamSkillIndex]
if teamSkill then
teamSkill:Cast()
playerTeamSkillIndex = playerTeamSkillIndex + 1
if playerTeamSkillIndex > #playerTeamSkillList then
playerTeamSkillIndex = 1
end
playerMP = 0
lastPlayerTeamSkillFrame = curFrame
end
BattleLogic.CastTeamSkill(0)
elseif opType == 5 then --设置teamSkill自动手动
isAuto = opArg == 1
elseif opType == 6 then --切换单个角色自动手动 arg == uid * 10 + auto(0手动1自动)
@ -416,30 +414,25 @@ function BattleLogic.Update()
end
end
if playerMP == 100 and playerSkillUsable and isAuto and
(lastPlayerTeamSkillFrame == 0 or curFrame - lastPlayerTeamSkillFrame >= teamSkillCD) then
for i=1, #playerTeamSkillList do
playerTeamSkillList[i].sp = min(playerTeamSkillList[i].sp + 1, playerTeamSkillList[i].spPass)
end
for i=1, #enemyTeamSkillList do
enemyTeamSkillList[i].sp = min(enemyTeamSkillList[i].sp + 1, enemyTeamSkillList[i].spPass)
end
if playerMP == 100 and playerSkillUsable and isAuto then
local teamSkill = playerTeamSkillList[playerTeamSkillIndex]
if teamSkill then
teamSkill:Cast()
playerTeamSkillIndex = playerTeamSkillIndex + 1
if playerTeamSkillIndex > #playerTeamSkillList then
playerTeamSkillIndex = 1
end
playerMP = 0
lastPlayerTeamSkillFrame = curFrame
if teamSkill.sp >= teamSkill.spPass then
BattleLogic.CastTeamSkill(0)
end
end
if enemyMP == 100 and enemySkillUsable and
(lastEnemyTeamSkillFrame == 0 or curFrame - lastEnemyTeamSkillFrame >= teamSkillCD) then
if enemyMP == 100 and enemySkillUsable then
local teamSkill = enemyTeamSkillList[enemyTeamSkillIndex]
if teamSkill then
teamSkill:Cast()
enemyTeamSkillIndex = enemyTeamSkillIndex + 1
if enemyTeamSkillIndex > #enemyTeamSkillList then
enemyTeamSkillIndex = 1
end
enemyMP = 0
lastEnemyTeamSkillFrame = curFrame
if teamSkill.sp >= teamSkill.spPass then
BattleLogic.CastTeamSkill(1)
end
end
@ -471,12 +464,46 @@ function BattleLogic.Update()
end
end
function BattleLogic.ResetTeamSkillCD(camp)
local skill = camp == 0 and playerTeamDummyRole.curSkill or enemyTeamDummyRole.curSkill
if skill then
skill.spPass = floor(skill.cd % 100 * BattleLogic.GameFrameRate)
skill.sp = skill.spPass
end
end
function BattleLogic.CastTeamSkill(camp)
if camp == 0 then
local teamSkill = playerTeamSkillList[playerTeamSkillIndex]
if teamSkill then
teamSkill:Cast()
playerTeamSkillIndex = playerTeamSkillIndex + 1
if playerTeamSkillIndex > #playerTeamSkillList then
playerTeamSkillIndex = 1
end
playerMP = 0
end
else
local teamSkill = enemyTeamSkillList[enemyTeamSkillIndex]
if teamSkill then
teamSkill:Cast()
enemyTeamSkillIndex = enemyTeamSkillIndex + 1
if enemyTeamSkillIndex > #enemyTeamSkillList then
enemyTeamSkillIndex = 1
end
enemyMP = 0
end
end
end
--Debug专用
function BattleLogic.SetDebug()
for i=1, objList.size do
local v = objList.vList[i]
v.IsDebug = not v.IsDebug
end
playerTeamDummyRole.isDebug = not playerTeamDummyRole.isDebug
enemyTeamDummyRole.isDebug = not enemyTeamDummyRole.isDebug
end
--Debug专用

View File

@ -44,14 +44,14 @@ function RoleLogic:Init(uid, data)
self.passiveList = {}
if data.skill and #data.skill > 0 then
self.skill = skillPool:Get()
self.skill:Init(self, data.skill)
self.skill:Init(self, data.skill, false)
self.skill.sp = 0
local time = max(6-self:GetRoleData(RoleDataName.Speed)/(8*(self:GetRoleData(RoleDataName.Level)+10)), 1.5)
self.skill.spPass = floor( time * BattleLogic.GameFrameRate)
end
if data.superSkill and #data.superSkill > 0 then
self.superSkill = skillPool:Get()
self.superSkill:Init(self, data.superSkill)
self.superSkill:Init(self, data.superSkill, false)
self.superSkill.spPass = floor(self.superSkill.cd * BattleLogic.GameFrameRate)
self.superSkill.sp = self.superSkill.spPass
end

View File

@ -0,0 +1,23 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.item.ItemLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.stereotype.Component;
@Component
public class EquipLockHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.EQUIP_LOCK_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
byte[] bytes = netData.parseClientProtoNetData();
PlayerInfoProto.LockEquip equipInfo = PlayerInfoProto.LockEquip.parseFrom(bytes);
ItemLogic.getInstance().equipLock(iSession,equipInfo.getType(),equipInfo.getIdList(), MessageTypeProto.MessageType.EQUIP_LOCK_RESPONSE);
}
}

View File

@ -0,0 +1,50 @@
package com.ljsd.jieling.handler.activity;
public class BlessInfoConfig {
/**
* 1-16
*/
public static final int START_CAPACITY = 16;
/**
* id
*/
public static final int CHOOSE_START_ID = 17;
/**
* id
*/
public static final int CHOOSE_END_ID = 32;
/**
* Id
*/
public static final int REWARD_VIEW_START_ID = 33;
/**
* Id
*/
public static final int REWARD_VIEW_END_ID = 48;
/**
* 0-11
*/
public static final int BLESS_PROGRESS_STATUS = 99;
/**
*
*/
public static final int LAST_REFRESH_TIME = 100;
/**
*
*/
public static final int LEGEND_REWARD_START_ID = 200;
/**
*
*/
public static final int SUPREME_REWARD_START_ID = 500;
/**
*
*/
public static final int COUNT_REWARD_START_ID = 1000;
}

View File

@ -17,6 +17,6 @@ public class BlessInitHandler extends BaseHandler {
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
ActivityLogic.getInstance().blessActivityInit(iSession, MessageTypeProto.MessageType.BLESS_INIT_RESPONSE);
// ActivityLogic.getInstance().blessActivityInit(iSession, MessageTypeProto.MessageType.BLESS_INIT_RESPONSE);
}
}

View File

@ -4,6 +4,7 @@ import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.VipPrivilegeType;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.activity.BlessInfoConfig;
import com.ljsd.jieling.ktbeans.KtEventUtils;
import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean;
import com.ljsd.jieling.logic.dao.*;
@ -590,24 +591,24 @@ public class ActivityLogic {
secretBoxSeasonTimes=0;
}
//云梦祈福初始化
public void blessActivityInit(ISession session,MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
ActivityManager activityManager = user.getActivityManager();
if(activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId()).getActivityProgressInfoMap().size()>0){
// MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"已经初始化过,不需要初始化");
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
return;
}
//祈福信息初始化
blessInfoInit(activityManager,7);
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
}
// public void blessActivityInit(ISession session,MessageTypeProto.MessageType messageType) throws Exception {
// User user = UserManager.getUser(session.getUid());
// ActivityManager activityManager = user.getActivityManager();
// if(activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId()).getActivityProgressInfoMap().size()>0){
//// MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"已经初始化过,不需要初始化");
// MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
// return;
// }
// //祈福信息初始化
// blessInfoInit(activityManager,7);
// MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
// }
/**
*
* @param activityManager
*/
private void blessInfoInit(ActivityManager activityManager,int activityId){
private ActivityMission blessInfoInit(ActivityManager activityManager,int activityId){
//第一次9种
int fixRewardPool = SBlessingConfig.sBlessingConfig.getRandomPoolId();
int fixRewardNum = SBlessingConfig.sBlessingConfig.getRandomNum();
@ -671,39 +672,42 @@ public class ActivityLogic {
ActivityMission activityMission =new ActivityMission();
for(int i=16;i>0;i--){
for(int i = BlessInfoConfig.START_CAPACITY; i>0; i--){
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
if(16-i<fixResult.length){
if(BlessInfoConfig.START_CAPACITY-i<fixResult.length){
progressInfo.setState(0);
LOGGER.info("第一次第{}个数据",16-i,fixResult[16-i]);
progressInfo.setProgrss(fixResult[16-i]);
LOGGER.info("第一次第{}个数据",BlessInfoConfig.START_CAPACITY-i,fixResult[BlessInfoConfig.START_CAPACITY-i]);
progressInfo.setProgrss(fixResult[BlessInfoConfig.START_CAPACITY-i]);
}
activityMission.updateProgressInfo(i,progressInfo);
}
for(int i=17;i<=32;i++){
for(int i=BlessInfoConfig.CHOOSE_START_ID;i<=BlessInfoConfig.CHOOSE_END_ID;i++){
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
activityMission.updateProgressInfo(i,progressInfo);
}
//初始化状态
activityMission.updateProgressInfo(99,new ActivityProgressInfo());
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo());
//初始化上次刷新时间
activityMission.updateProgressInfo(100,new ActivityProgressInfo());
if(activityMission.getActivityProgressInfoMap().get(BlessInfoConfig.LAST_REFRESH_TIME)==null){
activityMission.updateProgressInfo(BlessInfoConfig.LAST_REFRESH_TIME,new ActivityProgressInfo());
}
for(int i = 0 ; i <legendResult.length;i++){
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
progressInfo.setProgrss(legendResult[i]);
activityMission.updateProgressInfo(200+i,progressInfo);
activityMission.updateProgressInfo(BlessInfoConfig.LEGEND_REWARD_START_ID+i,progressInfo);
}
for(int i = 0 ; i <supremeResult.length;i++){
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
progressInfo.setProgrss(supremeResult[i]);
activityMission.updateProgressInfo(500+i,progressInfo);
activityMission.updateProgressInfo(BlessInfoConfig.SUPREME_REWARD_START_ID+i,progressInfo);
}
for(int i = 0 ; i < countResult.length ;i++){
ActivityProgressInfo progressInfo =new ActivityProgressInfo();
progressInfo.setProgrss(countResult[i]);
activityMission.updateProgressInfo(1000+counts[i],progressInfo);
activityMission.updateProgressInfo(BlessInfoConfig.COUNT_REWARD_START_ID+counts[i],progressInfo);
}
activityManager.addActivity(activityId,activityMission);
return activityMission;
}
//云梦请求数据
public void blessInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
@ -714,40 +718,40 @@ public class ActivityLogic {
return;
}
PlayerInfoProto.blessResponse.Builder response = getBlessInfoResponse(activityMission);
LOGGER.info("{},{},{}",response.getFixRewardList().toString(),response.getLegendRewardList().toString(),response.getSupremeRewardList().toString());
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
// LOGGER.info("{},{},{}",response.getFixRewardList().toString(),response.getLegendRewardList().toString(),response.getSupremeRewardList().toString());
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
}
private PlayerInfoProto.blessResponse.Builder getBlessInfoResponse(ActivityMission activityMission){
PlayerInfoProto.blessResponse.Builder response = PlayerInfoProto.blessResponse.newBuilder();
Map<Integer, ActivityProgressInfo> blessInfoMap = activityMission.getActivityProgressInfoMap();
//保存之前
if(blessInfoMap.get(99).getProgrss()==0){
if(blessInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()==0){
for(Map.Entry<Integer,ActivityProgressInfo> entry:blessInfoMap.entrySet()){
if(entry.getKey()/1000>0){
if(entry.getKey()/BlessInfoConfig.COUNT_REWARD_START_ID>0){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey()%1000)
.setLocationId(entry.getKey()%BlessInfoConfig.COUNT_REWARD_START_ID)
.setState(0)
.setRewardId(entry.getValue().getProgrss())
.build();
response.addCountReward(blessReward);
continue;
}else if(entry.getKey()/500>0){
}else if(entry.getKey()/BlessInfoConfig.SUPREME_REWARD_START_ID>0){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey()%500+1)
.setLocationId(entry.getKey()%BlessInfoConfig.SUPREME_REWARD_START_ID+1)
.setState(0)
.setRewardId(entry.getValue().getProgrss())
.build();
response.addSupremeReward(blessReward);
continue;
}else if(entry.getKey()/200>0){
}else if(entry.getKey()/BlessInfoConfig.LEGEND_REWARD_START_ID>0){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey()%200+1)
.setLocationId(entry.getKey()%BlessInfoConfig.LEGEND_REWARD_START_ID+1)
.setState(0)
.setRewardId(entry.getValue().getProgrss())
.build();
response.addLegendReward(blessReward);
continue;
}else if(entry.getKey()<=16){
}else if(entry.getKey()<=BlessInfoConfig.START_CAPACITY){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey())
.setState(0)
@ -758,26 +762,26 @@ public class ActivityLogic {
}
}else{//保存之后
for(Map.Entry<Integer,ActivityProgressInfo> entry:blessInfoMap.entrySet()){
if(entry.getKey()/1000>0){
if(entry.getKey()/BlessInfoConfig.COUNT_REWARD_START_ID>0){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey()%1000)
.setLocationId(entry.getKey()%BlessInfoConfig.COUNT_REWARD_START_ID)
.setState(1)
.setRewardId(entry.getValue().getProgrss())
.build();
response.addCountReward(blessReward);
continue;
}else if(entry.getKey()/500>0){
}else if(entry.getKey()/BlessInfoConfig.SUPREME_REWARD_START_ID>0){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey()%500+1)
.setLocationId(entry.getKey()%BlessInfoConfig.SUPREME_REWARD_START_ID+1)
.setState(1)
.setRewardId(entry.getValue().getProgrss())
.build();
response.addSupremeReward(blessReward);
continue;
}else if(entry.getKey()/200>0){
}else if(entry.getKey()/BlessInfoConfig.LEGEND_REWARD_START_ID>0){
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(entry.getKey()%200+1)
.setLocationId(entry.getKey()%BlessInfoConfig.LEGEND_REWARD_START_ID+1)
.setState(1)
.setRewardId(entry.getValue().getProgrss())
.build();
@ -785,21 +789,21 @@ public class ActivityLogic {
continue;
}
}
for(int i = 17;i<=48;i++){
for(int i = BlessInfoConfig.CHOOSE_START_ID;i<=BlessInfoConfig.REWARD_VIEW_END_ID;i++){
for(Map.Entry<Integer,ActivityProgressInfo> entry:blessInfoMap.entrySet()) {
if(entry.getKey()!=i){
continue;
}if (i<33){
}if (i<BlessInfoConfig.REWARD_VIEW_START_ID){
LOGGER.info("显示顺序是{}",entry.getKey());
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(i-16)
.setLocationId(i-BlessInfoConfig.START_CAPACITY)
.setState(1)
.setRewardId(entry.getValue().getProgrss())
.build();
response.addFixReward(blessReward);
}else{
CommonProto.blessReward blessReward = CommonProto.blessReward.newBuilder()
.setLocationId(i-32)
.setLocationId(i-BlessInfoConfig.CHOOSE_END_ID)
.setState(1)
.setRewardId(entry.getValue().getProgrss())
.build();
@ -809,16 +813,16 @@ public class ActivityLogic {
}
}
response.setLastRefreshTime(blessInfoMap.get(100).getProgrss());
response.setLastRefreshTime(blessInfoMap.get(BlessInfoConfig.LAST_REFRESH_TIME).getProgrss());
return response;
}
public void blessSaveOptionalReward(ISession session, int[] rewardIds, MessageTypeProto.MessageType messageType) throws Exception {
User user = UserManager.getUser(session.getUid());
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
if(activityMission.getActivityProgressInfoMap().get(99).getProgrss()!=0){
if(activityMission.getActivityProgressInfoMap().get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()!=0){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"您当前不能进行保存!");
}
if(SBlessingConfig.sBlessingConfig.getRandomNum()!=16-rewardIds.length){
if(SBlessingConfig.sBlessingConfig.getRandomNum()!=BlessInfoConfig.START_CAPACITY-rewardIds.length){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"选择数量不对");
}
for (int i = 0 ; i <rewardIds.length;i++){
@ -827,11 +831,10 @@ public class ActivityLogic {
activityMission.updateProgressInfo(i+1,info);
}
//奖励预览赋值
for(int i = 0 ;i <16;i++){
activityMission.updateProgressInfo(i+33,activityMission.getActivityProgressInfoMap().get(i+1));
for(int i = 0 ;i <BlessInfoConfig.START_CAPACITY;i++){
activityMission.updateProgressInfo(i+BlessInfoConfig.REWARD_VIEW_START_ID,activityMission.getActivityProgressInfoMap().get(i+1));
}
// activityMission.updateActivityState(-1);
activityMission.updateProgressInfo(99,new ActivityProgressInfo(-1,0));
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo(-1,0));
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
}
@ -846,17 +849,17 @@ public class ActivityLogic {
User user = UserManager.getUser(session.getUid());
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityProgressInfoMap();
if(activityProgressInfoMap.get(locationId+16).getProgrss()!=0){
if(activityProgressInfoMap.get(locationId+BlessInfoConfig.START_CAPACITY).getProgrss()!=0){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"已经抽过改格子");
return;
}
int resultRewardId = 0;
if(activityProgressInfoMap.get(99).getProgrss()==-1){
if(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()==-1){
Map<Integer, SBlessingRewardPool> poolMap = SBlessingRewardPool.sBlessingRewardPoolMap;
int[][] result = new int[16][];
int[][] result = new int[BlessInfoConfig.START_CAPACITY][];
int index = 0;
for (Map.Entry<Integer,ActivityProgressInfo> entry :activityProgressInfoMap.entrySet()) {
if(entry.getKey()>16){
if(entry.getKey()>BlessInfoConfig.START_CAPACITY){
continue;
}
int[] temp = new int[2];
@ -865,13 +868,13 @@ public class ActivityLogic {
result[index] = temp;
index++;
}
int[] order = MathUtils.randomFromWeightWithTaking(result, 16);
int[] order = MathUtils.randomFromWeightWithTaking(result, BlessInfoConfig.START_CAPACITY);
for (int i = 0; i <order.length ; i++) {
LOGGER.info("获取顺序{}",order[i]);
}
index = 0;
for (Map.Entry<Integer,ActivityProgressInfo> entry :activityProgressInfoMap.entrySet()) {
if(entry.getKey()>16){
if(entry.getKey()>BlessInfoConfig.START_CAPACITY){
continue;
}
ActivityProgressInfo progress = new ActivityProgressInfo();
@ -879,24 +882,24 @@ public class ActivityLogic {
activityMission.updateProgressInfo(entry.getKey(),progress);
index++;
}
activityMission.updateProgressInfo(99,new ActivityProgressInfo(1,0));
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo(1,0));
}
//检验消耗道具
int[][] costConfig = SBlessingConfig.sBlessingConfig.getCost();
int[][] cost = new int[1][];
int[] temp = new int[2];
temp[0] = costConfig[0][0];
temp[1] = (int)MathUtils.calABX(activityProgressInfoMap.get(99).getProgrss(),costConfig[1]);
temp[1] = (int)MathUtils.calABX(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(),costConfig[1]);
cost[0] = temp;
LOGGER.info("本次为第{}次抽取,消耗{}个数为{}",activityProgressInfoMap.get(99).getProgrss(),temp[0],temp[1]);
LOGGER.info("本次为第{}次抽取,消耗{}个数为{}",activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss(),temp[0],temp[1]);
boolean costResult = ItemUtil.itemCost(user,cost,BIReason.BLESS_CHOOSE_CONSUME,1);
if(!costResult){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"道具不足");
return;
}
if(activityProgressInfoMap.get(99).getProgrss()>0){
if(activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()>0){
for (Map.Entry<Integer,ActivityProgressInfo> entry :activityProgressInfoMap.entrySet()) {
if(entry.getKey()>16){
if(entry.getKey()>BlessInfoConfig.START_CAPACITY){
continue;
}
if(entry.getValue().getProgrss()==0){
@ -905,7 +908,7 @@ public class ActivityLogic {
resultRewardId = entry.getValue().getProgrss();
ActivityProgressInfo progress = new ActivityProgressInfo();
progress.setProgrss(entry.getValue().getProgrss());
activityMission.updateProgressInfo(locationId+16,progress);
activityMission.updateProgressInfo(locationId+BlessInfoConfig.START_CAPACITY,progress);
activityMission.updateProgressInfo(entry.getKey(),new ActivityProgressInfo());
break;
}
@ -914,16 +917,17 @@ public class ActivityLogic {
Map<Integer, SBlessingRewardPool> poolMap = SBlessingRewardPool.sBlessingRewardPoolMap;
int[][] dropItem = new int[1][];
for(Integer count:SBlessingConfig.sBlessingConfig.getCounts()){
if (count!=activityProgressInfoMap.get(99).getProgrss()){
if (count!=activityProgressInfoMap.get(BlessInfoConfig.BLESS_PROGRESS_STATUS).getProgrss()){
continue;
}
dropItem = new int[2][];
dropItem[1] = poolMap.get(activityProgressInfoMap.get(1000+count).getProgrss()).getReward();
dropItem[1] = poolMap.get(activityProgressInfoMap.get(BlessInfoConfig.COUNT_REWARD_START_ID+count).getProgrss()).getReward();
break;
}
int[] reward = poolMap.get(resultRewardId).getReward();
dropItem[0] = reward;
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItem, BIReason.BLESS_REWARD);
activityMission.updateProgressInfo(99,new ActivityProgressInfo(activityProgressInfoMap.get(99).getProgrss()+1,0));
activityMission.updateProgressInfo(BlessInfoConfig.BLESS_PROGRESS_STATUS,new ActivityProgressInfo(activityProgressInfoMap.get(99).getProgrss()+1,0));
PlayerInfoProto.blessChooseResponse response = PlayerInfoProto.blessChooseResponse.newBuilder().setReward(drop).setChooseRewardId(resultRewardId).build();
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
}
@ -940,18 +944,16 @@ public class ActivityLogic {
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"活动不可刷新");
return;
}
// boolean check = user.getPlayerInfoManager().check(SBlessingConfig.sBlessingConfig.getDailyRefreshTimes(), 1);
// if(!check){
// MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"无刷新次数");
// return;
// }
// user.getPlayerInfoManager().updateVipPrivilage(SBlessingConfig.sBlessingConfig.getDailyRefreshTimes(),1);
ActivityManager activityManager = user.getActivityManager();
ActivityMission activityMission = activityManager.getActivityMissionMap().get(SBlessingConfig.sBlessingConfig.getActivityId());
activityMission.initMissionInfo(SBlessingConfig.sBlessingConfig.getActivityId());
activityMission.updateProgressInfo(99,new ActivityProgressInfo());
activityMission.updateProgressInfo(100,new ActivityProgressInfo((int)(TimeUtils.now()/1000),0));
blessInfoInit(activityManager,7);
ActivityProgressInfo tempProgress = new ActivityProgressInfo();
//数据清空
for(Map.Entry<Integer,ActivityProgressInfo> entry:activityMission.getActivityProgressInfoMap().entrySet()){
activityMission.updateProgressInfo(entry.getKey(),tempProgress);
}
activityMission = blessInfoInit(activityManager, 7);
activityMission.updateProgressInfo(BlessInfoConfig.LAST_REFRESH_TIME,new ActivityProgressInfo((int)(TimeUtils.now()/1000),0));
PlayerInfoProto.blessRefresh res = PlayerInfoProto.blessRefresh.newBuilder().setReward(getBlessInfoResponse(activityMission).build()).build();
MessageUtil.sendMessage(session,1,messageType.getNumber(),res,true);
}

View File

@ -35,6 +35,8 @@ public class Equip extends MongoBase implements Cloneable{
private int skill;
private int isLocked;
public Equip() {
this.setRootCollection(User._COLLECTION_NAME);
}
@ -345,4 +347,13 @@ public class Equip extends MongoBase implements Cloneable{
public int getSkill() {
return skill;
}
public int getIsLocked() {
return isLocked;
}
public void updateIsLocked(int isLocked) {
updateString("isLocked",isLocked);
this.isLocked = isLocked;
}
}

View File

@ -313,4 +313,29 @@ public class ItemLogic {
builder.addAllItemInfo(itemInfos);
MessageUtil.sendMessage(iSession,1, msgId,builder.build(),true);
}
public void equipLock(ISession session, int type, List<String> equips, MessageTypeProto.MessageType messageType) throws Exception{
EquipManager equipManager = UserManager.getUser(session.getUid()).getEquipManager();
//锁定
if(type==1){
for (String equipId:equips) {
if(equipManager.getEquipMap().get(equipId).getIsLocked()!=0){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"所选装备有的已上锁!");
return;
}
equipManager.getEquipMap().get(equipId).updateIsLocked(1);
}
}
//解锁
if(type==2){
for (String equipId:equips) {
if(equipManager.getEquipMap().get(equipId).getIsLocked()!=1){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"所选装备有的未上锁!");
return;
}
equipManager.getEquipMap().get(equipId).updateIsLocked(0);
}
}
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
}
}

View File

@ -113,6 +113,7 @@ public class CBean2Proto {
.setRebuildLevel(equip.getRebuildLevel())
.setCreateTime(equip.getCreateTime())
.setSkillId(equip.getSkill())
.setIsLocked(equip.getIsLocked())
.build();
return equipProto;
}