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 ObjectMapper om = new ObjectMapper();
public GameRoom(List<RoomPlayer> players, UserServiceImpl userService) {
this.userService = userService;
this.players = players.stream()
@ -52,79 +54,85 @@ public class GameRoom {
case InfoRequest:
sendAllInfoRequest(message);
break;
case ShowFieldInfo:
sendFieldInfo(message);
break;
}
}
private void sendFieldInfo(BasicMessage message) {
//sendMessage(message.getUid(), WebSocketMessageType.ShowFieldInfo, );
}
private void sendAllInfoRequest(BasicMessage message) {
try {
ObjectMapper om = new ObjectMapper();
List<BoardTile> top = new ArrayList<>();
List<BoardTile> right = new ArrayList<>();
List<BoardTile> bottom = new ArrayList<>();
List<BoardTile> left = new ArrayList<>();
List<BoardTile> top = new ArrayList<>();
List<BoardTile> right = new ArrayList<>();
List<BoardTile> bottom = new ArrayList<>();
List<BoardTile> left = new ArrayList<>();
for( int i = 0; i < 9; i++ ) {
top.add(new BoardTile(UUID.randomUUID().toString(), 2 + i, 1000, "", "/static/images/7up.png", "ffffff", "f5f5f5"));
}
for( int i = 0; i < 9; i++ ) {
right.add(new BoardTile(UUID.randomUUID().toString(), i, 1400, "", "/static/images/fanta.png", "bbbbbb", "f5f5f5"));
}
for( int i = 0; i < 9; i++ ) {
bottom.add(new BoardTile(UUID.randomUUID().toString(), 2 + i, 1800, "", "/static/images/cola.png", "eeeeee", "f5f5f5"));
}
for( int i = 10; i >= 2; i-- ) {
left.add(new BoardTile(UUID.randomUUID().toString(), i, 2200, "", "/static/images/beeline.png", "000000", "f5f5f5"));
}
List<CornerTile> corners = new ArrayList<>();
corners.add(new CornerTile("/static/images/start.png"));
corners.add(new CornerTile("/static/images/injail.png"));
corners.add(new CornerTile("/static/images/parking.png"));
corners.add(new CornerTile("/static/images/gotojail.png"));
BoardGUI boardGUI = new BoardGUI(top, right, bottom, left, corners);
sendMessage(message.getUid(), WebSocketMessageType.PlayersList, om.writeValueAsString(players));
sendMessage(message.getUid(), WebSocketMessageType.BoardGUI, om.writeValueAsString(boardGUI));
left.get(2).setCost(12345);
left.get(2).setImg("/static/images/fanta.png");
left.get(2).setColor("bcbcbc");
left.get(2).setStars("★★★");
left.get(2).setOwnerColor("fffbbb");
sendMessage(message.getUid(), WebSocketMessageType.ChangeBoardTileState, om.writeValueAsString(left.get(2)));
Chip red = new Chip(2L, 10, 9, "#ff0000");
Chip green = new Chip(3L, 10, 10, "#00ff00");
Chip blue = new Chip(4L, 0, 5, "#0000ff");
Chip white = new Chip(5L, 0, 5, "#ffffff");
Chip black = new Chip(6L, 0, 5, "#000000");
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(red));
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(green));
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(blue));
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(white));
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, om.writeValueAsString(black));
red.setY(10);
sendMessage(message.getUid(), WebSocketMessageType.ChipMove, om.writeValueAsString(red));
sendMessage(message.getUid(), WebSocketMessageType.PlayerColor, om.writeValueAsString(new PlayerColor(2L, "#ff0000")));
} catch (JsonProcessingException e) {
log.error(e.getMessage(), e);
for( int i = 0; i < 9; i++ ) {
top.add(new BoardTile(UUID.randomUUID().toString(), 2 + i, 1000, "", "/static/images/7up.png", "ffffff", "f5f5f5"));
}
for( int i = 0; i < 9; i++ ) {
right.add(new BoardTile(UUID.randomUUID().toString(), i, 1400, "", "/static/images/fanta.png", "bbbbbb", "f5f5f5"));
}
for( int i = 0; i < 9; i++ ) {
bottom.add(new BoardTile(UUID.randomUUID().toString(), 2 + i, 1800, "", "/static/images/cola.png", "eeeeee", "f5f5f5"));
}
for( int i = 10; i >= 2; i-- ) {
left.add(new BoardTile(UUID.randomUUID().toString(), i, 2200, "", "/static/images/beeline.png", "000000", "f5f5f5"));
}
List<CornerTile> corners = new ArrayList<>();
corners.add(new CornerTile("/static/images/start.png"));
corners.add(new CornerTile("/static/images/injail.png"));
corners.add(new CornerTile("/static/images/parking.png"));
corners.add(new CornerTile("/static/images/gotojail.png"));
BoardGUI boardGUI = new BoardGUI(top, right, bottom, left, corners);
sendMessage(message.getUid(), WebSocketMessageType.PlayersList, players);
sendMessage(message.getUid(), WebSocketMessageType.BoardGUI, boardGUI);
left.get(2).setCost(12345);
left.get(2).setImg("/static/images/fanta.png");
left.get(2).setColor("bcbcbc");
left.get(2).setStars("★★★");
left.get(2).setOwnerColor("fffbbb");
sendMessage(message.getUid(), WebSocketMessageType.ChangeBoardTileState, left.get(2));
Chip red = new Chip(2L, 10, 9, "#ff0000");
Chip green = new Chip(3L, 10, 10, "#00ff00");
Chip blue = new Chip(4L, 0, 5, "#0000ff");
Chip white = new Chip(5L, 0, 5, "#ffffff");
Chip black = new Chip(6L, 0, 5, "#000000");
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, red);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, green);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, blue);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, white);
sendMessage(message.getUid(), WebSocketMessageType.AssignChip, black);
red.setY(10);
sendMessage(message.getUid(), WebSocketMessageType.ChipMove, red);
sendMessage(message.getUid(), WebSocketMessageType.PlayerColor, new PlayerColor(2L, "#ff0000"));
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 {
if (socks.get(userId).isOpen())
socks.get(userId).sendMessage(
new TextMessage(
new ObjectMapper().writeValueAsString(
new ResponseMessage(type, message)
om.writeValueAsString(
new ResponseMessage(type, om.writeValueAsString(o))
)
)
);

View File

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