back_recharge
jiahuiwen 2019-03-19 19:57:44 +08:00
commit 64b0a75b7e
4 changed files with 45 additions and 32 deletions

View File

@ -16,7 +16,7 @@ public class SGameSetting implements BaseConfig {
private int initialEnergy; private int initialEnergy;
private int energyRecoverSpeed; private int[] energyRecoverSpeed;
private int[] actionPowerRormula; private int[] actionPowerRormula;
@ -59,7 +59,7 @@ public class SGameSetting implements BaseConfig {
return initialEnergy; return initialEnergy;
} }
public int getEnergyRecoverSpeed() { public int[] getEnergyRecoverSpeed() {
return energyRecoverSpeed; return energyRecoverSpeed;
} }

View File

@ -34,8 +34,6 @@ public class Hero extends MongoBase {
private int breakId; private int breakId;
private int energy;
private int createTime ; private int createTime ;
private int lastUpdateEnergyTime; private int lastUpdateEnergyTime;
@ -67,7 +65,6 @@ public class Hero extends MongoBase {
createTime = (int)(System.currentTimeMillis()/1000); createTime = (int)(System.currentTimeMillis()/1000);
lastUpdateEnergyTime = createTime; lastUpdateEnergyTime = createTime;
breakId = 0; breakId = 0;
energy = SGameSetting.getGameSetting().getInitialEnergy();
} }
public void upStar(int upStar) throws Exception { public void upStar(int upStar) throws Exception {
@ -184,12 +181,7 @@ public class Hero extends MongoBase {
return lastUpdateEnergyTime; return lastUpdateEnergyTime;
} }
public void updateEnergy(int energy,int updateTime) throws Exception {
updateString("energy",energy);
updateString("lastUpdateEnergyTime",energy);
this.energy = energy;
this.lastUpdateEnergyTime = updateTime;
}
public void setCreateTime(int createTime) throws Exception { public void setCreateTime(int createTime) throws Exception {
updateString("createTime",createTime); updateString("createTime",createTime);
@ -201,10 +193,6 @@ public class Hero extends MongoBase {
this.lastUpdateEnergyTime = lastUpdateEnergyTime; this.lastUpdateEnergyTime = lastUpdateEnergyTime;
} }
public int getEnergy() {
return energy;
}
public int getCreateTime() { public int getCreateTime() {
return createTime; return createTime;
} }

View File

@ -2,8 +2,11 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase; import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.MongoKey; import com.ljsd.jieling.db.mongo.MongoKey;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.util.MathUtils;
public class PlayerManager extends MongoBase { public class PlayerManager extends MongoBase {
@ -29,6 +32,10 @@ public class PlayerManager extends MongoBase {
private int mapId; private int mapId;
private int energy;
private int lastUpdateEnergyTime;
private long createTime; //创建时间 private long createTime; //创建时间
private String clientVersion; private String clientVersion;
@ -131,6 +138,12 @@ public class PlayerManager extends MongoBase {
} }
public void setMapId(int mapId) throws Exception { public void setMapId(int mapId) throws Exception {
if(mapId == 0){
setLastUpdateEnergyTime((int)(System.currentTimeMillis()/1000));
}
if(mapId != 0 ){
setLastUpdateEnergyTime(GlobalsDef.BATTLING);
}
updateString("mapId", mapId); updateString("mapId", mapId);
this.mapId = mapId; this.mapId = mapId;
} }
@ -153,4 +166,31 @@ public class PlayerManager extends MongoBase {
this.clientVersion = clientVersion; this.clientVersion = clientVersion;
} }
public int getEnergy() {
if(lastUpdateEnergyTime != GlobalsDef.BATTLING && energy< SGameSetting.getGameSetting().getInitialEnergy()){
int updateTime = (int)(System.currentTimeMillis()/1000);
int[] energyRecoverSpeed = SGameSetting.getGameSetting().getEnergyRecoverSpeed();
int addValue = (updateTime - lastUpdateEnergyTime)/60/energyRecoverSpeed[1] * energyRecoverSpeed[0];
if(addValue != 0){
int curEnergy = MathUtils.setBetweenWithMax(energy + addValue,0,SGameSetting.getGameSetting().getInitialEnergy());
setEnergy(curEnergy);
setLastUpdateEnergyTime(updateTime);
}
}
return energy;
}
public void setLastUpdateEnergyTime(int lastUpdateEnergyTime) {
updateString("lastUpdateEnergyTime", lastUpdateEnergyTime);
this.lastUpdateEnergyTime = lastUpdateEnergyTime;
}
public void setEnergy(int energy) {
updateString("energy", energy);
this.energy = energy;
}
public int getLastUpdateEnergyTime() {
return lastUpdateEnergyTime;
}
} }

View File

@ -26,6 +26,8 @@ public class CBean2Proto {
.setFamilyId(playerManager.getFamilyId()) .setFamilyId(playerManager.getFamilyId())
.setHead(playerManager.getHead()) .setHead(playerManager.getHead())
.setCurMapId((maxMapId == 0 && mapId == 0) ? 100 : mapId) .setCurMapId((maxMapId == 0 && mapId == 0) ? 100 : mapId)
.setEnergy(playerManager.getEnergy())
.setLastUpdateEnergyTime(playerManager.getLastUpdateEnergyTime())
.build(); .build();
return player; return player;
} }
@ -46,8 +48,6 @@ public class CBean2Proto {
if(equipByPositionMap!=null && !equipByPositionMap.isEmpty()){ if(equipByPositionMap!=null && !equipByPositionMap.isEmpty()){
equipList.addAll(equipByPositionMap.values()); equipList.addAll(equipByPositionMap.values());
} }
//todo 只能自己才能检测恢复精力
checkAndUpdateHeroEnergy(hero);
return CommonProto.Hero return CommonProto.Hero
.newBuilder() .newBuilder()
.setId(hero.getId()) .setId(hero.getId())
@ -56,26 +56,11 @@ public class CBean2Proto {
.setStar(hero.getStar()) .setStar(hero.getStar())
.setBreakId(hero.getBreakId()) .setBreakId(hero.getBreakId())
.setCreateTime(hero.getCreateTime()) .setCreateTime(hero.getCreateTime())
.setEnergy(hero.getEnergy())
.setLastUpdateEnergyTime(hero.getLastUpdateEnergyTime())
.addAllSkillIdList(hero.getSkillList()) .addAllSkillIdList(hero.getSkillList())
.addAllEquipIdList(equipList) .addAllEquipIdList(equipList)
.build(); .build();
} }
private static void checkAndUpdateHeroEnergy(Hero hero) throws Exception {
int baseEnergy = hero.getEnergy();
if(hero.getLastUpdateEnergyTime() != GlobalsDef.BATTLING && baseEnergy<SGameSetting.getGameSetting().getInitialEnergy()){
int updateTime = (int)(System.currentTimeMillis()/1000);
int addValue = (updateTime - hero.getLastUpdateEnergyTime())/60/SGameSetting.getGameSetting().getEnergyRecoverSpeed();
if(addValue == 0){
return;
}
int curEnergy = MathUtils.setBetweenWithMax(baseEnergy + addValue,0,SGameSetting.getGameSetting().getInitialEnergy());
hero.updateEnergy(curEnergy,updateTime);
}
}
public static CommonProto.Mail getMail(Mail mail){ public static CommonProto.Mail getMail(Mail mail){
CommonProto.Mail mailProto = CommonProto.Mail CommonProto.Mail mailProto = CommonProto.Mail
.newBuilder() .newBuilder()