action dialogs

This commit is contained in:
Michael Wain 2024-03-16 03:33:35 +03:00
parent 100e2918b1
commit 400e7fea33
5 changed files with 102 additions and 62 deletions

View File

@ -0,0 +1,13 @@
package com.alterdekim.game.component.game;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public class ActionDialog<T> {
private String dialogTitle;
private String dialogDescription;
private ActionDialogType actionDialogType;
private T actionDialogBody;
}

View File

@ -0,0 +1,6 @@
package com.alterdekim.game.component.game;
public enum ActionDialogType {
Buttons,
Range
}

View File

@ -0,0 +1,10 @@
package com.alterdekim.game.component.game;
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class DialogButton {
private String buttonText;
private String buttonColor;
private String onclickAction;
}

View File

@ -31,6 +31,8 @@ public class GameRoom {
private List<BoardField> boardFields; private List<BoardField> boardFields;
private ObjectMapper om = new ObjectMapper();
public GameRoom(List<RoomPlayer> players, UserServiceImpl userService) { public GameRoom(List<RoomPlayer> players, UserServiceImpl userService) {
this.userService = userService; this.userService = userService;
this.players = players.stream() this.players = players.stream()
@ -52,12 +54,17 @@ public class GameRoom {
case InfoRequest: case InfoRequest:
sendAllInfoRequest(message); sendAllInfoRequest(message);
break; break;
case ShowFieldInfo:
sendFieldInfo(message);
break;
} }
} }
private void sendFieldInfo(BasicMessage message) {
//sendMessage(message.getUid(), WebSocketMessageType.ShowFieldInfo, );
}
private void sendAllInfoRequest(BasicMessage message) { private void sendAllInfoRequest(BasicMessage message) {
try {
ObjectMapper om = new ObjectMapper();
List<BoardTile> top = new ArrayList<>(); List<BoardTile> top = new ArrayList<>();
List<BoardTile> right = new ArrayList<>(); List<BoardTile> right = new ArrayList<>();
List<BoardTile> bottom = new ArrayList<>(); List<BoardTile> bottom = new ArrayList<>();
@ -88,14 +95,14 @@ public class GameRoom {
corners.add(new CornerTile("/static/images/gotojail.png")); corners.add(new CornerTile("/static/images/gotojail.png"));
BoardGUI boardGUI = new BoardGUI(top, right, bottom, left, corners); BoardGUI boardGUI = new BoardGUI(top, right, bottom, left, corners);
sendMessage(message.getUid(), WebSocketMessageType.PlayersList, om.writeValueAsString(players)); sendMessage(message.getUid(), WebSocketMessageType.PlayersList, players);
sendMessage(message.getUid(), WebSocketMessageType.BoardGUI, om.writeValueAsString(boardGUI)); sendMessage(message.getUid(), WebSocketMessageType.BoardGUI, boardGUI);
left.get(2).setCost(12345); left.get(2).setCost(12345);
left.get(2).setImg("/static/images/fanta.png"); left.get(2).setImg("/static/images/fanta.png");
left.get(2).setColor("bcbcbc"); left.get(2).setColor("bcbcbc");
left.get(2).setStars("★★★"); left.get(2).setStars("★★★");
left.get(2).setOwnerColor("fffbbb"); left.get(2).setOwnerColor("fffbbb");
sendMessage(message.getUid(), WebSocketMessageType.ChangeBoardTileState, om.writeValueAsString(left.get(2))); sendMessage(message.getUid(), WebSocketMessageType.ChangeBoardTileState, left.get(2));
Chip red = new Chip(2L, 10, 9, "#ff0000"); Chip red = new Chip(2L, 10, 9, "#ff0000");
Chip green = new Chip(3L, 10, 10, "#00ff00"); Chip green = new Chip(3L, 10, 10, "#00ff00");
@ -103,28 +110,29 @@ public class GameRoom {
Chip white = new Chip(5L, 0, 5, "#ffffff"); Chip white = new Chip(5L, 0, 5, "#ffffff");
Chip black = new Chip(6L, 0, 5, "#000000"); Chip black = new Chip(6L, 0, 5, "#000000");
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(red)); sendMessage(message.getUid(), WebSocketMessageType.AssignChip, red);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(green)); sendMessage(message.getUid(), WebSocketMessageType.AssignChip, green);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(blue)); sendMessage(message.getUid(), WebSocketMessageType.AssignChip, blue);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(white)); sendMessage(message.getUid(), WebSocketMessageType.AssignChip, white);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(black)); sendMessage(message.getUid(), WebSocketMessageType.AssignChip, black);
red.setY(10); red.setY(10);
sendMessage(message.getUid(), WebSocketMessageType.ChipMove, om.writeValueAsString(red)); sendMessage(message.getUid(), WebSocketMessageType.ChipMove, red);
sendMessage(message.getUid(), WebSocketMessageType.PlayerColor, om.writeValueAsString(new PlayerColor(2L, "#ff0000"))); sendMessage(message.getUid(), WebSocketMessageType.PlayerColor, new PlayerColor(2L, "#ff0000"));
} catch (JsonProcessingException e) {
log.error(e.getMessage(), e); List<DialogButton> buttons = new ArrayList<>();
} buttons.add(new DialogButton("Button1", "#00ff00", ""));
sendMessage(message.getUid(), WebSocketMessageType.ShowDialog, new ActionDialog<>("Title!", "Description!", ActionDialogType.Buttons, buttons));
} }
private void sendMessage(Long userId, WebSocketMessageType type, String message) { private void sendMessage(Long userId, WebSocketMessageType type, Object o) {
try { try {
if (socks.get(userId).isOpen()) if (socks.get(userId).isOpen())
socks.get(userId).sendMessage( socks.get(userId).sendMessage(
new TextMessage( new TextMessage(
new ObjectMapper().writeValueAsString( om.writeValueAsString(
new ResponseMessage(type, message) new ResponseMessage(type, om.writeValueAsString(o))
) )
) )
); );

View File

@ -7,5 +7,8 @@ public enum WebSocketMessageType {
ChangeBoardTileState, ChangeBoardTileState,
AssignChip, AssignChip,
ChipMove, ChipMove,
PlayerColor PlayerColor,
ShowDialog,
HideDialog,
ShowFieldInfo
} }