fix goods
parent
5dde031242
commit
a142e3d3d8
|
@ -44,12 +44,17 @@ public abstract class Creature extends SceneActor{
|
|||
setStateType(StateType.MOVEABLE);
|
||||
}
|
||||
|
||||
|
||||
public void setMineral(int mineral) {
|
||||
this.mineral = mineral;
|
||||
}
|
||||
|
||||
public void tick(){
|
||||
move(null);
|
||||
}
|
||||
|
||||
public void setMineral(int mineral) {
|
||||
this.mineral = mineral;
|
||||
public void addMineral(int mineral) {
|
||||
this.mineral += mineral;
|
||||
}
|
||||
|
||||
public void exec(int tyep, Object parm){
|
||||
|
@ -66,10 +71,22 @@ public abstract class Creature extends SceneActor{
|
|||
|
||||
@Override
|
||||
public boolean checkCommand(int commandType,Object parm){
|
||||
path.clear();
|
||||
getScene().processEventUpdate(EventType.SCENEACTORE_UPDATE,getId());
|
||||
boolean result = super.checkCommand(commandType,parm);
|
||||
if(result){
|
||||
if(commandType == 1){
|
||||
return CellUtil.isContinuous(getPos(), (List<Integer>) parm);
|
||||
List<Integer> pathTmp = (List<Integer>) parm;
|
||||
System.out.println("the uid="+getId() + " " + pathTmp);
|
||||
System.out.println(getPos());
|
||||
if(getPos()!=pathTmp.get(0)){
|
||||
return false;
|
||||
}
|
||||
boolean continuous = CellUtil.isContinuous(getPos(), (List<Integer>) parm);
|
||||
if(continuous){
|
||||
continuous = canMoveNext(pathTmp.get(1), false);
|
||||
}
|
||||
return continuous;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
@ -78,7 +95,7 @@ public abstract class Creature extends SceneActor{
|
|||
//用户移动到新位置, 返回下一个点的坐标,用户展示客户端的转向,及模拟移动
|
||||
public void move(List<Integer> path){
|
||||
long timestamp = System.currentTimeMillis();
|
||||
checkUpdateBuffer(timestamp);
|
||||
checkUpdateBuffer(timestamp,path != null);
|
||||
if(getStateType() != StateType.MOVEABLE){
|
||||
return;
|
||||
}
|
||||
|
@ -126,6 +143,9 @@ public abstract class Creature extends SceneActor{
|
|||
int oldXY=getPos();
|
||||
int pathSize = path.size();
|
||||
for(int i=0; i<moveDistance && i<pathSize; i++){
|
||||
if(!canMoveNext(path.get(0),true)){
|
||||
return getPos();
|
||||
}
|
||||
setPos(path.remove(0));
|
||||
cachePath.push(getPos());
|
||||
if(checkEventTrigger(timestamp)){
|
||||
|
@ -139,6 +159,24 @@ public abstract class Creature extends SceneActor{
|
|||
return curPos;
|
||||
}
|
||||
|
||||
public boolean canMoveNext(int nextPath,boolean update){
|
||||
for(SceneActor sceneActor : getScene().getSceneActorMap().values()){
|
||||
if(sceneActor == this) {
|
||||
continue;
|
||||
}
|
||||
if(sceneActor.getType()!=ActorType.Mineral && sceneActor.getPos() == nextPath){
|
||||
if(update){
|
||||
path.clear();
|
||||
getScene().processEventUpdate(EventType.SCENEACTORE_UPDATE,this.getId());
|
||||
System.out.println("can not move next" + getId() + " hit the " + sceneActor.getId());
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void whenTriggerEvent(EffectBuffer effectBuffer,long timestamp){
|
||||
this.addOrUpdateBuffer(effectBuffer); //战斗buffer
|
||||
//打断自己行使路线 广播自己状态 位置信息
|
||||
|
@ -149,7 +187,7 @@ public abstract class Creature extends SceneActor{
|
|||
public boolean checkEventTrigger(long timestamp){
|
||||
Scene scene = getScene();
|
||||
int curPos = getPos();
|
||||
Set<Integer> xySet = CellUtil.getSurroundPos(15,15,curPos);
|
||||
Set<Integer> xySet = CellUtil.getSurroundPos(15,20,curPos);
|
||||
Map<Integer, SceneActor> sceneActorMap = scene.getSceneActorMap();
|
||||
for(SceneActor sceneActor : sceneActorMap.values()){
|
||||
if(sceneActor == this) {
|
||||
|
@ -172,32 +210,46 @@ public abstract class Creature extends SceneActor{
|
|||
triggerEvent=1;
|
||||
}
|
||||
}
|
||||
if(type == ActorType.Mineral && !sceneActor.getBufferMap().containsKey(2)){
|
||||
if(type == ActorType.Mineral && this.getType() == ActorType.Player && !checkContainBuffer(2)){
|
||||
if(curPos == sceneActor.getPos()){
|
||||
triggerEvent=2;
|
||||
path.clear();
|
||||
}
|
||||
}
|
||||
if(type == ActorType.Monster || type == ActorType.Player){
|
||||
if(getStateType()!=StateType.FROZEN &&sceneActor.getStateType()!= StateType.FROZEN&& xySet.contains(sceneActor.getPos())){
|
||||
triggerEvent=3;
|
||||
setStateType(StateType.FROZEN);
|
||||
if(type != ActorType.Monster){
|
||||
path.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(triggerEvent!=0){
|
||||
int randomResult = MathUtils.randomInt(10) > 5 ?0:1;
|
||||
EffectBuffer effectBuffer = new EffectBuffer(getScene().getBufferId(),triggerEvent, timestamp, timestamp + 5000,getId(), sceneActor.getId(), randomResult&1);
|
||||
EffectBuffer othereffectBuffer = new EffectBuffer(getScene().getBufferId(),triggerEvent, timestamp, timestamp + 5000,sceneActor.getId(),getId(), randomResult^1);
|
||||
whenTriggerEvent(effectBuffer,timestamp);
|
||||
sceneActor.whenTriggerEvent(othereffectBuffer,timestamp);
|
||||
result = true;
|
||||
if(this.getType() == ActorType.Player){
|
||||
EffectBuffer effectBuffer = new EffectBuffer(getScene().getBufferId(),triggerEvent, timestamp, timestamp + 6000,getId(), sceneActor.getId(), randomResult&1);
|
||||
whenTriggerEvent(effectBuffer,timestamp);
|
||||
result = true;
|
||||
}
|
||||
if(sceneActor.getType() == ActorType.Player){
|
||||
EffectBuffer othereffectBuffer = new EffectBuffer(getScene().getBufferId(),triggerEvent, timestamp, timestamp + 6000,sceneActor.getId(),getId(), randomResult^1);
|
||||
sceneActor.whenTriggerEvent(othereffectBuffer,timestamp);
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean checkContainBuffer(int type){
|
||||
Map<Integer, EffectBuffer> bufferMap = this.getBufferMap();
|
||||
Iterator<Map.Entry<Integer, EffectBuffer>> iterator = bufferMap.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext()){
|
||||
Map.Entry<Integer, EffectBuffer> next = iterator.next();
|
||||
if(next.getValue().getType() == type){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setLife(Life life) {
|
||||
|
|
|
@ -66,4 +66,17 @@ public class EffectBuffer {
|
|||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EffectBuffer{" +
|
||||
"id=" + id +
|
||||
", type=" + type +
|
||||
", startTime=" + startTime +
|
||||
", endTime=" + endTime +
|
||||
", target=" + target +
|
||||
", caster=" + caster +
|
||||
", values=" + values +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,28 +5,36 @@ package com.ljsd.jieling.battle.actor;
|
|||
public class Life {
|
||||
|
||||
|
||||
private int curMp;
|
||||
private int curHp;
|
||||
|
||||
private int maxMp;
|
||||
|
||||
public Life(int curMp, int maxMp) {
|
||||
this.curMp = curMp;
|
||||
this.curHp = curMp;
|
||||
this.maxMp = maxMp;
|
||||
}
|
||||
|
||||
public long reduceHp(int changeValue) {
|
||||
public int reduceHp(int changeValue) {
|
||||
if (changeValue <= 0) {
|
||||
return this.curMp;
|
||||
return this.curHp;
|
||||
}
|
||||
return this.curMp - changeValue;
|
||||
if(this.curHp <changeValue){
|
||||
int temp = curHp;
|
||||
curHp =0;
|
||||
return temp;
|
||||
}
|
||||
this.curHp -= changeValue;
|
||||
return changeValue;
|
||||
}
|
||||
|
||||
|
||||
public int getCurMp() {
|
||||
return curMp;
|
||||
public int getCurHp() {
|
||||
return curHp;
|
||||
}
|
||||
|
||||
public int getMaxMp() {
|
||||
return maxMp;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -10,15 +10,13 @@ import com.ljsd.jieling.protocols.MessageTypeProto;
|
|||
import com.ljsd.jieling.protocols.SceneFight;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
public class Scene implements Runnable{
|
||||
private int bufferId;
|
||||
private int mapId; //地图id
|
||||
private int state;
|
||||
private Map<Integer,SceneActor> sceneActorMap = new HashMap<>(3);
|
||||
private BlockingUniqueQueue<Command> commandBlockingUniqueQueue = new BlockingUniqueQueue<>();
|
||||
|
||||
|
@ -42,12 +40,16 @@ public class Scene implements Runnable{
|
|||
|
||||
|
||||
public void tick() throws InterruptedException {
|
||||
for(SceneActor sceneActor : sceneActorMap.values()){
|
||||
sceneActor.tick();
|
||||
Iterator<Map.Entry<Integer, SceneActor>> iterator = sceneActorMap.entrySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
iterator.next().getValue().tick();
|
||||
}
|
||||
|
||||
//消息广播
|
||||
if(msgUpdate){
|
||||
for(Integer removeId : builder.getRemoveActorIdList()){
|
||||
sceneActorMap.remove(removeId);
|
||||
}
|
||||
for(SceneActor sceneActor : sceneActorMap.values()){
|
||||
if(sceneActor.getType() != ActorType.Npc){
|
||||
if(willUpdateActors.contains(sceneActor.getId())){
|
||||
|
@ -58,7 +60,7 @@ public class Scene implements Runnable{
|
|||
for(SceneActor sceneActor : sceneActorMap.values()){
|
||||
if(sceneActor.getType() == ActorType.Player){
|
||||
ISession sessionByUid = OnlineUserManager.getSessionByUid(sceneActor.getId());
|
||||
if(sessionByUid!=null){
|
||||
if(sessionByUid!=null && sceneActor.getGameState()==StateType.READYED_STATE){
|
||||
MessageUtil.sendIndicationMessage(sessionByUid,1, MessageTypeProto.MessageType.SCENE_MSG_UPDATE_INDICATION_VALUE,builder.build(),true);
|
||||
}
|
||||
}
|
||||
|
@ -89,7 +91,6 @@ public class Scene implements Runnable{
|
|||
break;
|
||||
case SCENEACTORE_REMOVE:
|
||||
int deadId = (int) parm;
|
||||
sceneActorMap.remove(deadId);
|
||||
builder.addRemoveActorId(deadId);
|
||||
break;
|
||||
}
|
||||
|
@ -105,7 +106,7 @@ public class Scene implements Runnable{
|
|||
}
|
||||
tick();
|
||||
}catch (Exception e){
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -123,4 +124,13 @@ public class Scene implements Runnable{
|
|||
public int getBufferId() {
|
||||
return bufferId++;
|
||||
}
|
||||
|
||||
|
||||
public int getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(int state) {
|
||||
this.state = state;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.ljsd.jieling.battle.actor;
|
|||
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -11,9 +12,10 @@ import java.util.*;
|
|||
public abstract class SceneActor{
|
||||
private int id;
|
||||
private int pos;
|
||||
private Map<Integer,EffectBuffer> bufferMap = new HashMap<>(2);
|
||||
private Map<Integer,EffectBuffer> bufferMap = new ConcurrentHashMap<>(2);
|
||||
private Scene scene;
|
||||
private StateType stateType;
|
||||
private StateType gameState;
|
||||
|
||||
|
||||
public Scene getScene() {
|
||||
|
@ -26,10 +28,14 @@ public abstract class SceneActor{
|
|||
|
||||
public void addOrUpdateBuffer(EffectBuffer effectBuffer){
|
||||
bufferMap.put(effectBuffer.getId(),effectBuffer);
|
||||
System.out.println(effectBuffer);
|
||||
if(effectBuffer.getType() == 3){
|
||||
stateType = StateType.FROZEN;
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_UPDATE,this.getId());
|
||||
}
|
||||
if(effectBuffer.getType() == 2){
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_UPDATE,this.getId());
|
||||
}
|
||||
scene.processEventUpdate(EventType.BUFFER_UPDATE,effectBuffer);
|
||||
}
|
||||
|
||||
|
@ -37,17 +43,35 @@ public abstract class SceneActor{
|
|||
return bufferMap;
|
||||
}
|
||||
|
||||
public void checkUpdateBuffer(long now){
|
||||
public void checkUpdateBuffer(long now,boolean needRemoveDigger){
|
||||
boolean isUpdate = false;
|
||||
Iterator<Map.Entry<Integer, EffectBuffer>> iterator = bufferMap.entrySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
Map.Entry<Integer, EffectBuffer> next = iterator.next();
|
||||
EffectBuffer value = next.getValue();
|
||||
if(value.getType() == 2 ){ //挖矿
|
||||
int times = (int)((now - value.getStartTime()) / 300);
|
||||
if(value.getType() == 2){ //挖矿
|
||||
int times = (int)((now - value.getStartTime()) / 1000);
|
||||
Creature creature = (Creature) this;
|
||||
creature.setMineral(times*100);
|
||||
SceneActor sceneActor = scene.getSceneActorMap().get(value.getCaster());
|
||||
Creature mineral =(Creature) scene.getSceneActorMap().get(value.getCaster());
|
||||
int willDgger = times;
|
||||
if(willDgger>0&&mineral.getLife().getCurHp()>0) {
|
||||
int reallyDigger = mineral.getLife().reduceHp(willDgger);
|
||||
creature.addMineral(reallyDigger);
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_UPDATE, creature.getId());
|
||||
if(mineral.getLife().getCurHp()>0){
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_UPDATE,mineral.getId());
|
||||
}
|
||||
value.setStartTime(value.getStartTime() + reallyDigger*1000);
|
||||
}
|
||||
if(needRemoveDigger || mineral.getLife().getCurHp()<=0 ){
|
||||
iterator.remove();
|
||||
if(mineral.getLife().getCurHp()<=0){
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_REMOVE,value.getCaster());
|
||||
}
|
||||
System.out.println("remove the digger buffer" + getId());
|
||||
scene.processEventUpdate(EventType.BUFFER_REMOVE,value.getId());
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if( now>value.getEndTime() ){
|
||||
iterator.remove();
|
||||
|
@ -73,6 +97,14 @@ public abstract class SceneActor{
|
|||
}
|
||||
addOrUpdateBuffer(new EffectBuffer(scene.getBufferId(),4,now,now+5000,this.getId(),0,0));
|
||||
}else{
|
||||
Creature creature = (Creature) scene.getSceneActorMap().get(value.getCaster());
|
||||
int mineral = creature.getMineral();
|
||||
if(mineral>0){
|
||||
creature.setMineral(0);
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_UPDATE,creature.getId());
|
||||
((Creature)this).addMineral(mineral);
|
||||
}
|
||||
|
||||
stateType = StateType.MOVEABLE;
|
||||
scene.processEventUpdate(EventType.SCENEACTORE_UPDATE,this.getId());
|
||||
}
|
||||
|
@ -118,6 +150,14 @@ public abstract class SceneActor{
|
|||
return true;
|
||||
}
|
||||
|
||||
public StateType getGameState() {
|
||||
return gameState;
|
||||
}
|
||||
|
||||
public void setGameState(StateType gameState) {
|
||||
this.gameState = gameState;
|
||||
}
|
||||
|
||||
public abstract ActorType getType();
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ public class BloodyBattleMatchServer implements IMatch{
|
|||
private static Map<Integer,Integer> roomFull = new HashMap<>();
|
||||
private static Map<Integer,Room> uidToRommMap = new HashMap<>();
|
||||
static {
|
||||
roomFull.put(1,2);
|
||||
roomFull.put(1,6);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -93,13 +93,20 @@ public class MatchServerice {
|
|||
boolean isAllfinsih = true ;
|
||||
for(SceneActor sceneActor : scene.getSceneActorMap().values()){
|
||||
if(sceneActor.getId() == uid){
|
||||
sceneActor.setStateType(StateType.READYED_STATE);
|
||||
if(sceneActor.getStateType() != StateType.READYED_STATE){
|
||||
sceneActor.setStateType(StateType.READYED_STATE);
|
||||
}
|
||||
sceneActor.setGameState(StateType.READYED_STATE);
|
||||
}
|
||||
if(sceneActor.getType()== ActorType.Player && sceneActor.getStateType()!=StateType.READYED_STATE){
|
||||
isAllfinsih = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(scene.getState() == 1){
|
||||
return;
|
||||
}
|
||||
|
||||
//全部准备好了,准备开始游戏
|
||||
if(isAllfinsih){
|
||||
startGame(scene);
|
||||
|
@ -115,6 +122,7 @@ public class MatchServerice {
|
|||
MessageUtil.sendRoomStartGameIndication(sceneActor.getId());
|
||||
}
|
||||
}
|
||||
scene.setState(1);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.ljsd.jieling.battle.room;
|
|||
import com.ljsd.jieling.battle.actor.*;
|
||||
import com.ljsd.jieling.protocols.CommonProto;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public class BeanToProto {
|
||||
|
@ -22,7 +23,7 @@ public class BeanToProto {
|
|||
|
||||
public static CommonProto.Creature getCreature(Creature creature){
|
||||
return CommonProto.Creature.newBuilder()
|
||||
.setCurHp(creature.getLife().getCurMp())
|
||||
.setCurHp(creature.getLife().getCurHp())
|
||||
.setMaxHp(creature.getLife().getMaxMp())
|
||||
.setSpeed(creature.getSpeed())
|
||||
.addAllPath(creature.getPath())
|
||||
|
@ -49,8 +50,10 @@ public class BeanToProto {
|
|||
for(SceneActor sceneActor : sceneActorMap.values()){
|
||||
builder.addSceneActor(getSceneActor(sceneActor));
|
||||
Map<Integer, EffectBuffer> bufferMap = sceneActor.getBufferMap();
|
||||
for(EffectBuffer effectBuffer : bufferMap.values()){
|
||||
builder.addActorEffectBufferInfo(getActorEffectBufferInfo(effectBuffer));
|
||||
Iterator<Map.Entry<Integer, EffectBuffer>> iterator = bufferMap.entrySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
Map.Entry<Integer, EffectBuffer> next = iterator.next();
|
||||
builder.addActorEffectBufferInfo(getActorEffectBufferInfo(next.getValue()));
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
|
|
|
@ -5,6 +5,7 @@ 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.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.protocols.SceneFight;
|
||||
import com.ljsd.jieling.util.MathUtils;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
|
||||
|
@ -20,7 +21,7 @@ public class SceneManager {
|
|||
public static void createScene(Room room){
|
||||
Scene scene = new Scene();
|
||||
scene.setMapId(101);
|
||||
int i = 13;
|
||||
int i = 6;
|
||||
for(Integer uid : room.fightPlayer){
|
||||
User user = null;
|
||||
try {
|
||||
|
@ -42,13 +43,15 @@ public class SceneManager {
|
|||
|
||||
SceneMineral sceneMineral = new SceneMineral();
|
||||
sceneMineral.setId(999);
|
||||
sceneMineral.setLife(new Life(100000,100000));
|
||||
sceneMineral.setPos(256*3+10);
|
||||
sceneMineral.setLife(new Life(300000,300000));
|
||||
|
||||
scene.addScenActor(sceneMineral);
|
||||
|
||||
SceneMineral sceneMinera2 = new SceneMineral();
|
||||
sceneMinera2.setId(999);
|
||||
sceneMinera2.setLife(new Life(100,100));
|
||||
sceneMinera2.setId(1999);
|
||||
sceneMinera2.setPos(256*5+2);
|
||||
sceneMinera2.setLife(new Life(5,5));
|
||||
scene.addScenActor(sceneMinera2);
|
||||
|
||||
/* SceneMonster sceneMonster = new SceneMonster();
|
||||
|
@ -150,19 +153,19 @@ public class SceneManager {
|
|||
return;
|
||||
}
|
||||
Scene scene = getSceneMap(user.getRoomInfo().getRoomId());
|
||||
SceneFight.SceneCommandResponse.Builder builder = SceneFight.SceneCommandResponse.newBuilder().setType(type).setResult(1);
|
||||
if(type == 1){
|
||||
SceneActor sceneActor = scene.getSceneActorMap().get(session.getUid());
|
||||
boolean playerACommandAllow = sceneActor.checkCommand(1, parm);
|
||||
if(!playerACommandAllow){
|
||||
MessageUtil.sendErrorResponse(session,0,msgId,"wrong path");
|
||||
return;
|
||||
|
||||
builder.setResult(0);
|
||||
}else{
|
||||
Command commandA = new Command(1,sceneActor,parm);
|
||||
scene.addCommand(commandA);
|
||||
}
|
||||
Command commandA = new Command(1,sceneActor,parm);
|
||||
scene.addCommand(commandA);
|
||||
|
||||
}
|
||||
MessageUtil.sendMessage(session,1,msgId,null,true);
|
||||
MessageUtil.sendMessage(session,1,msgId,builder.build(),true);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
package com.ljsd.jieling.logic.dao;
|
||||
|
||||
public class GoodsInfo {
|
||||
private int goodsId;
|
||||
private int type;
|
||||
private int startTime;
|
||||
private int endTime;
|
||||
}
|
|
@ -218,8 +218,14 @@ public class StoreLogic {
|
|||
MessageUtil.sendErrorResponse(iSession,0,msgId,err);
|
||||
return;
|
||||
}
|
||||
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sStoreConfig.getGoods(), BIReason.STORE_BUY_ITEM);
|
||||
int[][] goods = sStoreConfig.getGoods();
|
||||
int length = goods.length;
|
||||
int[][] dropItems = new int[length][];
|
||||
for(int i=0;i<length;i++){
|
||||
dropItems[i]= goods[i];
|
||||
dropItems[i][1]= goods[i][1]*itemNum;
|
||||
}
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.STORE_BUY_ITEM);
|
||||
if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() != StoreType.GIFT_STORE.getType()){
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@ import com.google.protobuf.GeneratedMessage;
|
|||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.common.mogodb.LjsdMongoTemplate;
|
||||
import com.ljsd.jieling.battle.actor.Scene;
|
||||
import com.ljsd.jieling.battle.actor.StateType;
|
||||
import com.ljsd.jieling.battle.room.SceneManager;
|
||||
import com.ljsd.jieling.config.SGlobalSystemConfig;
|
||||
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||
import com.ljsd.jieling.core.HandlerLogicThread;
|
||||
|
@ -310,11 +313,15 @@ public class ProtocolsManager implements ProtocolsAbstract {
|
|||
// } catch (FileNotFoundException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
|
||||
User user = UserManager.getUserInMem(session.getUid());
|
||||
if(user == null){
|
||||
return;
|
||||
}
|
||||
if(user.getRoomInfo().getRoomId() != -1){
|
||||
Scene scene = SceneManager.getSceneMap(user.getRoomInfo().getRoomId());
|
||||
scene.getSceneActorMap().get(user.getId()).setGameState(StateType.UNREADY_STATE);
|
||||
}
|
||||
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserLoginOutEvent,1);
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserLogin,1);
|
||||
|
||||
|
|
|
@ -26,8 +26,8 @@ public class CellUtil {
|
|||
|
||||
public static void main(String[] args) {
|
||||
List<Integer> path = new ArrayList<>();
|
||||
path.add(1547);
|
||||
path.add(1292);
|
||||
path.add(2051);
|
||||
path.add(2307);
|
||||
for(Integer pos : path){
|
||||
System.out.println(pos +"----------------");
|
||||
System.out.print(pos2XY(pos)[0] + " ");
|
||||
|
|
|
@ -57,6 +57,8 @@ public class ItemUtil {
|
|||
return dropBuilder;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//指定道具掉落(如:邮件,初始化物品)
|
||||
public static CommonProto.Drop.Builder dropMap(User user, Map<Integer,Integer> itemArr,int reason) throws Exception {
|
||||
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
|
||||
|
|
Loading…
Reference in New Issue