Development #34

Merged
j23f0779 merged 19 commits from development into dev/model 2024-12-05 17:58:51 +01:00
13 changed files with 183 additions and 50 deletions
Showing only changes of commit 44ef21e6af - Show all commits

View File

@@ -33,11 +33,11 @@ public enum Asset {
treeSmall(1.2f), treeSmall(1.2f),
treeBig(1.2f), treeBig(1.2f),
turboCard, turboCard,
turboSymbol("Models/turboCard/turboSymbol.j3o", "Models/turboCard/turboCard_diff.j3o"), turboSymbol("Models/turboCard/turboSymbol.j3o", "Models/turboCard/turboCard_diff.png"),
swapCard, swapCard,
swapSymbol("Models/swapCard/swapSymbol.j3o", "Models/swapCard/swapCard_diff.j3o"), swapSymbol("Models/swapCard/swapSymbol.j3o", "Models/swapCard/swapCard_diff.png"),
shieldCard, shieldCard,
shieldSymbol("Models/shieldCard/shieldSymbol.j3o", "Models/shieldCard/shieldCard_diff.j3o"), shieldSymbol("Models/shieldCard/shieldSymbol.j3o", "Models/shieldCard/shieldCard_diff.png"),
dice dice
; ;

View File

@@ -27,6 +27,7 @@
import pp.mdga.notification.SelectableCardsNotification; import pp.mdga.notification.SelectableCardsNotification;
import java.util.List; import java.util.List;
import java.util.UUID;
public class InputSynchronizer { public class InputSynchronizer {
@@ -127,7 +128,17 @@ else if(boardSelect != null) {
// gameView.getGuiHandler().rollRankingResult(Color.ARMY, 2); // gameView.getGuiHandler().rollRankingResult(Color.ARMY, 2);
// gameView.getGuiHandler().rollRankingResult(Color.NAVY, 3); // gameView.getGuiHandler().rollRankingResult(Color.NAVY, 3);
// gameView.getGuiHandler().rollRankingResult(Color.CYBER, 4); // gameView.getGuiHandler().rollRankingResult(Color.CYBER, 4);
gameView.getGuiHandler().showDice(); // gameView.getGuiHandler().showDice();
// UUID p1 = UUID.randomUUID();
// gameView.getBoardHandler().addPlayer(Color.AIRFORCE,List.of(p1,UUID.randomUUID(),UUID.randomUUID(),UUID.randomUUID()));
// gameView.getBoardHandler().movePieceStartAnim(p1,0);
gameView.getGuiHandler().drawCard(Color.ARMY);
gameView.getGuiHandler().addCardOwn(BonusCard.SHIELD);
gameView.getGuiHandler().playCardOwn(BonusCard.SHIELD);
} }
} }
} }

View File

