|
@@ -19,6 +19,7 @@
|
|
|
package com.iohao.mmo.map.client;
|
|
|
|
|
|
import com.iohao.game.common.kit.InternalKit;
|
|
|
+import com.iohao.game.common.kit.attr.AttrOption;
|
|
|
import com.iohao.game.external.client.AbstractInputCommandRegion;
|
|
|
import com.iohao.game.external.client.command.InputRequestData;
|
|
|
import com.iohao.game.external.client.kit.ScannerKit;
|
|
@@ -36,6 +37,7 @@ import java.util.concurrent.TimeUnit;
|
|
|
*/
|
|
|
@Slf4j
|
|
|
public class MapInputCommandRegion extends AbstractInputCommandRegion {
|
|
|
+
|
|
|
@Override
|
|
|
public void initInputCommand() {
|
|
|
this.inputCommandCreate.cmd = MapCmd.cmd;
|
|
@@ -43,11 +45,10 @@ public class MapInputCommandRegion extends AbstractInputCommandRegion {
|
|
|
request();
|
|
|
listen();
|
|
|
|
|
|
+ // N 秒后自动进入地图
|
|
|
InternalKit.newTimeout(task -> {
|
|
|
- // N 秒后自动进入地图
|
|
|
- // 请求参数
|
|
|
- EnterMapReq enterMapReq = new EnterMapReq();
|
|
|
// 进入地图,根据地图 id
|
|
|
+ EnterMapReq enterMapReq = new EnterMapReq();
|
|
|
enterMapReq.mapId = 1;
|
|
|
ofRequestCommand(MapCmd.enterMap).request(enterMapReq);
|
|
|
}, 2, TimeUnit.SECONDS);
|
|
@@ -75,19 +76,34 @@ public class MapInputCommandRegion extends AbstractInputCommandRegion {
|
|
|
// 动态请求参数
|
|
|
inputRequestData = () -> {
|
|
|
// 请求参数
|
|
|
- LocationMessage locationMessage = new LocationMessage();
|
|
|
- locationMessage.x = 100;
|
|
|
-
|
|
|
+ LocationMessage locationMessage = clientUser.option(InternalAttr.locationMessage);
|
|
|
+ locationMessage.x += 10;
|
|
|
+ locationMessage.y += 10;
|
|
|
return locationMessage;
|
|
|
};
|
|
|
|
|
|
ofCommand(MapCmd.move).callback(LocationMessage.class, result -> {
|
|
|
LocationMessage value = result.getValue();
|
|
|
log.info("r玩家移动 : {}", value);
|
|
|
+
|
|
|
+ if (value.playerId == clientUser.getUserId()) {
|
|
|
+ // 保存自己的 location
|
|
|
+ clientUser.option(InternalAttr.locationMessage, value);
|
|
|
+ }
|
|
|
+
|
|
|
}).setDescription("玩家移动").setInputRequestData(inputRequestData);
|
|
|
}
|
|
|
|
|
|
private void listen() {
|
|
|
+ listenBroadcast(LocationMessage.class, result -> {
|
|
|
+ LocationMessage value = result.getValue();
|
|
|
+ log.info("玩家移动 : {}", value);
|
|
|
+ }, MapCmd.move, "玩家移动");
|
|
|
+ }
|
|
|
|
|
|
+ interface InternalAttr {
|
|
|
+ AttrOption<LocationMessage> locationMessage = AttrOption.valueOf("locationMessage", new LocationMessage());
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|