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 energyRecoverSpeed;
private int[] energyRecoverSpeed;
private int[] actionPowerRormula;
@ -59,7 +59,7 @@ public class SGameSetting implements BaseConfig {
return initialEnergy;
}
public int getEnergyRecoverSpeed() {
public int[] getEnergyRecoverSpeed() {
return energyRecoverSpeed;
}

View File

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

View File

@ -2,8 +2,11 @@ package com.ljsd.jieling.logic.dao;
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.logic.dao.root.User;
import com.ljsd.jieling.util.MathUtils;
public class PlayerManager extends MongoBase {
@ -29,6 +32,10 @@ public class PlayerManager extends MongoBase {
private int mapId;
private int energy;
private int lastUpdateEnergyTime;
private long createTime; //创建时间
private String clientVersion;
@ -131,6 +138,12 @@ public class PlayerManager extends MongoBase {
}
public void setMapId(int mapId) throws Exception {
if(mapId == 0){
setLastUpdateEnergyTime((int)(System.currentTimeMillis()/1000));
}
if(mapId != 0 ){
setLastUpdateEnergyTime(GlobalsDef.BATTLING);
}
updateString("mapId", mapId);
this.mapId = mapId;
}
@ -153,4 +166,31 @@ public class PlayerManager extends MongoBase {
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())
.setHead(playerManager.getHead())
.setCurMapId((maxMapId == 0 && mapId == 0) ? 100 : mapId)
.setEnergy(playerManager.getEnergy())
.setLastUpdateEnergyTime(playerManager.getLastUpdateEnergyTime())
.build();
return player;
}
@ -46,8 +48,6 @@ public class CBean2Proto {
if(equipByPositionMap!=null && !equipByPositionMap.isEmpty()){
equipList.addAll(equipByPositionMap.values());
}
//todo 只能自己才能检测恢复精力
checkAndUpdateHeroEnergy(hero);
return CommonProto.Hero
.newBuilder()
.setId(hero.getId())
@ -56,26 +56,11 @@ public class CBean2Proto {
.setStar(hero.getStar())
.setBreakId(hero.getBreakId())
.setCreateTime(hero.getCreateTime())
.setEnergy(hero.getEnergy())
.setLastUpdateEnergyTime(hero.getLastUpdateEnergyTime())
.addAllSkillIdList(hero.getSkillList())
.addAllEquipIdList(equipList)
.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){
CommonProto.Mail mailProto = CommonProto.Mail
.newBuilder()