@@ -115,7 +115,7 @@ public void simpleInitApp() {
gameView = new GameView(this); gameView = new GameView(this);
ceremonyView = new CeremonyView(this); ceremonyView = new CeremonyView(this);
enter(MdgaState.MAIN); enter(MdgaState.GAME);
} }
/** /**

View File

@@ -91,7 +91,7 @@ private void handleGame(Notification notification) {
ModelSynchronizer modelSynchronizer = app.getModelSynchronize(); ModelSynchronizer modelSynchronizer = app.getModelSynchronize();
if (notification instanceof AcquireCardNotification n) { if (notification instanceof AcquireCardNotification n) {
guiHandler.addCard(n.getBonusCard()); guiHandler.addCardOwn(n.getBonusCard());
} else if (notification instanceof ActivePlayerNotification n) { } else if (notification instanceof ActivePlayerNotification n) {
gameView.getGuiHandler().setActivePlayer(n.getColor()); gameView.getGuiHandler().setActivePlayer(n.getColor());
boardHandler.showDice(n.getColor()); boardHandler.showDice(n.getColor());
@@ -146,12 +146,8 @@ private void handleGame(Notification notification) {
} else if (notification instanceof NoShieldNotification n) { } else if (notification instanceof NoShieldNotification n) {
boardHandler.unshieldPiece(n.getPieceId()); boardHandler.unshieldPiece(n.getPieceId());
} else if (notification instanceof PlayCardNotification n) { } else if (notification instanceof PlayCardNotification n) {
switch(n.getCard()){ if(n.getColor() == gameView.getOwnColor()) guiHandler.playCardOwn(n.getCard());
case SWAP -> guiHandler.swap(); else guiHandler.playCardEnemy(n.getColor(), n.getCard());
case TURBO -> guiHandler.turbo();
case SHIELD -> guiHandler.shield();
default -> throw new RuntimeException("invalid card");
}
} else if (notification instanceof PlayerInGameNotification n) { } else if (notification instanceof PlayerInGameNotification n) {
boardHandler.addPlayer(n.getColor(),n.getPiecesList()); boardHandler.addPlayer(n.getColor(),n.getPiecesList());
guiHandler.addPlayer(n.getColor(),n.getName()); guiHandler.addPlayer(n.getColor(),n.getName());

View File

@@ -60,7 +60,7 @@ private Node createNum(){
Material mat = new Material(getApp().getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); Material mat = new Material(getApp().getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Black); mat.setColor("Color", ColorRGBA.Black);
circle.setMaterial(mat); circle.setMaterial(mat);
root.attachChild(circle); // root.attachChild(circle);
BitmapFont guiFont = getApp().getAssetManager().loadFont("Fonts/Gunplay.fnt"); BitmapFont guiFont = getApp().getAssetManager().loadFont("Fonts/Gunplay.fnt");
num = new BitmapText(guiFont); num = new BitmapText(guiFont);
num.setSize(0.3f); num.setSize(0.3f);

View File

@@ -86,7 +86,7 @@ public void render(RenderManager rm) {
public void update(float tpf) { public void update(float tpf) {
if (init && !cardBuffer.isEmpty()) { if (init && !cardBuffer.isEmpty()) {
for (Spatial spatial : cardBuffer) { for (Spatial spatial : cardBuffer) {
root.attachChild(spatial); // root.attachChild(spatial);
} }
cardBuffer.clear(); cardBuffer.clear();
} }
@@ -94,7 +94,9 @@ public void update(float tpf) {
} }
public void addSpatial(Spatial card) { public void addSpatial(Spatial card) {
cardBuffer.add(card); // cardBuffer.add(card);
root.attachChild(card);
root = root;
} }
public void deleteSpatial(Spatial spatial) { public void deleteSpatial(Spatial spatial) {

View File

@@ -85,6 +85,19 @@ public void addCard(BonusCard card) {
bonusCardControlMap.get(card).setNumCard(newNum); bonusCardControlMap.get(card).setNumCard(newNum);
} }
public void removeCard(BonusCard card){
if(bonusCardControlMap.containsKey(card)){
bonusCardIntegerMap.put(card, bonusCardIntegerMap.get(card) - 1);
if(bonusCardIntegerMap.get(card) <= 0){
cardLayer.deleteSpatial(bonusCardControlMap.get(card).getRoot());
bonusCardIntegerMap.remove(card);
bonusCardControlMap.remove(card);
}
}
}
public void clearSelectableCards() { public void clearSelectableCards() {
for (CardControl control : selectableCards) { for (CardControl control : selectableCards) {
control.setSelectable(false); control.setSelectable(false);

View File

@@ -74,8 +74,31 @@ public void hideDice() {
cardLayerHandler.hideDice(); cardLayerHandler.hideDice();
} }
public void addCard(BonusCard card) { //add own handCard
public void addCardOwn(BonusCard card) {
cardLayerHandler.addCard(card); cardLayerHandler.addCard(card);
playerNameHandler.addCard(ownColor);
actionTextHandler.drawCardOwn(ownColor);
}
public void playCardOwn(BonusCard card){
getEffectByCard(card);
cardLayerHandler.removeCard(card);
playerNameHandler.removeCard(ownColor);
}
public void playCardEnemy(Color color, BonusCard card) {
getEffectByCard(card);
playerNameHandler.removeCard(color);
}
private void getEffectByCard(BonusCard bonus){
switch(bonus){
case SWAP -> swap();
case TURBO -> turbo();
case SHIELD -> shield();
default -> throw new RuntimeException("invalid card");
}
} }
public void clearSelectableCards() { public void clearSelectableCards() {
@@ -125,9 +148,11 @@ public void hideText(){
actionTextHandler.hide(); actionTextHandler.hide();
} }
//addCard Enemy (DrawCardNotification)
public void drawCard(Color color) { public void drawCard(Color color) {
if (ownColor == color) actionTextHandler.drawCardOwn(color); //Color != ownColor
else actionTextHandler.drawCard(playerNameHandler.getName(color), color); actionTextHandler.drawCard(playerNameHandler.getName(color), color);
playerNameHandler.addCard(color);
} }
public void finish(Color color){ public void finish(Color color){
@@ -141,4 +166,6 @@ public void rollRankingResult(Color color, int eye){
} }
} }

View File

@@ -4,23 +4,27 @@
import com.jme3.font.BitmapFont; import com.jme3.font.BitmapFont;
import com.jme3.font.BitmapText; import com.jme3.font.BitmapText;
import com.jme3.math.ColorRGBA; import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Node; import com.jme3.scene.Node;
import com.jme3.scene.Spatial; import com.jme3.scene.Spatial;
import com.jme3.system.AppSettings; import com.jme3.system.AppSettings;
import com.jme3.ui.Picture; import com.jme3.ui.Picture;
import pp.mdga.game.BonusCard;
import pp.mdga.game.Color; import pp.mdga.game.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Vector;
public class PlayerNameHandler { public class PlayerNameHandler {
private final BitmapFont playerFont; private final BitmapFont playerFont;
private final Node playerNameNode; private final Node playerNameNode;
private final List<Color> playerOrder; private final List<Color> playerOrder;
private final Map<Color, String> colorNameMap; private final Map<Color, String> colorNameMap;
private final Map<Color, Integer> colorCardMap;
private final AppSettings appSettings; private final AppSettings appSettings;
private final AssetManager assetManager; private final AssetManager assetManager;
private Color ownColor; private Color ownColor;
@@ -43,6 +47,7 @@ public PlayerNameHandler(Node guiNode, AssetManager assetManager, AppSettings ap
playerNameNode = new Node("player name node"); playerNameNode = new Node("player name node");
playerOrder = new ArrayList<>(); playerOrder = new ArrayList<>();
colorNameMap = new HashMap<>(); colorNameMap = new HashMap<>();
colorCardMap = new HashMap<>();
this.appSettings = appSettings; this.appSettings = appSettings;
this.assetManager = assetManager; this.assetManager = assetManager;
} }
@@ -64,13 +69,38 @@ private void drawPlayers(){
if(!colorNameMap.containsKey(color)) throw new RuntimeException(color + " isn't mapped to a name"); if(!colorNameMap.containsKey(color)) throw new RuntimeException(color + " isn't mapped to a name");
Node nameParent = new Node("nameParent"); Node nameParent = new Node("nameParent");
nameParent.attachChild(createName(colorNameMap.get(color), i == 0, color == ownColor));
nameParent.attachChild(createColor(color)); nameParent.attachChild(createColor(color));
BitmapText name = createName(colorNameMap.get(color), i == 0, color == ownColor);
nameParent.attachChild(name);
if(colorCardMap.getOrDefault(color, 0) > 0){
Picture pic = createHandCard(name.getLineWidth());
nameParent.attachChild(pic);
nameParent.attachChild(createCardNum(colorCardMap.get(color), pic.getWidth(), pic.getLocalTranslation().getX()));
}
nameParent.setLocalTranslation(50,appSettings.getWindowHeight()-PADDING_TOP- MARGIN_NAMES *i,0); nameParent.setLocalTranslation(50,appSettings.getWindowHeight()-PADDING_TOP- MARGIN_NAMES *i,0);
playerNameNode.attachChild(nameParent); playerNameNode.attachChild(nameParent);
} }
} }
private Spatial createCardNum(int num, float lastWidth, float lastX ) {
BitmapText hudText = new BitmapText(playerFont);
//renderedSize = 45
hudText.setSize(TEXT_SIZE);
hudText.setColor(NORMAL_COLOR);
hudText.setText(String.valueOf(num));
hudText.setLocalTranslation(lastX + lastWidth + 20,hudText.getHeight()/2, 0);
return hudText;
}
private Picture createHandCard(float width) {
Picture pic = new Picture("HUD Picture");
pic.setImage(assetManager, "./Images/handcard.png", true);
pic.setWidth(IMAGE_SIZE);
pic.setHeight(IMAGE_SIZE);
pic.setPosition(-pic.getWidth()/2 + width + PADDING_LEFT * 2 ,-pic.getHeight()/2);
return pic;
}
private String imagePath(Color color){ private String imagePath(Color color){
String root = "./Images/name_pictures/"; String root = "./Images/name_pictures/";
return switch(color){ return switch(color){
@@ -93,7 +123,7 @@ private Spatial createColor(Color color) {
private Spatial createName(String name, boolean first, boolean own){ private BitmapText createName(String name, boolean first, boolean own){
BitmapText hudText = new BitmapText(playerFont); BitmapText hudText = new BitmapText(playerFont);
//renderedSize = 45 //renderedSize = 45
hudText.setSize(TEXT_SIZE); hudText.setSize(TEXT_SIZE);
@@ -124,5 +154,18 @@ public String getName(Color color){
return colorNameMap.get(color); return colorNameMap.get(color);
} }
public void addCard(Color color){
colorCardMap.put(color, colorCardMap.getOrDefault(color, 0) + 1);
drawPlayers();
}
public void removeCard(Color color){
if(colorCardMap.containsKey(color)){
colorCardMap.put(color, colorCardMap.getOrDefault(color, 0) - 1);
if(colorCardMap.get(color) <= 0) colorCardMap.remove(color);
}
drawPlayers();
}
} }

View File

@@ -65,10 +65,11 @@ public void onEnter() {
app.getAcousticHandler().playSound(MdgaSound.START); app.getAcousticHandler().playSound(MdgaSound.START);
// guiHandler.addPlayer(Color.AIRFORCE, "Cedric"); guiHandler.addPlayer(Color.AIRFORCE, "Cedric");
// guiHandler.addPlayer(Color.ARMY, "Ben"); guiHandler.addPlayer(Color.ARMY, "Ben");
// guiHandler.addPlayer(Color.CYBER, "Felix"); guiHandler.addPlayer(Color.CYBER, "Felix");
// guiHandler.addPlayer(Color.NAVY, "Daniel"); guiHandler.addPlayer(Color.NAVY, "Daniel");
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB