Merge remote-tracking branch 'origin/dev/client_beck' into dev/client_koppe2
# Conflicts: # Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java # Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java # Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java
This commit is contained in:
@@ -3,11 +3,11 @@
|
||||
public enum Asset {
|
||||
bigTent,
|
||||
cardStack,
|
||||
cir,
|
||||
heer,
|
||||
cir("Models/lcir/cir_newOrigin.obj"),
|
||||
heer("Models/heer/heer_newOrigin.obj"),
|
||||
jet,
|
||||
lw,
|
||||
marine,
|
||||
lw("Models/lw/lw_newOrigin.obj"),
|
||||
marine("Models/marine/marine_newOrigin.obj"),
|
||||
node_home_blue("Models/node_home/node_home.j3o", "Models/node_home/node_home_blue_diff.png"),
|
||||
node_wait_blue("Models/node_home/node_home.j3o", "Models/node_home/node_home_blue_diff.png"),
|
||||
node_home_black("Models/node_home/node_home.j3o", "Models/node_home/node_home_black_diff.png"),
|
||||
@@ -27,9 +27,12 @@ public enum Asset {
|
||||
shield_ring("Models/shield_ring/shield_ring.obj", null),
|
||||
tree_small("Models/tree_small/tree_small.obj", "Models/tree_small/tree_small_diff.png"),
|
||||
tree_big("Models/tree_big/tree_big.obj", "Models/tree_big/tree_big_diff.png"),
|
||||
turboCard,
|
||||
swapCard,
|
||||
shieldCard,
|
||||
turboCard("Models/turboCard/turboCard.obj", "Models/turboCard/turboCard_diff.png"),
|
||||
turboSymbol("Models/turboCard/turboSymbol.obj", "Models/turboCard/turboCard_diff.png"),
|
||||
swapCard("Models/swapCard/swapCard.obj", "Models/swapCard/swapCard_diff.png"),
|
||||
swapSymbol("Models/swapCard/swapSymbol.obj", "Models/swapCard/swapCard_diff.png"),
|
||||
shieldCard("Models/shieldCard/shieldCard.obj", "Models/shieldCard/shieldCard_diff.png"),
|
||||
shieldSymbol("Models/shieldCard/shieldSymbol.obj", "Models/shieldCard/shieldCard_diff.png"),
|
||||
dice("Models/dice/dice.obj", "Models/dice/dice_diff.jpeg")
|
||||
;
|
||||
|
||||
@@ -51,6 +54,13 @@ public enum Asset {
|
||||
this.size = 1f;
|
||||
}
|
||||
|
||||
Asset(String modelPath) {
|
||||
String folderFileName = "./" + root + name() + "/" + name();
|
||||
this.modelPath = modelPath;
|
||||
this.diffPath = folderFileName + "_diff.png";;
|
||||
this.size = 1f;
|
||||
}
|
||||
|
||||
Asset(float size) {
|
||||
String folderFileName = "./" + root + name() + "/" + name();
|
||||
this.modelPath = folderFileName + ".j3o";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import com.jme3.collision.CollisionResult;
|
||||
import com.jme3.collision.CollisionResults;
|
||||
import com.jme3.input.InputManager;
|
||||
import com.jme3.input.KeyInput;
|
||||
@@ -17,6 +18,7 @@
|
||||
import pp.mdga.client.board.PieceControl;
|
||||
import pp.mdga.client.gui.CardControl;
|
||||
import pp.mdga.client.view.GameView;
|
||||
import pp.mdga.game.Color;
|
||||
import pp.mdga.game.Piece;
|
||||
|
||||
public class InputSynchronizer {
|
||||
@@ -74,15 +76,15 @@ public void onAction(String name, boolean isPressed, float tpf) {
|
||||
|
||||
if(cardLayerSelect != null) {
|
||||
//cardSelect
|
||||
cardLayerSelect.outline();
|
||||
if(cardLayerSelect.isSelectable()) gameView.getGuiHandler().selectCard(cardLayerSelect);
|
||||
}
|
||||
if(cardLayerSelect == null && boardSelect != null) {
|
||||
else if(boardSelect != null) {
|
||||
//boardSelect
|
||||
if(boardSelect instanceof PieceControl pieceControl){
|
||||
if(pieceControl.isSelectable()) gameView.getBoardHandler().pieceSelect(pieceControl);
|
||||
}
|
||||
if(boardSelect instanceof NodeControl nodeControl){
|
||||
// nodeControl.outline();
|
||||
//
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -93,7 +95,11 @@ public void onAction(String name, boolean isPressed, float tpf) {
|
||||
|
||||
}
|
||||
if(name.equals("Test") &&isPressed){
|
||||
test = true;
|
||||
if(app.getView() instanceof GameView gameView){
|
||||
|
||||
gameView.getGuiHandler().showDice();
|
||||
// gameView.getBoardHandler().showDice(Color.AIRFORCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -115,6 +121,7 @@ else if (name.equals("MouseScrollDown")) {
|
||||
}
|
||||
else if (name.equals("MouseLeft") || name.equals("MouseRight") || name.equals("MouseVertical")){
|
||||
hoverPiece();
|
||||
hoverCard();
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -129,6 +136,21 @@ private <T extends AbstractControl> T checkHover(Camera cam, Node root, Class<T>
|
||||
return null;
|
||||
}
|
||||
|
||||
private <T extends AbstractControl> T checkHoverOrtho(Camera cam, Node root, Class<T> controlType) {
|
||||
CollisionResults results = new CollisionResults();
|
||||
Vector3f mousePos = getMousePos(cam);
|
||||
mousePos.setZ(cam.getLocation().getZ());
|
||||
Ray ray = new Ray(mousePos, getMousePos(cam).subtract(mousePos).normalize());
|
||||
root.collideWith(ray, results);
|
||||
if (results.size() > 0) {
|
||||
for(CollisionResult res : results ){
|
||||
T control = res.getGeometry().getControl(controlType);
|
||||
if(control != null) return control;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void hoverPiece() {
|
||||
if (app.getView() instanceof GameView gameView) {
|
||||
PieceControl control = checkPiece();
|
||||
@@ -143,33 +165,26 @@ private void hoverPiece() {
|
||||
}
|
||||
}
|
||||
|
||||
private void hoverCardOutline() {
|
||||
private void hoverCard() {
|
||||
if (app.getView() instanceof GameView gameView) {
|
||||
CardControl control = checkHover(gameView.getGuiHandler().getCardLayerCamera(), gameView.getGuiHandler().getCardLayer().getRootNode(), CardControl.class);
|
||||
CardControl control = checkCard(gameView);
|
||||
if (control != null) {
|
||||
if(control != hoverCard){
|
||||
pieceOff();
|
||||
cardOff();
|
||||
hoverCard = control;
|
||||
hoverCard.outline();
|
||||
hoverCard.hover();
|
||||
}
|
||||
}
|
||||
else pieceOff();
|
||||
else cardOff();
|
||||
}
|
||||
}
|
||||
|
||||
private void hoverAction(){
|
||||
|
||||
}
|
||||
|
||||
private PieceControl checkPiece(){
|
||||
return checkHover(app.getCamera(), app.getRootNode(), PieceControl.class);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void outlineOff(OutlineControl outline) {
|
||||
if (outline != null) outline.deOutline();
|
||||
outline = null;
|
||||
private CardControl checkCard(GameView gameView){
|
||||
return checkHoverOrtho(gameView.getGuiHandler().getCardLayerCamera(), gameView.getGuiHandler().getCardLayer().getRootNode(), CardControl.class);
|
||||
}
|
||||
|
||||
private void pieceOff(){
|
||||
@@ -177,9 +192,16 @@ private void pieceOff(){
|
||||
hoverPiece = null;
|
||||
}
|
||||
|
||||
private void cardOff(){
|
||||
if(hoverCard != null) hoverCard.hoverOff();
|
||||
hoverCard = null;
|
||||
}
|
||||
|
||||
private Vector3f getMousePos(Camera cam){
|
||||
Vector2f mousePositionScreen = inputManager.getCursorPosition();
|
||||
return cam.getWorldCoordinates(mousePositionScreen, 0);
|
||||
Vector3f world = cam.getWorldCoordinates(mousePositionScreen, 0);
|
||||
if (cam.isParallelProjection()) world.setZ(0);
|
||||
return world;
|
||||
}
|
||||
|
||||
public float getRotation() {
|
||||
|
||||
@@ -53,9 +53,6 @@ public void simpleInitApp() {
|
||||
notificationSynchronizer = new NotificationSynchronizer(this);
|
||||
inputSynchronizer = new InputSynchronizer(this);
|
||||
modelSyncronizer = new ModelSyncronizer(this);
|
||||
|
||||
modelSyncronizer.enter(MdgaState.CEREMONY);
|
||||
//enter(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import pp.mdga.notification.Notification;
|
||||
import pp.mdga.notification.PieceInGameNotification;
|
||||
import pp.mdga.notification.PlayerInGameNotification;
|
||||
|
||||
public enum MdgaState {
|
||||
NONE,
|
||||
MAIN,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import pp.mdga.client.view.CeremonyView;
|
||||
import pp.mdga.client.view.GameView;
|
||||
import pp.mdga.client.view.LobbyView;
|
||||
import pp.mdga.game.Color;
|
||||
@@ -70,9 +69,11 @@ private void handleLobby(Notification notification) {
|
||||
|
||||
private void handleGame(Notification notification) {
|
||||
GameView gameView = (GameView) app.getView();
|
||||
GuiHandler guiHandler = gameView.getGuiHandler();
|
||||
BoardHandler boardHandler = gameView.getBoardHandler();
|
||||
|
||||
if (notification instanceof AcquireCardNotification) {
|
||||
// Handle AcquireCardNotification
|
||||
if (notification instanceof AcquireCardNotification n) {
|
||||
guiHandler.addCard(n.getBonusCard(), n.getCardId());
|
||||
} else if (notification instanceof ActivePlayerNotification n) {
|
||||
gameView.getGuiHandler().setActivePlayer(n.getColor());
|
||||
} else if (notification instanceof CeremonyNotification ceremonyNotification) {
|
||||
@@ -103,60 +104,58 @@ private void handleGame(Notification notification) {
|
||||
ceremonyView.addStatisticsRow(name, v1, v2, v3, v4, v5, v6);
|
||||
}
|
||||
} else if (notification instanceof DiceNowNotification) {
|
||||
// Handle DiceNowNotification
|
||||
} else if (notification instanceof DicingNotification) {
|
||||
// Handle DicingNotification
|
||||
} else if (notification instanceof DrawCardNotification) {
|
||||
// Handle DrawCardNotification
|
||||
guiHandler.showDice();
|
||||
} else if (notification instanceof DicingNotification n) {
|
||||
//TODO
|
||||
} else if (notification instanceof DrawCardNotification n) {
|
||||
//TODO ???
|
||||
} else if (notification instanceof HomeMoveNotification home) {
|
||||
gameView.getBoardHandler().moveHomePiece(home.getPieceId(), home.getHomeIndex());
|
||||
boardHandler.moveHomePiece(home.getPieceId(), home.getHomeIndex());
|
||||
} else if (notification instanceof InterruptNotification) {
|
||||
// Handle InterruptNotification
|
||||
//TODO
|
||||
} else if (notification instanceof MovePieceNotification n) {
|
||||
if(n.isMoveStart()) {
|
||||
//StartMove
|
||||
gameView.getBoardHandler().movePieceStart(n.getPiece(), n.getMoveIndex());
|
||||
boardHandler.movePieceStart(n.getPiece(), n.getMoveIndex());
|
||||
}
|
||||
else {
|
||||
//InfieldMove
|
||||
gameView.getBoardHandler().movePiece(n.getPiece(), n.getStartIndex(), n.getMoveIndex());
|
||||
boardHandler.movePiece(n.getPiece(), n.getStartIndex(), n.getMoveIndex());
|
||||
}
|
||||
} else if (notification instanceof ThrowPieceNotification n) {
|
||||
boardHandler.throwPiece(n.getPieceId());
|
||||
} else if (notification instanceof NoShieldNotification n) {
|
||||
boardHandler.unshieldPiece(n.getPieceId());
|
||||
} else if (notification instanceof PlayCardNotification n) {
|
||||
switch(n.getCard()){
|
||||
case SWAP -> guiHandler.swap();
|
||||
case TURBO -> guiHandler.turbo();
|
||||
case SHIELD -> guiHandler.shield();
|
||||
default -> throw new RuntimeException("invalid card");
|
||||
}
|
||||
} else if (notification instanceof MoveThrowPieceNotification) {
|
||||
MoveThrowPieceNotification n = (MoveThrowPieceNotification)notification;
|
||||
//gameView.getBoardHandler().throwPiece(n.); //TODO
|
||||
} else if (notification instanceof NoShieldNotification) {
|
||||
NoShieldNotification n = (NoShieldNotification)notification;
|
||||
gameView.getBoardHandler().unshieldPiece(n.getPieceId());
|
||||
} else if (notification instanceof PieceInGameNotification) {
|
||||
// Handle PieceInGameNotification
|
||||
} else if (notification instanceof PlayCardNotification) {
|
||||
// Handle PlayCardNotification
|
||||
} else if (notification instanceof PlayerInGameNotification n) {
|
||||
// Handle PlayerInGameNotification
|
||||
gameView.getBoardHandler().addPlayer(n.getColor(),n.getPiecesList());
|
||||
gameView.getGuiHandler().addPlayer(n.getColor(),n.getName());
|
||||
boardHandler.addPlayer(n.getColor(),n.getPiecesList());
|
||||
guiHandler.addPlayer(n.getColor(),n.getName(), gameView.getOwnColor() == n.getColor());
|
||||
} else if (notification instanceof ResumeNotification) {
|
||||
// Handle ResumeNotification
|
||||
} else if (notification instanceof RollDiceNotification) {
|
||||
// Handle RollDiceNotification
|
||||
} else if (notification instanceof SelectableCardsNotification) {
|
||||
// Handle SelectableCardsNotification
|
||||
} else if (notification instanceof ShieldActiveNotification) {
|
||||
ShieldActiveNotification n = (ShieldActiveNotification)notification;
|
||||
gameView.getBoardHandler().shieldPiece(n.getPieceId());
|
||||
} else if (notification instanceof ShieldSuppressedNotification) {
|
||||
ShieldSuppressedNotification n = (ShieldSuppressedNotification)notification;
|
||||
gameView.getBoardHandler().suppressShield(n.getPieceId());
|
||||
} else if (notification instanceof RollDiceNotification n) {
|
||||
guiHandler.rollDice(n.getEyes());
|
||||
//TODO multiplicator
|
||||
} else if (notification instanceof SelectableCardsNotification n) {
|
||||
guiHandler.setSelectableCards(n.getCards());
|
||||
} else if (notification instanceof ShieldActiveNotification n) {
|
||||
boardHandler.shieldPiece(n.getPieceId());
|
||||
} else if (notification instanceof ShieldSuppressedNotification n) {
|
||||
boardHandler.suppressShield(n.getPieceId());
|
||||
} else if (notification instanceof StartDialogNotification) {
|
||||
app.enter(MdgaState.MAIN);
|
||||
} else if (notification instanceof SwapPieceNotification n) {
|
||||
gameView.getBoardHandler().swapPieces(n.getFirstPiece(), n.getSecondPiece());
|
||||
boardHandler.swapPieces(n.getFirstPiece(), n.getSecondPiece());
|
||||
} else if (notification instanceof WaitMoveNotification) {
|
||||
// Handle WaitMoveNotification
|
||||
//TODO disable all hover, highlight, etc
|
||||
} else if (notification instanceof SelectableMoveNotification n) {
|
||||
gameView.getBoardHandler().outlineMove(n.getPieces(), n.getMoveIndexe(), n.getHomeMoves());
|
||||
boardHandler.outlineMove(n.getPieces(), n.getMoveIndexe(), n.getHomeMoves());
|
||||
} else if (notification instanceof SelectableSwapNotification n) {
|
||||
gameView.getBoardHandler().outlineSwap(n.getOwnPieces(), n.getEnemyPieces());
|
||||
boardHandler.outlineSwap(n.getOwnPieces(), n.getEnemyPieces());
|
||||
} else {
|
||||
throw new RuntimeException("notification not expected: " + notification.toString());
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import com.jme3.scene.control.AbstractControl;
|
||||
import pp.mdga.client.Asset;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
import pp.mdga.client.gui.DiceControl;
|
||||
import pp.mdga.game.Color;
|
||||
|
||||
import java.util.*;
|
||||
@@ -46,6 +47,7 @@ public class BoardHandler {
|
||||
private List<PieceControl> selectableEnemyPieces = new ArrayList<>();
|
||||
private PieceControl selectedOwnPiece;
|
||||
private PieceControl selectedEnemyPiece;
|
||||
private DiceControl diceControl;
|
||||
|
||||
public BoardHandler(MdgaApp app, FilterPostProcessor fpp) {
|
||||
if(app == null) throw new RuntimeException("app is null");
|
||||
@@ -77,6 +79,8 @@ private void initMap() {
|
||||
this.waitingPiecesMap = new HashMap<>();
|
||||
this.pieceColor = new HashMap<>();
|
||||
this.outlineControls = new HashSet<>();
|
||||
diceControl = new DiceControl(app.getAssetManager());
|
||||
diceControl.create(new Vector3f(0,0,0), 0.7f, true);
|
||||
|
||||
|
||||
|
||||
@@ -193,6 +197,20 @@ private <T, E> List<T> removeItemFromMapList(Map<E,List<T>> map, E key, T item){
|
||||
return list;
|
||||
}
|
||||
|
||||
private Vector3f getWaitingPos(Color color){
|
||||
return getMeanPosition(waitingNodesMap.get(color).stream().map(NodeControl::getLocation).toList());
|
||||
}
|
||||
|
||||
public static Vector3f getMeanPosition(List<Vector3f> vectors) {
|
||||
if (vectors.isEmpty()) return new Vector3f(0, 0, 0);
|
||||
|
||||
Vector3f sum = new Vector3f(0, 0, 0);
|
||||
for (Vector3f v : vectors) {
|
||||
sum.addLocal(v);
|
||||
}
|
||||
return sum.divide(vectors.size());
|
||||
}
|
||||
|
||||
//public methods****************************************************************************************************
|
||||
public void addPlayer(Color color, List<UUID> uuid) {
|
||||
if (!isInitialised) throw new RuntimeException("BoardHandler is not initialized");
|
||||
@@ -449,10 +467,12 @@ else if(selectableEnemyPieces.contains(pieceSelected)) {
|
||||
public void clearSelectable(){
|
||||
for(PieceControl p : selectableEnemyPieces) {
|
||||
p.unSelect();
|
||||
p.unHighlight();
|
||||
p.setSelectable(false);
|
||||
}
|
||||
for(PieceControl p : selectableOwnPieces) {
|
||||
p.unSelect();
|
||||
p.unHighlight();
|
||||
p.setSelectable(false);
|
||||
}
|
||||
selectableEnemyPieces.clear();
|
||||
@@ -461,8 +481,6 @@ public void clearSelectable(){
|
||||
selectedOwnPiece = null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void deOutline(int index){
|
||||
infield.get(index).deOutline();
|
||||
|
||||
@@ -473,5 +491,15 @@ public void enableHover(UUID uuid){
|
||||
pieces.get(uuid).setHoverable(true);
|
||||
}
|
||||
|
||||
public void showDice(Color color){
|
||||
node.attachChild(diceControl.getSpatial());
|
||||
diceControl.setPos(getWaitingPos(color).add(new Vector3f(0,0,4)));
|
||||
diceControl.spin();
|
||||
}
|
||||
|
||||
public void hideDice(){
|
||||
diceControl.hide();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.post.FilterPostProcessor;
|
||||
import com.jme3.shadow.DirectionalLightShadowFilter;
|
||||
import com.jme3.shadow.EdgeFilteringMode;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
|
||||
public class CameraHandler {
|
||||
@@ -29,6 +30,9 @@ public CameraHandler(MdgaApp app, FilterPostProcessor fpp){
|
||||
|
||||
DirectionalLightShadowFilter dlsf = new DirectionalLightShadowFilter(app.getAssetManager(), SHADOWMAP_SIZE, 4);
|
||||
dlsf.setLight(sun);
|
||||
dlsf.setEnabled(true);
|
||||
dlsf.setEdgeFilteringMode(EdgeFilteringMode.PCFPOISSON);
|
||||
dlsf.setShadowIntensity(0.7f);
|
||||
fpp.addFilter(dlsf);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
import com.jme3.renderer.Camera;
|
||||
import com.jme3.renderer.RenderManager;
|
||||
import com.jme3.renderer.ViewPort;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.scene.control.AbstractControl;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
import pp.mdga.client.board.Outline.SelectObjectOutliner;
|
||||
@@ -12,17 +13,21 @@
|
||||
public class OutlineControl extends AbstractControl {
|
||||
private static final int THICKNESS_DEFAULT = 6;
|
||||
private final SelectObjectOutliner outlineOwn;
|
||||
private MdgaApp app;
|
||||
|
||||
|
||||
public OutlineControl(MdgaApp app, FilterPostProcessor fpp){
|
||||
this.app = app;
|
||||
outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), app.getCamera());
|
||||
}
|
||||
|
||||
public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam){
|
||||
this.app = app;
|
||||
outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), cam);
|
||||
}
|
||||
|
||||
public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam, int thickness){
|
||||
this.app = app;
|
||||
outlineOwn = new SelectObjectOutliner(thickness, fpp, app.getRenderManager(), app.getAssetManager(), cam);
|
||||
}
|
||||
|
||||
@@ -48,4 +53,23 @@ protected void controlUpdate(float tpf) {
|
||||
protected void controlRender(RenderManager rm, ViewPort vp) {
|
||||
|
||||
}
|
||||
|
||||
public void initSpatial(){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial){
|
||||
if(this.spatial == null && spatial != null){
|
||||
super.setSpatial(spatial);
|
||||
initSpatial();
|
||||
}
|
||||
else{
|
||||
super.setSpatial(spatial);
|
||||
}
|
||||
}
|
||||
|
||||
public MdgaApp getApp() {
|
||||
return app;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,9 +32,9 @@ public class PieceControl extends OutlineControl {
|
||||
private static final ColorRGBA OUTLINE_ENEMY_HOVER_COLOR = ColorRGBA.Green;
|
||||
private static final ColorRGBA OUTLINE_OWN_SELECT_COLOR = ColorRGBA.Cyan;
|
||||
private static final ColorRGBA OUTLINE_ENEMY_SELECT_COLOR = ColorRGBA.Orange;
|
||||
private static final int OUTLINE_HIGHLIGHT_WIDTH = 6;
|
||||
private static final int OUTLINE_HOVER_WIDTH = 6;
|
||||
private static final int OUTLINE_SELECT_WIDTH = 8;
|
||||
private static final int OUTLINE_HIGHLIGHT_WIDTH = 8;
|
||||
private static final int OUTLINE_HOVER_WIDTH = 8;
|
||||
private static final int OUTLINE_SELECT_WIDTH = 10;
|
||||
|
||||
private final Node parentNode;
|
||||
private boolean enemy;
|
||||
@@ -87,16 +87,6 @@ public void setLocation(Vector3f loc){
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpatial(Spatial spatial){
|
||||
if(this.spatial == null && spatial != null){
|
||||
super.setSpatial(spatial);
|
||||
initSpatial();
|
||||
}
|
||||
else{
|
||||
super.setSpatial(spatial);
|
||||
}
|
||||
}
|
||||
|
||||
public void initSpatial(){
|
||||
setRotation(this.initRotation);
|
||||
|
||||
@@ -143,8 +133,6 @@ public Material getMaterial(){
|
||||
return ((Geometry) getSpatial()).getMaterial();
|
||||
}
|
||||
|
||||
|
||||
//highlight own/enemy figure to select
|
||||
public void highlight(boolean enemy) {
|
||||
this.enemy = enemy;
|
||||
highlight = true;
|
||||
@@ -153,9 +141,9 @@ public void highlight(boolean enemy) {
|
||||
|
||||
public void unHighlight(){
|
||||
highlight = false;
|
||||
deOutline();
|
||||
}
|
||||
|
||||
|
||||
public void hover(){
|
||||
if(!hoverable) return;
|
||||
super.outline(enemy ? OUTLINE_ENEMY_HOVER_COLOR : OUTLINE_OWN_HOVER_COLOR, OUTLINE_HOVER_WIDTH);
|
||||
@@ -194,8 +182,4 @@ public boolean isSelectable() {
|
||||
public void setHoverable(boolean hoverable) {
|
||||
this.hoverable = hoverable;
|
||||
}
|
||||
|
||||
public void deOutline() {
|
||||
super.deOutline();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package pp.mdga.client.gui;
|
||||
|
||||
import com.jme3.asset.AssetManager;
|
||||
import com.jme3.font.BitmapFont;
|
||||
import com.jme3.font.BitmapText;
|
||||
import com.jme3.math.ColorRGBA;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.scene.Node;
|
||||
import com.jme3.system.AppSettings;
|
||||
import pp.mdga.client.Asset;
|
||||
|
||||
public class ActionTextHandler {
|
||||
private Node root;
|
||||
|
||||
public ActionTextHandler(AppSettings appSettings, AssetManager assetManager, Node guiNode){
|
||||
root = new Node("actionTextRoot");
|
||||
guiNode.attachChild(root);
|
||||
|
||||
root.setLocalTranslation(center(appSettings.getWidth(), appSettings.getHeight(), Vector3f.ZERO));
|
||||
BitmapFont playerFont = assetManager.loadFont("Fonts/Gunplay.fnt");
|
||||
|
||||
root.attachChild(createTextWithSpacing(playerFont, "TEST", 20f, 250));
|
||||
}
|
||||
|
||||
public static Node createTextWithSpacing(BitmapFont font, String text, float spacing, float size) {
|
||||
Node textNode = new Node("TextWithSpacing");
|
||||
Node center = new Node();
|
||||
float xOffset = 0;
|
||||
|
||||
for (char c : text.toCharArray()) {
|
||||
BitmapText letter = new BitmapText(font);
|
||||
letter.setSize(size);
|
||||
letter.setText(Character.toString(c));
|
||||
letter.setLocalTranslation(xOffset, letter.getHeight()/2, 0);
|
||||
center.attachChild(letter);
|
||||
|
||||
xOffset += letter.getLineWidth() + spacing;
|
||||
}
|
||||
center.setLocalTranslation(new Vector3f(-xOffset/2,0,0));
|
||||
textNode.attachChild(center);
|
||||
|
||||
return textNode;
|
||||
}
|
||||
|
||||
private Vector3f center(float width, float height, Vector3f pos){
|
||||
return new Vector3f(pos.x+width/2, pos.y+height/2,0);
|
||||
}
|
||||
private Vector3f centerText(float width, float height, Vector3f pos){
|
||||
return center(-width, height, pos);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,24 +1,153 @@
|
||||
package pp.mdga.client.gui;
|
||||
|
||||
import com.jme3.font.BitmapFont;
|
||||
import com.jme3.font.BitmapText;
|
||||
import com.jme3.material.Material;
|
||||
import com.jme3.math.ColorRGBA;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.post.FilterPostProcessor;
|
||||
import com.jme3.renderer.Camera;
|
||||
import com.jme3.renderer.RenderManager;
|
||||
import com.jme3.renderer.ViewPort;
|
||||
import com.jme3.scene.Geometry;
|
||||
import com.jme3.scene.Node;
|
||||
import com.jme3.scene.control.AbstractControl;
|
||||
import com.jme3.scene.shape.Box;
|
||||
import com.jme3.scene.shape.Cylinder;
|
||||
import com.jme3.scene.shape.Sphere;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
import pp.mdga.client.board.OutlineControl;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class CardControl extends OutlineControl {
|
||||
|
||||
private static final ColorRGBA OUTLINE_COLOR = ColorRGBA.Yellow;
|
||||
private static final int OUTLINE_THICKNESS = 9;
|
||||
|
||||
public CardControl(MdgaApp app, FilterPostProcessor fpp, Camera cam){
|
||||
private static final ColorRGBA HIGHLIGHT_COLOR = ColorRGBA.Yellow;
|
||||
private static final int HIGHLIGHT_WIDTH = 9;
|
||||
|
||||
private static final ColorRGBA HOVER_COLOR = ColorRGBA.Green;
|
||||
private static final int HOVER_WIDTH = 12;
|
||||
|
||||
private static final ColorRGBA SELECT_COLOR = ColorRGBA.Blue;
|
||||
private static final int SELECT_WIDTH = 13;
|
||||
|
||||
|
||||
private static final int OUTLINE_THICKNESS = 9;
|
||||
private boolean hoverable;
|
||||
private boolean highlight;
|
||||
private boolean selectable;
|
||||
private boolean select;
|
||||
private Node root;
|
||||
private BitmapText num;
|
||||
|
||||
public CardControl(MdgaApp app, FilterPostProcessor fpp, Camera cam, Node root){
|
||||
super(app, fpp, cam, OUTLINE_THICKNESS);
|
||||
this.root = root;
|
||||
|
||||
|
||||
Node rootNum = createNum();
|
||||
rootNum.setLocalTranslation(new Vector3f(0.35f,0.8f,0));
|
||||
root.attachChild(rootNum);
|
||||
}
|
||||
|
||||
private Node createNum(){
|
||||
Node rootNum = new Node("root Num");
|
||||
Geometry circle = new Geometry("circle", new Sphere(20,20,1));
|
||||
circle.setLocalTranslation(new Vector3f(0.03f,0.01f,1));
|
||||
circle.setLocalScale(0.2f);
|
||||
Material mat = new Material(getApp().getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
mat.setColor("Color", ColorRGBA.Black);
|
||||
circle.setMaterial(mat);
|
||||
root.attachChild(circle);
|
||||
BitmapFont guiFont = getApp().getAssetManager().loadFont("Fonts/Gunplay.fnt");
|
||||
num = new BitmapText(guiFont);
|
||||
num.setSize(0.3f);
|
||||
num.setText("1");
|
||||
num.setColor(ColorRGBA.White);
|
||||
num.setLocalTranslation(-num.getLineWidth() / 2, num.getHeight() / 2, 2);
|
||||
rootNum.attachChild(circle);
|
||||
rootNum.attachChild(num);
|
||||
return rootNum;
|
||||
}
|
||||
|
||||
public void setNumCard(int num){
|
||||
this.num.setText(String.valueOf(num));
|
||||
}
|
||||
|
||||
public Node getRoot() {
|
||||
return root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initSpatial(){
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void outline(){
|
||||
super.outline(OUTLINE_COLOR);
|
||||
}
|
||||
|
||||
private final static Vector3f HIGHLIGHT_Y = new Vector3f(0,0.4f,0);
|
||||
|
||||
public void setHighlight() {
|
||||
this.highlight = true;
|
||||
root.setLocalTranslation(root.getLocalTranslation().add(HIGHLIGHT_Y));
|
||||
highlight();
|
||||
}
|
||||
|
||||
public void highlight() {
|
||||
super.outline(HIGHLIGHT_COLOR, HIGHLIGHT_WIDTH);
|
||||
}
|
||||
|
||||
public void unHighlight(){
|
||||
highlight = false;
|
||||
root.setLocalTranslation(root.getLocalTranslation().subtract(HIGHLIGHT_Y));
|
||||
deOutline();
|
||||
}
|
||||
|
||||
public void hover(){
|
||||
if(!hoverable) return;
|
||||
super.outline(HOVER_COLOR, HOVER_WIDTH);
|
||||
}
|
||||
|
||||
public void hoverOff(){
|
||||
if(!hoverable) return;
|
||||
|
||||
if(select) select();
|
||||
else if(highlight) highlight();
|
||||
else deOutline();
|
||||
}
|
||||
|
||||
public void select(){
|
||||
if(!selectable) return;
|
||||
select = true;
|
||||
super.outline(SELECT_COLOR, SELECT_WIDTH);
|
||||
}
|
||||
|
||||
public void unSelect(){
|
||||
if(!selectable) return;
|
||||
select = false;
|
||||
if(highlight) highlight();
|
||||
else deOutline();
|
||||
}
|
||||
|
||||
public void setSelectable(boolean selectable){
|
||||
this.selectable = selectable;
|
||||
}
|
||||
|
||||
public boolean isSelected() {
|
||||
return select;
|
||||
}
|
||||
|
||||
public boolean isSelectable() {
|
||||
return selectable;
|
||||
}
|
||||
|
||||
public void setHoverable(boolean hoverable) {
|
||||
this.hoverable = hoverable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
import com.jme3.app.Application;
|
||||
import com.jme3.app.state.AbstractAppState;
|
||||
import com.jme3.app.state.AppStateManager;
|
||||
import com.jme3.light.DirectionalLight;
|
||||
import com.jme3.material.Material;
|
||||
import com.jme3.math.ColorRGBA;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.post.FilterPostProcessor;
|
||||
import com.jme3.post.filters.ComposeFilter;
|
||||
@@ -12,6 +14,9 @@
|
||||
import com.jme3.renderer.ViewPort;
|
||||
import com.jme3.scene.Node;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.shadow.DirectionalLightShadowFilter;
|
||||
import com.jme3.shadow.DirectionalLightShadowRenderer;
|
||||
import com.jme3.shadow.EdgeFilteringMode;
|
||||
import com.jme3.texture.Image;
|
||||
import com.jme3.texture.Texture2D;
|
||||
import pp.mdga.client.Asset;
|
||||
@@ -48,6 +53,22 @@ public void initialize(AppStateManager stateManager, Application app ) {
|
||||
view.attachScene(root);
|
||||
fpp.setFrameBufferFormat(Image.Format.RGBA8);
|
||||
fpp.addFilter(new ComposeFilter(backTexture));
|
||||
|
||||
|
||||
DirectionalLight sun = new DirectionalLight();
|
||||
sun.setColor(ColorRGBA.White);
|
||||
sun.setDirection(new Vector3f(.5f,-.5f,-1));
|
||||
root.addLight(sun);
|
||||
|
||||
final int SHADOWMAP_SIZE=1024*8;
|
||||
|
||||
DirectionalLightShadowFilter dlsf = new DirectionalLightShadowFilter(app.getAssetManager(), SHADOWMAP_SIZE, 3);
|
||||
dlsf.setLight(sun);
|
||||
dlsf.setEnabled(true);
|
||||
dlsf.setEdgeFilteringMode(EdgeFilteringMode.PCFPOISSON);
|
||||
dlsf.setShadowIntensity(.5f);
|
||||
fpp.addFilter(dlsf);
|
||||
|
||||
view.addProcessor(fpp);
|
||||
|
||||
if(!init) init = true;
|
||||
|
||||
@@ -1,36 +1,48 @@
|
||||
package pp.mdga.client.gui;
|
||||
|
||||
import com.jme3.asset.AssetManager;
|
||||
import com.jme3.material.Material;
|
||||
import com.jme3.math.FastMath;
|
||||
import com.jme3.math.Quaternion;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.renderer.RenderManager;
|
||||
import com.jme3.renderer.ViewPort;
|
||||
import com.jme3.renderer.queue.RenderQueue;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.scene.control.AbstractControl;
|
||||
import pp.mdga.client.Asset;
|
||||
import pp.mdga.message.server.Dice;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import static com.jme3.material.Materials.LIGHTING;
|
||||
import static com.jme3.material.Materials.UNSHADED;
|
||||
|
||||
public class DiceControl extends AbstractControl {
|
||||
private final Random random = new Random();
|
||||
private Quaternion targetRotation; // Final rotation of the dice
|
||||
private final Vector3f angularVelocity = new Vector3f(); // Rotational velocity (radians/sec)
|
||||
private float deceleration = 0.5f; // Friction-like deceleration
|
||||
private boolean isRolling = false;
|
||||
private boolean slerp = false;
|
||||
private Quaternion targetRotation;
|
||||
private final Vector3f angularVelocity = new Vector3f();
|
||||
private float deceleration = 0.5f;
|
||||
private float timeElapsed = 0.0f;
|
||||
private float rollDuration = 0.0001f;
|
||||
private static final int ANGULAR_MIN = 5;
|
||||
private static final int ANGULAR_MAX = 15;
|
||||
private static final int ANGULAR_SPIN = 10;
|
||||
private boolean isRolling = false;
|
||||
private boolean slerp = false;
|
||||
private boolean spin = false;
|
||||
private final AssetManager assetManager;
|
||||
|
||||
public DiceControl(AssetManager assetManager){
|
||||
this.assetManager = assetManager;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void controlUpdate(float tpf) {
|
||||
if (isRolling) {
|
||||
if(!slerp) {
|
||||
// Apply rotational velocity to the dice
|
||||
Quaternion currentRotation = spatial.getLocalRotation();
|
||||
Quaternion deltaRotation = new Quaternion();
|
||||
deltaRotation.fromAngles(
|
||||
angularVelocity.x * tpf,
|
||||
angularVelocity.y * tpf,
|
||||
angularVelocity.z * tpf
|
||||
);
|
||||
spatial.setLocalRotation(currentRotation.mult(deltaRotation));
|
||||
spinWithAngularVelocity(tpf);
|
||||
|
||||
// Gradually reduce rotational velocity (simulate deceleration)
|
||||
angularVelocity.subtractLocal(
|
||||
@@ -47,9 +59,6 @@ protected void controlUpdate(float tpf) {
|
||||
|
||||
|
||||
if (timeElapsed > 1.0f) timeElapsed = 1.0f;
|
||||
// Quaternion interpolated = new Quaternion();
|
||||
// interpolated.slerp(spatial.getLocalRotation(), targetRotation, progress);
|
||||
// spatial.setLocalRotation(interpolated);
|
||||
Quaternion interpolated = spatial.getLocalRotation().clone();
|
||||
interpolated.nlerp(targetRotation, lerp(timeElapsed));
|
||||
spatial.setLocalRotation(interpolated);
|
||||
@@ -59,41 +68,52 @@ protected void controlUpdate(float tpf) {
|
||||
isRolling = false;
|
||||
slerp = false;
|
||||
}
|
||||
|
||||
}
|
||||
}else if(spin){
|
||||
spinWithAngularVelocity(tpf);
|
||||
}
|
||||
}
|
||||
|
||||
private void spinWithAngularVelocity(float tpf){
|
||||
Quaternion currentRotation = spatial.getLocalRotation();
|
||||
Quaternion deltaRotation = new Quaternion();
|
||||
deltaRotation.fromAngles(
|
||||
angularVelocity.x * tpf,
|
||||
angularVelocity.y * tpf,
|
||||
angularVelocity.z * tpf
|
||||
);
|
||||
spatial.setLocalRotation(currentRotation.mult(deltaRotation));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void controlRender(RenderManager rm, ViewPort vp) {
|
||||
// No custom rendering needed
|
||||
}
|
||||
|
||||
public void rollDice(int diceNum) {
|
||||
if (isRolling) return; // Prevent re-rolling during animation
|
||||
|
||||
// Set high initial rotational velocity
|
||||
public void rollDice(int diceNum) {
|
||||
if (isRolling) return;
|
||||
spin = false;
|
||||
slerp = false;
|
||||
|
||||
angularVelocity.set(
|
||||
random.nextFloat() * 1000f + 200f, // X-axis speed
|
||||
random.nextFloat() * 1000f + 200f, // Y-axis speed
|
||||
random.nextFloat() * 1000f + 200f // Z-axis speed
|
||||
FastMath.nextRandomInt(ANGULAR_MIN,ANGULAR_MAX),
|
||||
FastMath.nextRandomInt(ANGULAR_MIN,ANGULAR_MAX),
|
||||
FastMath.nextRandomInt(ANGULAR_MIN,ANGULAR_MAX)
|
||||
);
|
||||
|
||||
// Set final target rotation for the diceNum
|
||||
targetRotation = getRotationForDiceNum(diceNum);
|
||||
|
||||
isRolling = true;
|
||||
}
|
||||
|
||||
private Quaternion getRotationForDiceNum(int diceNum) {
|
||||
// Define specific rotations for each dice face (adjust based on your dice model)
|
||||
return switch (diceNum) {
|
||||
case 1 -> new Quaternion().fromAngleAxis((float) (1 * (Math.PI / 2)), Vector3f.UNIT_X); //
|
||||
case 2 -> new Quaternion().fromAngleAxis((float) (1 * (Math.PI / 2)), Vector3f.UNIT_Y); //
|
||||
case 3 -> new Quaternion().fromAngleAxis((float) (0 * (Math.PI / 2)), Vector3f.UNIT_X); //
|
||||
case 4 -> new Quaternion().fromAngleAxis((float) (2 * (Math.PI / 2)), Vector3f.UNIT_Y); //
|
||||
case 5 -> new Quaternion().fromAngleAxis((float) (3 * (Math.PI / 2)), Vector3f.UNIT_Y); //
|
||||
case 6 -> new Quaternion().fromAngleAxis((float) (3 * (Math.PI / 2)), Vector3f.UNIT_X); //
|
||||
case 1 -> new Quaternion().fromAngleAxis((float) (1 * (Math.PI / 2)), Vector3f.UNIT_X);
|
||||
case 2 -> new Quaternion().fromAngleAxis((float) (1 * (Math.PI / 2)), Vector3f.UNIT_Y);
|
||||
case 3 -> new Quaternion().fromAngleAxis((float) (0 * (Math.PI / 2)), Vector3f.UNIT_X);
|
||||
case 4 -> new Quaternion().fromAngleAxis((float) (2 * (Math.PI / 2)), Vector3f.UNIT_Y);
|
||||
case 5 -> new Quaternion().fromAngleAxis((float) (3 * (Math.PI / 2)), Vector3f.UNIT_Y);
|
||||
case 6 -> new Quaternion().fromAngleAxis((float) (3 * (Math.PI / 2)), Vector3f.UNIT_X);
|
||||
default -> throw new IllegalArgumentException("Invalid dice number: " + diceNum);
|
||||
};
|
||||
}
|
||||
@@ -102,4 +122,48 @@ public static float lerp(float t) {
|
||||
return (float) Math.sqrt(1 - Math.pow(t - 1, 2));
|
||||
}
|
||||
|
||||
public void randomRotation() {
|
||||
Quaternion randomRotation = new Quaternion();
|
||||
randomRotation.fromAngles(
|
||||
FastMath.nextRandomFloat() * FastMath.TWO_PI, // Random X rotation
|
||||
FastMath.nextRandomFloat() * FastMath.TWO_PI, // Random Y rotation
|
||||
FastMath.nextRandomFloat() * FastMath.TWO_PI // Random Z rotation
|
||||
);
|
||||
spatial.setLocalRotation(randomRotation);
|
||||
}
|
||||
|
||||
public void spin(){
|
||||
angularVelocity.set(ANGULAR_SPIN,ANGULAR_SPIN,ANGULAR_SPIN);
|
||||
spin = true;
|
||||
}
|
||||
|
||||
public void hide(){
|
||||
spatial.removeFromParent();
|
||||
spin = false;
|
||||
isRolling = false;
|
||||
slerp = false;
|
||||
}
|
||||
|
||||
public void create(Vector3f pos, float scale, boolean shadow){
|
||||
Spatial spatial = assetManager.loadModel(Asset.dice.getModelPath());
|
||||
Material mat;
|
||||
if(shadow){
|
||||
mat = new Material(assetManager, LIGHTING);
|
||||
mat.setTexture("DiffuseMap", assetManager.loadTexture(Asset.dice.getDiffPath()));
|
||||
spatial.setShadowMode(RenderQueue.ShadowMode.CastAndReceive);
|
||||
}
|
||||
else{
|
||||
mat = new Material(assetManager, UNSHADED);
|
||||
mat.setTexture("ColorMap", assetManager.loadTexture(Asset.dice.getDiffPath()));
|
||||
}
|
||||
spatial.setMaterial(mat);
|
||||
spatial.setLocalScale(scale);
|
||||
spatial.setLocalTranslation(pos);
|
||||
spatial.rotate((float)Math.toRadians(90), (float)Math.toRadians(180), (float)Math.toRadians(180));
|
||||
spatial.addControl(this);
|
||||
}
|
||||
|
||||
public void setPos(Vector3f pos){
|
||||
spatial.setLocalTranslation(pos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.post.FilterPostProcessor;
|
||||
import com.jme3.renderer.Camera;
|
||||
import com.jme3.renderer.queue.RenderQueue;
|
||||
import com.jme3.scene.Node;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.texture.Texture2D;
|
||||
@@ -17,40 +18,48 @@
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static com.jme3.material.Materials.UNSHADED;
|
||||
|
||||
|
||||
public class GuiHandler {
|
||||
|
||||
private MdgaApp app;
|
||||
private CardLayer cardLayer;
|
||||
private Map<UUID, CardControl> ownCardsMap;
|
||||
private BitmapFont playerFont;
|
||||
private Node playerNameNode;
|
||||
private List<Color> playerOrder;
|
||||
Map<Color, String> colorNameMap;
|
||||
private Map<UUID, BonusCard> uuidBonusCardMap;
|
||||
private Map<BonusCard, CardControl> bonusCardControlMap;
|
||||
private Map<BonusCard, Integer> bonusCardIntegerMap;
|
||||
|
||||
private static final Vector3f START = new Vector3f(-3,-3,0);
|
||||
private static final Vector3f MARGIN = new Vector3f(2.5f,0,0);
|
||||
|
||||
private static final Vector3f START = new Vector3f(-1.8f,-3.5f,0);
|
||||
private static final Vector3f MARGIN = new Vector3f(1.8f,0,0);
|
||||
|
||||
private final FilterPostProcessor fpp;
|
||||
Texture2D backTexture;
|
||||
private Camera cardLayerCamera;
|
||||
private DiceControl diceControl;
|
||||
|
||||
private Set<CardControl> selectableCards = new HashSet<>();
|
||||
private BonusCard cardSelect = null;
|
||||
private PlayerNameHandler playerNameHandler;
|
||||
|
||||
public GuiHandler(MdgaApp app, Texture2D backTexture) {
|
||||
this.app = app;
|
||||
this.fpp = new FilterPostProcessor(app.getAssetManager());
|
||||
this.backTexture = backTexture;
|
||||
cardLayerCamera = createOverlayCam();
|
||||
uuidBonusCardMap = new HashMap<>();
|
||||
bonusCardIntegerMap = new HashMap<>();
|
||||
bonusCardControlMap = new HashMap<>();
|
||||
}
|
||||
|
||||
public void init(){
|
||||
cardLayer = new CardLayer(fpp, cardLayerCamera, backTexture);
|
||||
app.getStateManager().attach(cardLayer);
|
||||
ownCardsMap = new HashMap<>();
|
||||
playerFont = app.getAssetManager().loadFont("Fonts/Gunplay.fnt");
|
||||
playerNameNode = new Node("player name node");
|
||||
app.getGuiNode().attachChild(playerNameNode);
|
||||
playerOrder = new ArrayList<>();
|
||||
colorNameMap = new HashMap<>();
|
||||
diceControl = new DiceControl(app.getAssetManager());
|
||||
diceControl.create(new Vector3f(0,0,0), 1f, false);
|
||||
|
||||
playerNameHandler = new PlayerNameHandler(app.getGuiNode(), app.getAssetManager(), app.getContext().getSettings());
|
||||
new ActionTextHandler(app.getContext().getSettings(), app.getAssetManager(), app.getGuiNode());
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +69,6 @@ public void shutdown(){
|
||||
}
|
||||
|
||||
cardLayer = null;
|
||||
ownCardsMap = null;
|
||||
}
|
||||
|
||||
private Asset bonusToAsset(BonusCard card){
|
||||
@@ -73,114 +81,75 @@ private Asset bonusToAsset(BonusCard card){
|
||||
}
|
||||
|
||||
public void addCard(BonusCard card, UUID uuid) {
|
||||
CardControl control = createCard(bonusToAsset(card), nextPos());
|
||||
ownCardsMap.put(uuid, control);
|
||||
cardLayer.addSpatial(control.getSpatial());
|
||||
if(card == BonusCard.HIDDEN) throw new RuntimeException("cant add hidden card to gui");
|
||||
|
||||
uuidBonusCardMap.put(uuid, card);
|
||||
if(!bonusCardControlMap.containsKey(card)) {
|
||||
CardControl control = createCard(bonusToAsset(card), nextPos());
|
||||
bonusCardControlMap.put(card, control);
|
||||
cardLayer.addSpatial(control.getRoot());
|
||||
}
|
||||
|
||||
int newNum = bonusCardIntegerMap.getOrDefault(card,0) + 1;
|
||||
bonusCardIntegerMap.put(card, newNum);
|
||||
bonusCardControlMap.get(card).setNumCard(newNum);
|
||||
}
|
||||
|
||||
public void rollDice(int rollNum){
|
||||
if(!(1 <= rollNum && rollNum <= 6)) throw new RuntimeException("rollNum is not in the range [1,6]");
|
||||
diceControl.rollDice(rollNum);
|
||||
}
|
||||
|
||||
public void showDice(){
|
||||
DiceControl control = createDice();
|
||||
cardLayer.addSpatial(control.getSpatial());
|
||||
control.rollDice(1);
|
||||
cardLayer.addSpatial(diceControl.getSpatial());
|
||||
diceControl.spin();
|
||||
}
|
||||
|
||||
private DiceControl createDice() {
|
||||
Spatial spatial = app.getAssetManager().loadModel(Asset.dice.getModelPath());
|
||||
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
mat.setTexture("ColorMap", app.getAssetManager().loadTexture(Asset.dice.getDiffPath()));
|
||||
spatial.setMaterial(mat);
|
||||
spatial.setLocalScale(1f);
|
||||
spatial.setLocalTranslation(new Vector3f(0,0,0));
|
||||
spatial.rotate((float)Math.toRadians(90), (float)Math.toRadians(180), (float)Math.toRadians(180));
|
||||
DiceControl control = new DiceControl();
|
||||
spatial.addControl(control);
|
||||
return control;
|
||||
}
|
||||
|
||||
public void deleteCard(UUID uuid){
|
||||
if(!ownCardsMap.containsKey(uuid)) throw new RuntimeException("uuid dont exist in ownCardsmap");
|
||||
|
||||
cardLayer.deleteSpatial(ownCardsMap.get(uuid).getSpatial());
|
||||
ownCardsMap.remove(uuid);
|
||||
public void hideDice(){
|
||||
diceControl.hide();
|
||||
}
|
||||
|
||||
private Vector3f nextPos() {
|
||||
return START.add(MARGIN.mult(ownCardsMap.size()));
|
||||
return START.add(MARGIN.mult(bonusCardControlMap.size()));
|
||||
}
|
||||
|
||||
private CardControl createCard(Asset card, Vector3f pos){
|
||||
Node rootCard = new Node("Root Card");
|
||||
Spatial spatial = app.getAssetManager().loadModel(card.getModelPath());
|
||||
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
mat.setTexture("ColorMap", app.getAssetManager().loadTexture(card.getDiffPath()));
|
||||
rootCard.attachChild(spatial);
|
||||
// Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md");
|
||||
// mat.setTexture("ColorMap", app.getAssetManager().loadTexture(card.getDiffPath()));
|
||||
mat.setTexture("DiffuseMap", app.getAssetManager().loadTexture(card.getDiffPath()));
|
||||
spatial.setMaterial(mat);
|
||||
spatial.setLocalScale(1f);
|
||||
spatial.setLocalTranslation(pos);
|
||||
rootCard.setLocalTranslation(pos);
|
||||
// spatial.setLocalTranslation(pos);
|
||||
spatial.rotate((float)Math.toRadians(90), (float)Math.toRadians(180), (float)Math.toRadians(180));
|
||||
CardControl control = new CardControl(app, fpp, cardLayer.getOverlayCam());
|
||||
spatial.setShadowMode(RenderQueue.ShadowMode.CastAndReceive);
|
||||
CardControl control = new CardControl(app, fpp, cardLayer.getOverlayCam(), rootCard);
|
||||
spatial.addControl(control);
|
||||
return control;
|
||||
}
|
||||
|
||||
private void drawPlayers(){
|
||||
playerNameNode.detachAllChildren();
|
||||
|
||||
float paddingTop = 10;
|
||||
float paddingLeft = 15;
|
||||
float margin = 35;
|
||||
|
||||
for(int i = 0; i < playerOrder.size(); i++) {
|
||||
Color color = playerOrder.get(i);
|
||||
if(!colorNameMap.containsKey(color)) throw new RuntimeException(color + " isn't mapped to a name");
|
||||
|
||||
String name = colorNameMap.get(color);
|
||||
renderName(name, paddingTop + margin * i, paddingLeft, i == 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void renderName(String name, float paddingTop, float paddingLeft, boolean first){
|
||||
BitmapText hudText = new BitmapText(playerFont);
|
||||
//renderedSize = 45
|
||||
hudText.setSize(28);
|
||||
hudText.setColor(first ? ColorRGBA.Blue : ColorRGBA.White);
|
||||
hudText.setText(name);
|
||||
int screenHeight = app.getContext().getSettings().getHeight();
|
||||
hudText.setLocalTranslation(paddingLeft, screenHeight - paddingTop, 0);
|
||||
playerNameNode.attachChild(hudText);
|
||||
}
|
||||
|
||||
public void setPlayers(List<String> names, List<Color> colors){
|
||||
if(names.size() != colors.size()) throw new RuntimeException("names and colors are not the same size");
|
||||
|
||||
for(int i = 0; i < names.size(); i++){
|
||||
colorNameMap.put(colors.get(i), names.get(i));
|
||||
}
|
||||
|
||||
this.playerOrder = new ArrayList<>(colors);
|
||||
|
||||
drawPlayers();
|
||||
}
|
||||
|
||||
public void addPlayer(Color color, String name){
|
||||
colorNameMap.put(color, name);
|
||||
playerOrder.add(color);
|
||||
drawPlayers();
|
||||
public void addPlayer(Color color, String name, boolean own){
|
||||
playerNameHandler.addPlayer(color, name, own);
|
||||
}
|
||||
|
||||
public void setActivePlayer(Color color){
|
||||
Color lastFirst = playerOrder.remove(0);
|
||||
playerOrder.remove(color);
|
||||
playerOrder.add(0,color);
|
||||
playerOrder.add(lastFirst);
|
||||
|
||||
drawPlayers();
|
||||
playerNameHandler.setActivePlayer(color);
|
||||
}
|
||||
|
||||
private Camera createOverlayCam(){
|
||||
Camera originalCam = app.getCamera();
|
||||
Camera overlayCam = new Camera(originalCam.getWidth(), originalCam.getHeight());
|
||||
overlayCam.setParallelProjection(false);
|
||||
overlayCam.setFrustum(originalCam.getFrustumNear(), originalCam.getFrustumFar(), originalCam.getFrustumLeft(), originalCam.getFrustumRight(),originalCam.getFrustumTop(), originalCam.getFrustumBottom());
|
||||
overlayCam.setFov(originalCam.getFov());
|
||||
overlayCam.setParallelProjection(true);
|
||||
// overlayCam.setFrustum(originalCam.getFrustumNear(), originalCam.getFrustumFar(), originalCam.getFrustumLeft(), originalCam.getFrustumRight(),originalCam.getFrustumTop(), originalCam.getFrustumBottom());
|
||||
float CAMERA_ZOOM = 4;
|
||||
float aspect = (float) originalCam.getWidth() / originalCam.getHeight();
|
||||
float size = CAMERA_ZOOM;
|
||||
overlayCam.setFrustum(-1000, 1000, -aspect * size, aspect * size, size, -size);
|
||||
// overlayCam.setFov(originalCam.getFov());
|
||||
overlayCam.setLocation(new Vector3f(0, 0, 10));
|
||||
overlayCam.lookAt(new Vector3f(0,0,0), Vector3f.UNIT_Y);
|
||||
return overlayCam;
|
||||
@@ -188,11 +157,14 @@ private Camera createOverlayCam(){
|
||||
|
||||
public void test(){
|
||||
UUID uuid = UUID.randomUUID();
|
||||
UUID uuid1 = UUID.randomUUID();
|
||||
addCard(BonusCard.SHIELD, uuid);
|
||||
addCard(BonusCard.TURBO, UUID.randomUUID());
|
||||
addCard(BonusCard.SHIELD, UUID.randomUUID());
|
||||
addCard(BonusCard.TURBO, uuid1);
|
||||
addCard(BonusCard.SWAP, UUID.randomUUID());
|
||||
|
||||
showDice();
|
||||
// setSelectableCards(List.of(uuid,uuid1));
|
||||
// showDice();
|
||||
}
|
||||
|
||||
public Camera getCardLayerCamera() {
|
||||
@@ -204,4 +176,93 @@ public CardLayer getCardLayer(){
|
||||
}
|
||||
|
||||
|
||||
public void setSelectableCards_UUID(List<UUID> selectUuids) {
|
||||
for(UUID uuid : selectUuids) {
|
||||
selectableCards.add(bonusCardControlMap.get(uuidBonusCardMap.get(uuid)));
|
||||
}
|
||||
for(CardControl control : selectableCards){
|
||||
control.setSelectable(true);
|
||||
control.setHoverable(true);
|
||||
control.setHighlight();
|
||||
}
|
||||
}
|
||||
|
||||
public void setSelectableCards(List<BonusCard> select) {
|
||||
for(BonusCard uuid : select) {
|
||||
selectableCards.add(bonusCardControlMap.get(uuid));
|
||||
}
|
||||
for(CardControl control : selectableCards){
|
||||
control.setSelectable(true);
|
||||
control.setHoverable(true);
|
||||
control.setHighlight();
|
||||
}
|
||||
}
|
||||
|
||||
public void clearSelectableCards(){
|
||||
for(CardControl control : selectableCards){
|
||||
control.setSelectable(false);
|
||||
control.setHoverable(false);
|
||||
control.unHighlight();
|
||||
control.unSelect();
|
||||
}
|
||||
selectableCards.clear();
|
||||
cardSelect = null;
|
||||
}
|
||||
|
||||
public void selectCard(CardControl cardControl) {
|
||||
if(cardControl.isSelected()) {
|
||||
cardControl.unSelect();
|
||||
cardSelect = null;
|
||||
}
|
||||
else {
|
||||
for (CardControl control : selectableCards){
|
||||
control.unSelect();
|
||||
}
|
||||
cardControl.select();
|
||||
cardSelect = getKeyByValue(bonusCardControlMap, cardControl);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static <K, V> K getKeyByValue(Map<K, V> map, V value) {
|
||||
for (Map.Entry<K, V> entry : map.entrySet()) {
|
||||
if (entry.getValue().equals(value)) {
|
||||
return entry.getKey();
|
||||
}
|
||||
}
|
||||
return null; // Key not found
|
||||
}
|
||||
|
||||
private SymbolControl createSymbol(Asset asset){
|
||||
Spatial spatial = app.getAssetManager().loadModel(asset.getModelPath());
|
||||
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
mat.setTexture("ColorMap", app.getAssetManager().loadTexture(asset.getDiffPath()));
|
||||
spatial.setMaterial(mat);
|
||||
spatial.setLocalScale(1f);
|
||||
spatial.rotate((float)Math.toRadians(90), (float)Math.toRadians(180), (float)Math.toRadians(180));
|
||||
SymbolControl control = new SymbolControl();
|
||||
spatial.addControl(control);
|
||||
return control;
|
||||
}
|
||||
|
||||
public void shield(){
|
||||
SymbolControl control = createSymbol(Asset.shieldSymbol);
|
||||
cardLayer.addSpatial(control.getSpatial());
|
||||
control.shield();
|
||||
}
|
||||
|
||||
public void swap(){
|
||||
SymbolControl control = createSymbol(Asset.swapSymbol);
|
||||
cardLayer.addSpatial(control.getSpatial());
|
||||
control.swap();
|
||||
}
|
||||
|
||||
public void turbo(){
|
||||
SymbolControl control = createSymbol(Asset.turboSymbol);
|
||||
cardLayer.addSpatial(control.getSpatial());
|
||||
control.turbo();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
package pp.mdga.client.gui;
|
||||
|
||||
import com.jme3.asset.AssetManager;
|
||||
import com.jme3.font.BitmapFont;
|
||||
import com.jme3.font.BitmapText;
|
||||
import com.jme3.math.ColorRGBA;
|
||||
import com.jme3.scene.Node;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.system.AppSettings;
|
||||
import com.jme3.ui.Picture;
|
||||
import pp.mdga.game.Color;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class PlayerNameHandler {
|
||||
private final BitmapFont playerFont;
|
||||
private final Node playerNameNode;
|
||||
private final List<Color> playerOrder;
|
||||
private final Map<Color, String> colorNameMap;
|
||||
private final AppSettings appSettings;
|
||||
private final AssetManager assetManager;
|
||||
private Color ownColor;
|
||||
|
||||
|
||||
private static final float PADDING_TOP = 50;
|
||||
private static final float PADDING_LEFT = 50;
|
||||
private static final float MARGIN_NAMES = 50;
|
||||
private static final float IMAGE_SIZE = 50;
|
||||
private static final float TEXT_SIZE = 28;
|
||||
private static final ColorRGBA NORMAL_COLOR = ColorRGBA.White;
|
||||
private static final ColorRGBA ACTIVE_COLOR = ColorRGBA.Blue;
|
||||
private static final ColorRGBA OWN_COLOR = ColorRGBA.Cyan;
|
||||
|
||||
public PlayerNameHandler(Node guiNode, AssetManager assetManager, AppSettings appSettings){
|
||||
playerFont = assetManager.loadFont("Fonts/Gunplay.fnt");
|
||||
playerNameNode = new Node("player name node");
|
||||
playerOrder = new ArrayList<>();
|
||||
colorNameMap = new HashMap<>();
|
||||
guiNode.attachChild(playerNameNode);
|
||||
this.appSettings = appSettings;
|
||||
this.assetManager = assetManager;
|
||||
}
|
||||
|
||||
private void drawPlayers(){
|
||||
playerNameNode.detachAllChildren();
|
||||
|
||||
|
||||
for(int i = 0; i < playerOrder.size(); i++) {
|
||||
Color color = playerOrder.get(i);
|
||||
if(!colorNameMap.containsKey(color)) throw new RuntimeException(color + " isn't mapped to a name");
|
||||
|
||||
Node nameParent = new Node("nameParent");
|
||||
nameParent.attachChild(createName(colorNameMap.get(color), i == 0, color == ownColor));
|
||||
nameParent.attachChild(createColor(color));
|
||||
nameParent.setLocalTranslation(50,appSettings.getWindowHeight()-PADDING_TOP- MARGIN_NAMES *i,0);
|
||||
playerNameNode.attachChild(nameParent);
|
||||
}
|
||||
}
|
||||
|
||||
private String imagePath(Color color){
|
||||
String root = "./Images/name_pictures/";
|
||||
return switch(color){
|
||||
case ARMY -> root+"HEER_IMAGE.png";
|
||||
case NAVY -> root+"MARINE_IMAGE.png";
|
||||
case CYBER -> root+"CIR_IMAGE.png";
|
||||
case AIRFORCE -> root+"LW_IMAGE.png";
|
||||
};
|
||||
}
|
||||
|
||||
private Spatial createColor(Color color) {
|
||||
Picture pic = new Picture("HUD Picture");
|
||||
pic.setImage(assetManager, imagePath(color), true);
|
||||
pic.setWidth(IMAGE_SIZE);
|
||||
pic.setHeight(IMAGE_SIZE);
|
||||
pic.setPosition(-pic.getWidth()/2,-pic.getHeight()/2);
|
||||
return pic;
|
||||
}
|
||||
|
||||
private ColorRGBA playerColorToColorRGBA(Color color){
|
||||
return switch (color){
|
||||
case ARMY -> ColorRGBA.Green;
|
||||
case NAVY -> ColorRGBA.Blue;
|
||||
case CYBER -> ColorRGBA.Orange;
|
||||
case AIRFORCE -> ColorRGBA.Black;
|
||||
};
|
||||
}
|
||||
|
||||
private Spatial createName(String name, boolean first, boolean own){
|
||||
BitmapText hudText = new BitmapText(playerFont);
|
||||
//renderedSize = 45
|
||||
hudText.setSize(TEXT_SIZE);
|
||||
hudText.setColor(first ? ACTIVE_COLOR : own ? OWN_COLOR : NORMAL_COLOR);
|
||||
hudText.setText(name);
|
||||
hudText.setLocalTranslation(PADDING_LEFT,hudText.getHeight()/2, 0);
|
||||
return hudText;
|
||||
}
|
||||
|
||||
public void addPlayer(Color color, String name, boolean own){
|
||||
if(own) ownColor = color;
|
||||
colorNameMap.put(color, name);
|
||||
playerOrder.add(color);
|
||||
drawPlayers();
|
||||
}
|
||||
|
||||
public void setActivePlayer(Color color) {
|
||||
Color lastFirst = playerOrder.remove(0);
|
||||
playerOrder.remove(color);
|
||||
playerOrder.add(0, color);
|
||||
playerOrder.add(lastFirst);
|
||||
|
||||
drawPlayers();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
package pp.mdga.client.gui;
|
||||
|
||||
import com.jme3.math.Quaternion;
|
||||
import com.jme3.math.Vector3f;
|
||||
import com.jme3.renderer.RenderManager;
|
||||
import com.jme3.renderer.ViewPort;
|
||||
import com.jme3.scene.control.AbstractControl;
|
||||
import pp.mdga.game.BonusCard;
|
||||
|
||||
public class SymbolControl extends AbstractControl {
|
||||
private boolean zoomingIn = false;
|
||||
private boolean zoomingOut = false;
|
||||
private float zoomSpeed = 1f;
|
||||
private float zoomFactor = 3f;
|
||||
private float progress = 0;
|
||||
private BonusCard state;
|
||||
private float rotationSpeed = 0.8f;
|
||||
private Quaternion initialRotation = null;
|
||||
private float Y = 5;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void controlUpdate(float tpf) {
|
||||
if(state == null) return;
|
||||
switch (state){
|
||||
case SHIELD -> shieldUpdate(tpf);
|
||||
case SWAP -> swapUpdate(tpf);
|
||||
case TURBO -> turboUpdate(tpf);
|
||||
case HIDDEN -> throw new RuntimeException("forbidden state");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void controlRender(RenderManager rm, ViewPort vp) {
|
||||
|
||||
}
|
||||
|
||||
private void shieldUpdate(float tpf){
|
||||
if (zoomingIn) {
|
||||
progress += tpf * zoomSpeed;
|
||||
if (progress > 1) progress = 1;
|
||||
spatial.setLocalScale(lerp(0, zoomFactor, easeOut(progress)));
|
||||
if (progress >= 1) {
|
||||
zoomingIn = false;
|
||||
zoomingOut = true;
|
||||
progress = 0;
|
||||
}
|
||||
} else if (zoomingOut) {
|
||||
progress += tpf * zoomSpeed;
|
||||
spatial.setLocalScale(lerp(zoomFactor, 0, easeIn(progress)));
|
||||
if (progress > 1) {
|
||||
zoomingIn = false;
|
||||
spatial.removeFromParent();
|
||||
state = null;
|
||||
progress = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void swapUpdate(float tpf){
|
||||
if (initialRotation == null) {
|
||||
initialRotation = spatial.getLocalRotation().clone();
|
||||
}
|
||||
|
||||
progress += tpf*rotationSpeed;
|
||||
if(progress < 0) return;
|
||||
|
||||
float angle = lerp(0, 360, easeInOut(progress));
|
||||
|
||||
Quaternion newRotation = new Quaternion();
|
||||
newRotation.fromAngleAxis((float) Math.toRadians(angle), new Vector3f(0, 1, 0));
|
||||
|
||||
spatial.setLocalRotation(initialRotation.mult(newRotation));
|
||||
|
||||
if (progress >= 1.2f) {
|
||||
state = null;
|
||||
initialRotation = null;
|
||||
progress = 0;
|
||||
spatial.removeFromParent();
|
||||
}
|
||||
}
|
||||
private void turboUpdate(float tpf){
|
||||
if (zoomingIn) {
|
||||
progress += tpf * zoomSpeed;
|
||||
if (progress > 1) progress = 1;
|
||||
float y = lerp(-Y,0, easeOut(progress));
|
||||
spatial.setLocalTranslation(0,y,0);
|
||||
if (progress >= 1) {
|
||||
zoomingIn = false;
|
||||
zoomingOut = true;
|
||||
progress = 0;
|
||||
}
|
||||
} else if (zoomingOut) {
|
||||
progress += tpf * zoomSpeed;
|
||||
float y = lerp(0,Y, easeIn(progress));
|
||||
spatial.setLocalTranslation(0,y,0);
|
||||
if (progress > 1) {
|
||||
zoomingIn = false;
|
||||
spatial.removeFromParent();
|
||||
state = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void shield(){
|
||||
if(state != null) throw new RuntimeException("another state is avtive");
|
||||
state = BonusCard.SHIELD;
|
||||
zoomingIn = true;
|
||||
zoomingOut = false;
|
||||
progress = 0;
|
||||
spatial.setLocalScale(1f);
|
||||
}
|
||||
|
||||
public void swap(){
|
||||
if(state != null) throw new RuntimeException("another state is avtive");
|
||||
spatial.setLocalScale(3);
|
||||
state = BonusCard.SWAP;
|
||||
progress = -0.2f;
|
||||
}
|
||||
|
||||
public void turbo(){
|
||||
if(state != null) throw new RuntimeException("another state is avtive");
|
||||
spatial.setLocalScale(2);
|
||||
state = BonusCard.TURBO;
|
||||
zoomingIn = true;
|
||||
zoomingOut = false;
|
||||
progress = 0;
|
||||
}
|
||||
|
||||
private static float lerp(float start, float end, float t) {
|
||||
return (1 - t) * start + t * end;
|
||||
}
|
||||
|
||||
private static float easeOut(float t) {
|
||||
return (float) Math.sqrt(1 - Math.pow(t - 1, 2));
|
||||
}
|
||||
|
||||
private float easeInOut(float t) {
|
||||
if(t>1) t=1;
|
||||
return (float) -(Math.cos(Math.PI * t) - 1) / 2;
|
||||
}
|
||||
|
||||
private float easeIn(float t) {
|
||||
return t * t * t * t;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,6 +1,14 @@
|
||||
package pp.mdga.client.view;
|
||||
|
||||
import com.jme3.input.KeyInput;
|
||||
import com.jme3.input.MouseInput;
|
||||
import com.jme3.input.controls.ActionListener;
|
||||
import com.jme3.input.controls.KeyTrigger;
|
||||
import com.jme3.input.controls.MouseButtonTrigger;
|
||||
import com.jme3.post.FilterPostProcessor;
|
||||
import com.jme3.post.filters.ComposeFilter;
|
||||
import com.jme3.shadow.DirectionalLightShadowFilter;
|
||||
import com.jme3.shadow.EdgeFilteringMode;
|
||||
import com.jme3.texture.FrameBuffer;
|
||||
import com.jme3.texture.Image;
|
||||
import com.jme3.texture.Texture2D;
|
||||
@@ -11,6 +19,11 @@
|
||||
import pp.mdga.client.button.ButtonRight;
|
||||
import pp.mdga.client.button.SettingsButton;
|
||||
import pp.mdga.client.gui.GuiHandler;
|
||||
import pp.mdga.game.Color;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class GameView extends MdgaView {
|
||||
private BoardHandler boardHandler;
|
||||
@@ -19,6 +32,8 @@ public class GameView extends MdgaView {
|
||||
|
||||
private ButtonRight cheatButton; //TODO
|
||||
|
||||
private Color ownColor = null;
|
||||
|
||||
public GameView(MdgaApp app) {
|
||||
super(app);
|
||||
|
||||
@@ -48,10 +63,29 @@ public void onEnter() {
|
||||
camera.init();
|
||||
boardHandler.init();
|
||||
guiHandler.init();
|
||||
continueButton.show();
|
||||
|
||||
|
||||
|
||||
// boardHandler.addPlayer(Color.AIRFORCE, test);
|
||||
// boardHandler.movePieceStart(player0, 0);
|
||||
// boardHandler.enableHover(player0);
|
||||
// boardHandler.enableHover(player1);
|
||||
// boardHandler.highlight(player0, true);
|
||||
|
||||
|
||||
|
||||
// boardHandler.outline(player0, true);
|
||||
|
||||
// boardHandler.outline(10);
|
||||
|
||||
guiHandler.test();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLeave() {
|
||||
continueButton.hide();
|
||||
|
||||
camera.shutdown();
|
||||
boardHandler.shutdown();
|
||||
guiHandler.shutdown();
|
||||
@@ -88,4 +122,12 @@ public BoardHandler getBoardHandler() {
|
||||
public GuiHandler getGuiHandler() {
|
||||
return guiHandler;
|
||||
}
|
||||
|
||||
public void setOwnColor(Color ownColor) {
|
||||
this.ownColor = ownColor;
|
||||
}
|
||||
|
||||
public Color getOwnColor() {
|
||||
return ownColor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,195 +1,195 @@
|
||||
info face=null size=45 bold=0 italic=0 charset=ASCII unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1
|
||||
common lineHeight=55 base=26 scaleW=512 scaleH=512 pages=1 packed=0
|
||||
info face=null size=178 bold=0 italic=0 charset=ASCII unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1
|
||||
common lineHeight=214 base=26 scaleW=2048 scaleH=2048 pages=1 packed=0
|
||||
page id=0 file="Gunplay.png"
|
||||
chars count=255
|
||||
char id=9 x=0 y=11 width=0 height=55 xoffset=0 yoffset=0 xadvance=-1 page=0 chnl=0
|
||||
char id=10 x=0 y=11 width=0 height=55 xoffset=0 yoffset=0 xadvance=-1 page=0 chnl=0
|
||||
char id=13 x=0 y=11 width=0 height=55 xoffset=0 yoffset=0 xadvance=-1 page=0 chnl=0
|
||||
char id=32 x=0 y=11 width=0 height=55 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=0
|
||||
char id=33 x=0 y=11 width=9 height=55 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=34 x=9 y=11 width=15 height=55 xoffset=2 yoffset=0 xadvance=17 page=0 chnl=0
|
||||
char id=35 x=24 y=11 width=24 height=55 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=36 x=48 y=11 width=20 height=55 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=0
|
||||
char id=37 x=68 y=11 width=37 height=55 xoffset=1 yoffset=0 xadvance=38 page=0 chnl=0
|
||||
char id=38 x=105 y=11 width=32 height=55 xoffset=1 yoffset=0 xadvance=32 page=0 chnl=0
|
||||
char id=39 x=137 y=11 width=7 height=55 xoffset=2 yoffset=0 xadvance=9 page=0 chnl=0
|
||||
char id=40 x=144 y=11 width=10 height=55 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=41 x=154 y=11 width=10 height=55 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=42 x=164 y=11 width=17 height=55 xoffset=1 yoffset=0 xadvance=17 page=0 chnl=0
|
||||
char id=43 x=181 y=11 width=21 height=55 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=0
|
||||
char id=44 x=202 y=11 width=9 height=55 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=45 x=211 y=11 width=15 height=55 xoffset=2 yoffset=0 xadvance=18 page=0 chnl=0
|
||||
char id=46 x=226 y=11 width=9 height=55 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=47 x=235 y=11 width=25 height=55 xoffset=0 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=48 x=260 y=11 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=49 x=286 y=11 width=15 height=55 xoffset=0 yoffset=0 xadvance=15 page=0 chnl=0
|
||||
char id=50 x=301 y=11 width=26 height=55 xoffset=1 yoffset=0 xadvance=27 page=0 chnl=0
|
||||
char id=51 x=327 y=11 width=25 height=55 xoffset=1 yoffset=0 xadvance=26 page=0 chnl=0
|
||||
char id=52 x=352 y=11 width=28 height=55 xoffset=0 yoffset=0 xadvance=27 page=0 chnl=0
|
||||
char id=53 x=380 y=11 width=24 height=55 xoffset=1 yoffset=0 xadvance=26 page=0 chnl=0
|
||||
char id=54 x=404 y=11 width=25 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=55 x=429 y=11 width=23 height=55 xoffset=1 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=56 x=452 y=11 width=25 height=55 xoffset=1 yoffset=0 xadvance=26 page=0 chnl=0
|
||||
char id=57 x=477 y=11 width=26 height=55 xoffset=1 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=58 x=503 y=11 width=8 height=55 xoffset=2 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=59 x=0 y=66 width=9 height=55 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=60 x=9 y=66 width=14 height=55 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=0
|
||||
char id=61 x=23 y=66 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=62 x=45 y=66 width=14 height=55 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=0
|
||||
char id=63 x=59 y=66 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=64 x=82 y=66 width=32 height=55 xoffset=1 yoffset=0 xadvance=34 page=0 chnl=0
|
||||
char id=65 x=114 y=66 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=66 x=143 y=66 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=67 x=169 y=66 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=68 x=195 y=66 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=69 x=221 y=66 width=21 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=70 x=242 y=66 width=21 height=55 xoffset=2 yoffset=0 xadvance=22 page=0 chnl=0
|
||||
char id=71 x=263 y=66 width=25 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=72 x=288 y=66 width=25 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=73 x=313 y=66 width=9 height=55 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=74 x=322 y=66 width=16 height=55 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=0
|
||||
char id=75 x=338 y=66 width=28 height=55 xoffset=2 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=76 x=366 y=66 width=20 height=55 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=0
|
||||
char id=77 x=386 y=66 width=35 height=55 xoffset=2 yoffset=0 xadvance=38 page=0 chnl=0
|
||||
char id=78 x=421 y=66 width=27 height=55 xoffset=2 yoffset=0 xadvance=30 page=0 chnl=0
|
||||
char id=79 x=448 y=66 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=80 x=474 y=66 width=25 height=55 xoffset=2 yoffset=0 xadvance=27 page=0 chnl=0
|
||||
char id=81 x=0 y=121 width=26 height=55 xoffset=1 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=82 x=26 y=121 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=83 x=52 y=121 width=28 height=55 xoffset=1 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=84 x=80 y=121 width=27 height=55 xoffset=0 yoffset=0 xadvance=26 page=0 chnl=0
|
||||
char id=85 x=107 y=121 width=26 height=55 xoffset=2 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=86 x=133 y=121 width=29 height=55 xoffset=0 yoffset=0 xadvance=27 page=0 chnl=0
|
||||
char id=87 x=162 y=121 width=42 height=55 xoffset=0 yoffset=0 xadvance=41 page=0 chnl=0
|
||||
char id=88 x=204 y=121 width=31 height=55 xoffset=0 yoffset=0 xadvance=31 page=0 chnl=0
|
||||
char id=89 x=235 y=121 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=90 x=264 y=121 width=25 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=91 x=289 y=121 width=8 height=55 xoffset=2 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=92 x=297 y=121 width=25 height=55 xoffset=0 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=93 x=322 y=121 width=8 height=55 xoffset=2 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=94 x=330 y=121 width=23 height=55 xoffset=1 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=95 x=353 y=121 width=31 height=55 xoffset=-1 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=96 x=384 y=121 width=14 height=55 xoffset=-1 yoffset=0 xadvance=13 page=0 chnl=0
|
||||
char id=97 x=398 y=121 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=98 x=422 y=121 width=22 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=99 x=444 y=121 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=100 x=467 y=121 width=22 height=55 xoffset=1 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=101 x=489 y=121 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=102 x=0 y=176 width=17 height=55 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=0
|
||||
char id=103 x=17 y=176 width=22 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=104 x=39 y=176 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=105 x=61 y=176 width=8 height=55 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=106 x=69 y=176 width=14 height=55 xoffset=-4 yoffset=0 xadvance=10 page=0 chnl=0
|
||||
char id=107 x=83 y=176 width=24 height=55 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=108 x=107 y=176 width=8 height=55 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=109 x=115 y=176 width=34 height=55 xoffset=2 yoffset=0 xadvance=36 page=0 chnl=0
|
||||
char id=110 x=149 y=176 width=22 height=55 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=111 x=171 y=176 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=112 x=194 y=176 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=113 x=216 y=176 width=22 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=114 x=238 y=176 width=15 height=55 xoffset=2 yoffset=0 xadvance=17 page=0 chnl=0
|
||||
char id=115 x=253 y=176 width=22 height=55 xoffset=1 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=116 x=275 y=176 width=17 height=55 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=0
|
||||
char id=117 x=292 y=176 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=118 x=314 y=176 width=24 height=55 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=119 x=338 y=176 width=36 height=55 xoffset=0 yoffset=0 xadvance=36 page=0 chnl=0
|
||||
char id=120 x=374 y=176 width=25 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=121 x=399 y=176 width=24 height=55 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=122 x=423 y=176 width=20 height=55 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=0
|
||||
char id=123 x=443 y=176 width=17 height=55 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=0
|
||||
char id=124 x=460 y=176 width=6 height=55 xoffset=2 yoffset=0 xadvance=8 page=0 chnl=0
|
||||
char id=125 x=466 y=176 width=16 height=55 xoffset=1 yoffset=0 xadvance=17 page=0 chnl=0
|
||||
char id=126 x=482 y=176 width=22 height=55 xoffset=3 yoffset=0 xadvance=27 page=0 chnl=0
|
||||
char id=161 x=0 y=231 width=9 height=55 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=162 x=9 y=231 width=20 height=55 xoffset=2 yoffset=0 xadvance=22 page=0 chnl=0
|
||||
char id=163 x=29 y=231 width=23 height=55 xoffset=1 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=164 x=52 y=231 width=19 height=55 xoffset=3 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=165 x=71 y=231 width=29 height=55 xoffset=1 yoffset=0 xadvance=30 page=0 chnl=0
|
||||
char id=166 x=100 y=231 width=6 height=55 xoffset=2 yoffset=0 xadvance=8 page=0 chnl=0
|
||||
char id=167 x=106 y=231 width=23 height=55 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=168 x=129 y=231 width=16 height=55 xoffset=2 yoffset=0 xadvance=19 page=0 chnl=0
|
||||
char id=169 x=145 y=231 width=38 height=55 xoffset=1 yoffset=0 xadvance=39 page=0 chnl=0
|
||||
char id=170 x=183 y=231 width=17 height=55 xoffset=1 yoffset=0 xadvance=18 page=0 chnl=0
|
||||
char id=171 x=200 y=231 width=18 height=55 xoffset=2 yoffset=0 xadvance=22 page=0 chnl=0
|
||||
char id=172 x=218 y=231 width=25 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=174 x=243 y=231 width=23 height=55 xoffset=1 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=175 x=266 y=231 width=15 height=55 xoffset=2 yoffset=0 xadvance=18 page=0 chnl=0
|
||||
char id=176 x=281 y=231 width=17 height=55 xoffset=1 yoffset=0 xadvance=18 page=0 chnl=0
|
||||
char id=177 x=298 y=231 width=22 height=55 xoffset=3 yoffset=0 xadvance=27 page=0 chnl=0
|
||||
char id=178 x=320 y=231 width=13 height=55 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=0
|
||||
char id=179 x=333 y=231 width=12 height=55 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=0
|
||||
char id=180 x=345 y=231 width=14 height=55 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=0
|
||||
char id=182 x=359 y=231 width=18 height=55 xoffset=3 yoffset=0 xadvance=22 page=0 chnl=0
|
||||
char id=183 x=377 y=231 width=9 height=55 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=184 x=386 y=231 width=10 height=55 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=185 x=396 y=231 width=8 height=55 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=186 x=404 y=231 width=17 height=55 xoffset=1 yoffset=0 xadvance=19 page=0 chnl=0
|
||||
char id=187 x=421 y=231 width=18 height=55 xoffset=2 yoffset=0 xadvance=22 page=0 chnl=0
|
||||
char id=188 x=439 y=231 width=32 height=55 xoffset=2 yoffset=0 xadvance=34 page=0 chnl=0
|
||||
char id=189 x=471 y=231 width=31 height=55 xoffset=2 yoffset=0 xadvance=35 page=0 chnl=0
|
||||
char id=190 x=0 y=286 width=34 height=55 xoffset=0 yoffset=0 xadvance=34 page=0 chnl=0
|
||||
char id=191 x=34 y=286 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=192 x=57 y=286 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=193 x=86 y=286 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=194 x=115 y=286 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=195 x=144 y=286 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=196 x=173 y=286 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=197 x=202 y=286 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=198 x=231 y=286 width=32 height=55 xoffset=0 yoffset=0 xadvance=33 page=0 chnl=0
|
||||
char id=199 x=263 y=286 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=200 x=289 y=286 width=21 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=201 x=310 y=286 width=21 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=202 x=331 y=286 width=21 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=203 x=352 y=286 width=21 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=204 x=373 y=286 width=13 height=55 xoffset=-1 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=205 x=386 y=286 width=15 height=55 xoffset=0 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=206 x=401 y=286 width=17 height=55 xoffset=-2 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=207 x=418 y=286 width=17 height=55 xoffset=-2 yoffset=0 xadvance=12 page=0 chnl=0
|
||||
char id=208 x=435 y=286 width=29 height=55 xoffset=1 yoffset=0 xadvance=30 page=0 chnl=0
|
||||
char id=209 x=464 y=286 width=27 height=55 xoffset=2 yoffset=0 xadvance=30 page=0 chnl=0
|
||||
char id=210 x=0 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=211 x=26 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=212 x=52 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=213 x=78 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=214 x=104 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=215 x=130 y=341 width=18 height=55 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=0
|
||||
char id=216 x=148 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=217 x=174 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=218 x=200 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=219 x=226 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=220 x=252 y=341 width=26 height=55 xoffset=2 yoffset=0 xadvance=29 page=0 chnl=0
|
||||
char id=221 x=278 y=341 width=29 height=55 xoffset=0 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=222 x=307 y=341 width=20 height=55 xoffset=2 yoffset=0 xadvance=22 page=0 chnl=0
|
||||
char id=223 x=327 y=341 width=25 height=55 xoffset=1 yoffset=0 xadvance=26 page=0 chnl=0
|
||||
char id=224 x=352 y=341 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=225 x=376 y=341 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=226 x=400 y=341 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=227 x=424 y=341 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=228 x=448 y=341 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=229 x=472 y=341 width=24 height=55 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=230 x=0 y=396 width=37 height=55 xoffset=1 yoffset=0 xadvance=38 page=0 chnl=0
|
||||
char id=231 x=37 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=232 x=60 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=233 x=83 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=234 x=106 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=235 x=129 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=236 x=152 y=396 width=14 height=55 xoffset=-2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=237 x=166 y=396 width=14 height=55 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=238 x=180 y=396 width=16 height=55 xoffset=-2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=239 x=196 y=396 width=16 height=55 xoffset=-2 yoffset=0 xadvance=11 page=0 chnl=0
|
||||
char id=240 x=212 y=396 width=25 height=55 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=0
|
||||
char id=241 x=237 y=396 width=22 height=55 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=0
|
||||
char id=242 x=259 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=243 x=282 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=244 x=305 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=245 x=328 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=246 x=351 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=247 x=374 y=396 width=15 height=55 xoffset=2 yoffset=0 xadvance=18 page=0 chnl=0
|
||||
char id=248 x=389 y=396 width=23 height=55 xoffset=1 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=249 x=412 y=396 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=250 x=434 y=396 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=251 x=456 y=396 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=252 x=478 y=396 width=22 height=55 xoffset=2 yoffset=0 xadvance=24 page=0 chnl=0
|
||||
char id=253 x=0 y=451 width=24 height=55 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=254 x=24 y=451 width=22 height=55 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=255 x=46 y=451 width=24 height=55 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=0
|
||||
char id=9 x=0 y=46 width=6 height=220 xoffset=0 yoffset=0 xadvance=-1 page=0 chnl=0
|
||||
char id=10 x=6 y=46 width=6 height=220 xoffset=0 yoffset=0 xadvance=-1 page=0 chnl=0
|
||||
char id=13 x=12 y=46 width=6 height=220 xoffset=0 yoffset=0 xadvance=-1 page=0 chnl=0
|
||||
char id=32 x=18 y=46 width=6 height=220 xoffset=0 yoffset=0 xadvance=59 page=0 chnl=0
|
||||
char id=33 x=24 y=46 width=40 height=220 xoffset=8 yoffset=0 xadvance=49 page=0 chnl=0
|
||||
char id=34 x=64 y=46 width=62 height=220 xoffset=8 yoffset=0 xadvance=71 page=0 chnl=0
|
||||
char id=35 x=126 y=46 width=95 height=220 xoffset=3 yoffset=0 xadvance=95 page=0 chnl=0
|
||||
char id=36 x=221 y=46 width=84 height=220 xoffset=4 yoffset=0 xadvance=86 page=0 chnl=0
|
||||
char id=37 x=305 y=46 width=148 height=220 xoffset=6 yoffset=0 xadvance=153 page=0 chnl=0
|
||||
char id=38 x=453 y=46 width=127 height=220 xoffset=6 yoffset=0 xadvance=131 page=0 chnl=0
|
||||
char id=39 x=580 y=46 width=31 height=220 xoffset=8 yoffset=0 xadvance=39 page=0 chnl=0
|
||||
char id=40 x=611 y=46 width=44 height=220 xoffset=4 yoffset=0 xadvance=44 page=0 chnl=0
|
||||
char id=41 x=655 y=46 width=44 height=220 xoffset=4 yoffset=0 xadvance=44 page=0 chnl=0
|
||||
char id=42 x=699 y=46 width=71 height=220 xoffset=4 yoffset=0 xadvance=71 page=0 chnl=0
|
||||
char id=43 x=770 y=46 width=86 height=220 xoffset=3 yoffset=0 xadvance=85 page=0 chnl=0
|
||||
char id=44 x=856 y=46 width=38 height=220 xoffset=7 yoffset=0 xadvance=43 page=0 chnl=0
|
||||
char id=45 x=894 y=46 width=65 height=220 xoffset=8 yoffset=0 xadvance=75 page=0 chnl=0
|
||||
char id=46 x=959 y=46 width=39 height=220 xoffset=8 yoffset=0 xadvance=48 page=0 chnl=0
|
||||
char id=47 x=998 y=46 width=102 height=220 xoffset=1 yoffset=0 xadvance=97 page=0 chnl=0
|
||||
char id=48 x=1100 y=46 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=49 x=1207 y=46 width=61 height=220 xoffset=2 yoffset=0 xadvance=64 page=0 chnl=0
|
||||
char id=50 x=1268 y=46 width=104 height=220 xoffset=6 yoffset=0 xadvance=111 page=0 chnl=0
|
||||
char id=51 x=1372 y=46 width=100 height=220 xoffset=6 yoffset=0 xadvance=106 page=0 chnl=0
|
||||
char id=52 x=1472 y=46 width=111 height=220 xoffset=3 yoffset=0 xadvance=109 page=0 chnl=0
|
||||
char id=53 x=1583 y=46 width=98 height=220 xoffset=7 yoffset=0 xadvance=105 page=0 chnl=0
|
||||
char id=54 x=1681 y=46 width=104 height=220 xoffset=8 yoffset=0 xadvance=112 page=0 chnl=0
|
||||
char id=55 x=1785 y=46 width=92 height=220 xoffset=6 yoffset=0 xadvance=93 page=0 chnl=0
|
||||
char id=56 x=1877 y=46 width=100 height=220 xoffset=7 yoffset=0 xadvance=107 page=0 chnl=0
|
||||
char id=57 x=0 y=266 width=105 height=220 xoffset=7 yoffset=0 xadvance=112 page=0 chnl=0
|
||||
char id=58 x=105 y=266 width=36 height=220 xoffset=8 yoffset=0 xadvance=43 page=0 chnl=0
|
||||
char id=59 x=141 y=266 width=37 height=220 xoffset=7 yoffset=0 xadvance=43 page=0 chnl=0
|
||||
char id=60 x=178 y=266 width=59 height=220 xoffset=1 yoffset=0 xadvance=58 page=0 chnl=0
|
||||
char id=61 x=237 y=266 width=92 height=220 xoffset=8 yoffset=0 xadvance=97 page=0 chnl=0
|
||||
char id=62 x=329 y=266 width=59 height=220 xoffset=8 yoffset=0 xadvance=61 page=0 chnl=0
|
||||
char id=63 x=388 y=266 width=96 height=220 xoffset=4 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=64 x=484 y=266 width=132 height=220 xoffset=4 yoffset=0 xadvance=136 page=0 chnl=0
|
||||
char id=65 x=616 y=266 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=66 x=736 y=266 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=67 x=843 y=266 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=68 x=950 y=266 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=69 x=1057 y=266 width=87 height=220 xoffset=8 yoffset=0 xadvance=93 page=0 chnl=0
|
||||
char id=70 x=1144 y=266 width=87 height=220 xoffset=8 yoffset=0 xadvance=91 page=0 chnl=0
|
||||
char id=71 x=1231 y=266 width=105 height=220 xoffset=8 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=72 x=1336 y=266 width=105 height=220 xoffset=8 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=73 x=1441 y=266 width=41 height=220 xoffset=8 yoffset=0 xadvance=50 page=0 chnl=0
|
||||
char id=74 x=1482 y=266 width=63 height=220 xoffset=3 yoffset=0 xadvance=67 page=0 chnl=0
|
||||
char id=75 x=1545 y=266 width=114 height=220 xoffset=8 yoffset=0 xadvance=118 page=0 chnl=0
|
||||
char id=76 x=1659 y=266 width=83 height=220 xoffset=8 yoffset=0 xadvance=87 page=0 chnl=0
|
||||
char id=77 x=1742 y=266 width=142 height=220 xoffset=8 yoffset=0 xadvance=151 page=0 chnl=0
|
||||
char id=78 x=1884 y=266 width=111 height=220 xoffset=8 yoffset=0 xadvance=121 page=0 chnl=0
|
||||
char id=79 x=0 y=486 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=80 x=107 y=486 width=105 height=220 xoffset=8 yoffset=0 xadvance=108 page=0 chnl=0
|
||||
char id=81 x=212 y=486 width=107 height=220 xoffset=6 yoffset=0 xadvance=113 page=0 chnl=0
|
||||
char id=82 x=319 y=486 width=107 height=220 xoffset=8 yoffset=0 xadvance=113 page=0 chnl=0
|
||||
char id=83 x=426 y=486 width=112 height=220 xoffset=6 yoffset=0 xadvance=117 page=0 chnl=0
|
||||
char id=84 x=538 y=486 width=107 height=220 xoffset=3 yoffset=0 xadvance=105 page=0 chnl=0
|
||||
char id=85 x=645 y=486 width=107 height=220 xoffset=8 yoffset=0 xadvance=116 page=0 chnl=0
|
||||
char id=86 x=752 y=486 width=117 height=220 xoffset=1 yoffset=0 xadvance=111 page=0 chnl=0
|
||||
char id=87 x=869 y=486 width=169 height=220 xoffset=1 yoffset=0 xadvance=165 page=0 chnl=0
|
||||
char id=88 x=1038 y=486 width=123 height=220 xoffset=3 yoffset=0 xadvance=124 page=0 chnl=0
|
||||
char id=89 x=1161 y=486 width=119 height=220 xoffset=2 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=90 x=1280 y=486 width=101 height=220 xoffset=5 yoffset=0 xadvance=104 page=0 chnl=0
|
||||
char id=91 x=1381 y=486 width=37 height=220 xoffset=8 yoffset=0 xadvance=44 page=0 chnl=0
|
||||
char id=92 x=1418 y=486 width=102 height=220 xoffset=1 yoffset=0 xadvance=97 page=0 chnl=0
|
||||
char id=93 x=1520 y=486 width=37 height=220 xoffset=8 yoffset=0 xadvance=44 page=0 chnl=0
|
||||
char id=94 x=1557 y=486 width=95 height=220 xoffset=4 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=95 x=1652 y=486 width=125 height=220 xoffset=-1 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=96 x=1777 y=486 width=57 height=220 xoffset=-2 yoffset=0 xadvance=56 page=0 chnl=0
|
||||
char id=97 x=1834 y=486 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=98 x=1932 y=486 width=91 height=220 xoffset=8 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=99 x=0 y=706 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=100 x=91 y=706 width=90 height=220 xoffset=4 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=101 x=181 y=706 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=102 x=272 y=706 width=70 height=220 xoffset=1 yoffset=0 xadvance=66 page=0 chnl=0
|
||||
char id=103 x=342 y=706 width=89 height=220 xoffset=6 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=104 x=431 y=706 width=91 height=220 xoffset=8 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=105 x=522 y=706 width=37 height=220 xoffset=8 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=106 x=559 y=706 width=57 height=220 xoffset=-14 yoffset=0 xadvance=44 page=0 chnl=0
|
||||
char id=107 x=616 y=706 width=98 height=220 xoffset=8 yoffset=0 xadvance=101 page=0 chnl=0
|
||||
char id=108 x=714 y=706 width=37 height=220 xoffset=8 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=109 x=751 y=706 width=138 height=220 xoffset=8 yoffset=0 xadvance=147 page=0 chnl=0
|
||||
char id=110 x=889 y=706 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=111 x=980 y=706 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=112 x=1071 y=706 width=91 height=220 xoffset=8 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=113 x=1162 y=706 width=90 height=220 xoffset=5 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=114 x=1252 y=706 width=65 height=220 xoffset=8 yoffset=0 xadvance=69 page=0 chnl=0
|
||||
char id=115 x=1317 y=706 width=91 height=220 xoffset=6 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=116 x=1408 y=706 width=73 height=220 xoffset=1 yoffset=0 xadvance=68 page=0 chnl=0
|
||||
char id=117 x=1481 y=706 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=118 x=1572 y=706 width=99 height=220 xoffset=1 yoffset=0 xadvance=95 page=0 chnl=0
|
||||
char id=119 x=1671 y=706 width=146 height=220 xoffset=3 yoffset=0 xadvance=144 page=0 chnl=0
|
||||
char id=120 x=1817 y=706 width=102 height=220 xoffset=4 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=121 x=1919 y=706 width=99 height=220 xoffset=2 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=122 x=0 y=926 width=84 height=220 xoffset=5 yoffset=0 xadvance=86 page=0 chnl=0
|
||||
char id=123 x=84 y=926 width=67 height=220 xoffset=3 yoffset=0 xadvance=68 page=0 chnl=0
|
||||
char id=124 x=151 y=926 width=27 height=220 xoffset=8 yoffset=0 xadvance=36 page=0 chnl=0
|
||||
char id=125 x=178 y=926 width=67 height=220 xoffset=6 yoffset=0 xadvance=68 page=0 chnl=0
|
||||
char id=126 x=245 y=926 width=93 height=220 xoffset=12 yoffset=0 xadvance=110 page=0 chnl=0
|
||||
char id=161 x=338 y=926 width=40 height=220 xoffset=8 yoffset=0 xadvance=49 page=0 chnl=0
|
||||
char id=162 x=378 y=926 width=82 height=220 xoffset=8 yoffset=0 xadvance=90 page=0 chnl=0
|
||||
char id=163 x=460 y=926 width=93 height=220 xoffset=5 yoffset=0 xadvance=95 page=0 chnl=0
|
||||
char id=164 x=553 y=926 width=80 height=220 xoffset=12 yoffset=0 xadvance=97 page=0 chnl=0
|
||||
char id=165 x=633 y=926 width=119 height=220 xoffset=4 yoffset=0 xadvance=120 page=0 chnl=0
|
||||
char id=166 x=752 y=926 width=27 height=220 xoffset=8 yoffset=0 xadvance=35 page=0 chnl=0
|
||||
char id=167 x=779 y=926 width=95 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=168 x=874 y=926 width=68 height=220 xoffset=8 yoffset=0 xadvance=78 page=0 chnl=0
|
||||
char id=169 x=942 y=926 width=153 height=220 xoffset=7 yoffset=0 xadvance=157 page=0 chnl=0
|
||||
char id=170 x=1095 y=926 width=68 height=220 xoffset=7 yoffset=0 xadvance=75 page=0 chnl=0
|
||||
char id=171 x=1163 y=926 width=77 height=220 xoffset=8 yoffset=0 xadvance=88 page=0 chnl=0
|
||||
char id=172 x=1240 y=926 width=102 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=174 x=1342 y=926 width=93 height=220 xoffset=5 yoffset=0 xadvance=95 page=0 chnl=0
|
||||
char id=175 x=1435 y=926 width=65 height=220 xoffset=8 yoffset=0 xadvance=75 page=0 chnl=0
|
||||
char id=176 x=1500 y=926 width=70 height=220 xoffset=6 yoffset=0 xadvance=73 page=0 chnl=0
|
||||
char id=177 x=1570 y=926 width=93 height=220 xoffset=12 yoffset=0 xadvance=110 page=0 chnl=0
|
||||
char id=178 x=1663 y=926 width=55 height=220 xoffset=8 yoffset=0 xadvance=63 page=0 chnl=0
|
||||
char id=179 x=1718 y=926 width=53 height=220 xoffset=8 yoffset=0 xadvance=60 page=0 chnl=0
|
||||
char id=180 x=1771 y=926 width=60 height=220 xoffset=9 yoffset=0 xadvance=61 page=0 chnl=0
|
||||
char id=182 x=1831 y=926 width=73 height=220 xoffset=14 yoffset=0 xadvance=92 page=0 chnl=0
|
||||
char id=183 x=1904 y=926 width=39 height=220 xoffset=8 yoffset=0 xadvance=48 page=0 chnl=0
|
||||
char id=184 x=1943 y=926 width=44 height=220 xoffset=8 yoffset=0 xadvance=48 page=0 chnl=0
|
||||
char id=185 x=1987 y=926 width=33 height=220 xoffset=9 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=186 x=0 y=1146 width=69 height=220 xoffset=7 yoffset=0 xadvance=78 page=0 chnl=0
|
||||
char id=187 x=69 y=1146 width=77 height=220 xoffset=8 yoffset=0 xadvance=88 page=0 chnl=0
|
||||
char id=188 x=146 y=1146 width=128 height=220 xoffset=10 yoffset=0 xadvance=139 page=0 chnl=0
|
||||
char id=189 x=274 y=1146 width=126 height=220 xoffset=9 yoffset=0 xadvance=140 page=0 chnl=0
|
||||
char id=190 x=400 y=1146 width=135 height=220 xoffset=3 yoffset=0 xadvance=138 page=0 chnl=0
|
||||
char id=191 x=535 y=1146 width=97 height=220 xoffset=4 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=192 x=632 y=1146 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=193 x=752 y=1146 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=194 x=872 y=1146 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=195 x=992 y=1146 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=196 x=1112 y=1146 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=197 x=1232 y=1146 width=120 height=220 xoffset=1 yoffset=0 xadvance=114 page=0 chnl=0
|
||||
char id=198 x=1352 y=1146 width=131 height=220 xoffset=1 yoffset=0 xadvance=133 page=0 chnl=0
|
||||
char id=199 x=1483 y=1146 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=200 x=1590 y=1146 width=87 height=220 xoffset=8 yoffset=0 xadvance=93 page=0 chnl=0
|
||||
char id=201 x=1677 y=1146 width=87 height=220 xoffset=8 yoffset=0 xadvance=93 page=0 chnl=0
|
||||
char id=202 x=1764 y=1146 width=87 height=220 xoffset=8 yoffset=0 xadvance=93 page=0 chnl=0
|
||||
char id=203 x=1851 y=1146 width=87 height=220 xoffset=8 yoffset=0 xadvance=93 page=0 chnl=0
|
||||
char id=204 x=1938 y=1146 width=56 height=220 xoffset=-3 yoffset=0 xadvance=50 page=0 chnl=0
|
||||
char id=205 x=0 y=1366 width=60 height=220 xoffset=2 yoffset=0 xadvance=50 page=0 chnl=0
|
||||
char id=206 x=60 y=1366 width=69 height=220 xoffset=-6 yoffset=0 xadvance=50 page=0 chnl=0
|
||||
char id=207 x=129 y=1366 width=68 height=220 xoffset=-5 yoffset=0 xadvance=50 page=0 chnl=0
|
||||
char id=208 x=197 y=1366 width=117 height=220 xoffset=5 yoffset=0 xadvance=123 page=0 chnl=0
|
||||
char id=209 x=314 y=1366 width=111 height=220 xoffset=8 yoffset=0 xadvance=121 page=0 chnl=0
|
||||
char id=210 x=425 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=211 x=532 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=212 x=639 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=213 x=746 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=214 x=853 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=215 x=960 y=1366 width=77 height=220 xoffset=8 yoffset=0 xadvance=85 page=0 chnl=0
|
||||
char id=216 x=1037 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=217 x=1144 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=116 page=0 chnl=0
|
||||
char id=218 x=1251 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=116 page=0 chnl=0
|
||||
char id=219 x=1358 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=116 page=0 chnl=0
|
||||
char id=220 x=1465 y=1366 width=107 height=220 xoffset=8 yoffset=0 xadvance=116 page=0 chnl=0
|
||||
char id=221 x=1572 y=1366 width=119 height=220 xoffset=2 yoffset=0 xadvance=115 page=0 chnl=0
|
||||
char id=222 x=1691 y=1366 width=84 height=220 xoffset=8 yoffset=0 xadvance=92 page=0 chnl=0
|
||||
char id=223 x=1775 y=1366 width=99 height=220 xoffset=7 yoffset=0 xadvance=106 page=0 chnl=0
|
||||
char id=224 x=1874 y=1366 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=225 x=0 y=1586 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=226 x=98 y=1586 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=227 x=196 y=1586 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=228 x=294 y=1586 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=229 x=392 y=1586 width=98 height=220 xoffset=7 yoffset=0 xadvance=103 page=0 chnl=0
|
||||
char id=230 x=490 y=1586 width=148 height=220 xoffset=7 yoffset=0 xadvance=155 page=0 chnl=0
|
||||
char id=231 x=638 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=232 x=729 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=233 x=820 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=234 x=911 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=235 x=1002 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=98 page=0 chnl=0
|
||||
char id=236 x=1093 y=1586 width=56 height=220 xoffset=-5 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=237 x=1149 y=1586 width=61 height=220 xoffset=8 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=238 x=1210 y=1586 width=69 height=220 xoffset=-8 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=239 x=1279 y=1586 width=67 height=220 xoffset=-7 yoffset=0 xadvance=46 page=0 chnl=0
|
||||
char id=240 x=1346 y=1586 width=105 height=220 xoffset=8 yoffset=0 xadvance=112 page=0 chnl=0
|
||||
char id=241 x=1451 y=1586 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=242 x=1542 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=243 x=1633 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=244 x=1724 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=245 x=1815 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=246 x=1906 y=1586 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=247 x=0 y=1806 width=65 height=220 xoffset=8 yoffset=0 xadvance=75 page=0 chnl=0
|
||||
char id=248 x=65 y=1806 width=91 height=220 xoffset=7 yoffset=0 xadvance=99 page=0 chnl=0
|
||||
char id=249 x=156 y=1806 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=250 x=247 y=1806 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=251 x=338 y=1806 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=252 x=429 y=1806 width=91 height=220 xoffset=8 yoffset=0 xadvance=100 page=0 chnl=0
|
||||
char id=253 x=520 y=1806 width=99 height=220 xoffset=2 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=254 x=619 y=1806 width=91 height=220 xoffset=8 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
char id=255 x=710 y=1806 width=99 height=220 xoffset=2 yoffset=0 xadvance=96 page=0 chnl=0
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 293 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 894 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 866 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 857 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 842 KiB |
5342
Projekte/mdga/client/src/main/resources/Models/cir/cir_newOrigin.obj
Normal file
5342
Projekte/mdga/client/src/main/resources/Models/cir/cir_newOrigin.obj
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
6557
Projekte/mdga/client/src/main/resources/Models/lw/lw_newOrigin.obj
Normal file
6557
Projekte/mdga/client/src/main/resources/Models/lw/lw_newOrigin.obj
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,582 @@
|
||||
# Blender 3.6.5
|
||||
# www.blender.org
|
||||
o Shield.001
|
||||
v 0.331177 0.029684 0.498915
|
||||
v 0.331177 0.029684 -0.019826
|
||||
v 0.324814 0.029684 -0.113625
|
||||
v 0.305971 0.029684 -0.203821
|
||||
v 0.275372 0.029684 -0.286945
|
||||
v 0.234192 0.029684 -0.359804
|
||||
v 0.184014 0.029684 -0.419598
|
||||
v 0.126767 0.029684 -0.464029
|
||||
v 0.064650 0.029684 -0.491389
|
||||
v 0.000000 0.029684 -0.500628
|
||||
v 0.000000 0.029684 0.498915
|
||||
v 0.318062 -0.020828 0.485801
|
||||
v 0.318062 -0.020828 -0.019381
|
||||
v 0.311791 -0.020828 -0.111832
|
||||
v 0.293331 -0.020828 -0.200195
|
||||
v 0.263432 -0.020828 -0.281417
|
||||
v 0.223370 -0.020828 -0.352299
|
||||
v 0.174868 -0.020828 -0.410095
|
||||
v 0.120002 -0.020828 -0.452678
|
||||
v 0.061012 -0.020828 -0.478662
|
||||
v 0.000000 -0.020828 0.498915
|
||||
v 0.331177 -0.020828 0.498915
|
||||
v 0.000000 -0.020828 -0.500628
|
||||
v 0.331177 -0.020828 -0.019826
|
||||
v 0.324814 -0.020828 -0.113625
|
||||
v 0.305971 -0.020828 -0.203821
|
||||
v 0.275372 -0.020828 -0.286945
|
||||
v 0.234192 -0.020828 -0.359804
|
||||
v 0.184014 -0.020828 -0.419598
|
||||
v 0.126767 -0.020828 -0.464029
|
||||
v 0.064650 -0.020828 -0.491389
|
||||
v 0.000000 -0.020828 -0.485507
|
||||
v 0.000000 -0.020828 0.485800
|
||||
v 0.000000 -0.020828 0.000147
|
||||
v 0.318062 -0.030185 0.485801
|
||||
v 0.318062 -0.030185 -0.019381
|
||||
v 0.311791 -0.030185 -0.111832
|
||||
v 0.293331 -0.030185 -0.200195
|
||||
v 0.263432 -0.030185 -0.281417
|
||||
v 0.223370 -0.030185 -0.352299
|
||||
v 0.174868 -0.030185 -0.410095
|
||||
v 0.120002 -0.030185 -0.452678
|
||||
v 0.061012 -0.030185 -0.478662
|
||||
v 0.000000 -0.030185 0.498915
|
||||
v 0.331177 -0.030185 0.498915
|
||||
v 0.000000 -0.030185 -0.500628
|
||||
v 0.331177 -0.030185 -0.019826
|
||||
v 0.324814 -0.030185 -0.113625
|
||||
v 0.305971 -0.030185 -0.203821
|
||||
v 0.275372 -0.030185 -0.286945
|
||||
v 0.234192 -0.030185 -0.359804
|
||||
v 0.184014 -0.030185 -0.419598
|
||||
v 0.126767 -0.030185 -0.464029
|
||||
v 0.064650 -0.030185 -0.491389
|
||||
v 0.000000 -0.030185 -0.485507
|
||||
v 0.000000 -0.030185 0.485800
|
||||
v -0.331177 0.029684 0.498915
|
||||
v -0.331177 0.029684 -0.019826
|
||||
v -0.324814 0.029684 -0.113625
|
||||
v -0.305971 0.029684 -0.203821
|
||||
v -0.275372 0.029684 -0.286945
|
||||
v -0.234192 0.029684 -0.359804
|
||||
v -0.184014 0.029684 -0.419598
|
||||
v -0.126767 0.029684 -0.464029
|
||||
v -0.064650 0.029684 -0.491389
|
||||
v -0.318062 -0.020828 0.485801
|
||||
v -0.318062 -0.020828 -0.019381
|
||||
v -0.311791 -0.020828 -0.111832
|
||||
v -0.293331 -0.020828 -0.200195
|
||||
v -0.263432 -0.020828 -0.281417
|
||||
v -0.223370 -0.020828 -0.352299
|
||||
v -0.174868 -0.020828 -0.410095
|
||||
v -0.120002 -0.020828 -0.452678
|
||||
v -0.061012 -0.020828 -0.478662
|
||||
v -0.331177 -0.020828 0.498915
|
||||
v -0.331177 -0.020828 -0.019826
|
||||
v -0.324814 -0.020828 -0.113625
|
||||
v -0.305971 -0.020828 -0.203821
|
||||
v -0.275372 -0.020828 -0.286945
|
||||
v -0.234192 -0.020828 -0.359804
|
||||
v -0.184014 -0.020828 -0.419598
|
||||
v -0.126767 -0.020828 -0.464029
|
||||
v -0.064650 -0.020828 -0.491389
|
||||
v -0.318062 -0.030185 0.485801
|
||||
v -0.318062 -0.030185 -0.019381
|
||||
v -0.311791 -0.030185 -0.111832
|
||||
v -0.293331 -0.030185 -0.200195
|
||||
v -0.263432 -0.030185 -0.281417
|
||||
v -0.223370 -0.030185 -0.352299
|
||||
v -0.174868 -0.030185 -0.410095
|
||||
v -0.120002 -0.030185 -0.452678
|
||||
v -0.061012 -0.030185 -0.478662
|
||||
v -0.331177 -0.030185 0.498915
|
||||
v -0.331177 -0.030185 -0.019826
|
||||
v -0.324814 -0.030185 -0.113625
|
||||
v -0.305971 -0.030185 -0.203821
|
||||
v -0.275372 -0.030185 -0.286945
|
||||
v -0.234192 -0.030185 -0.359804
|
||||
v -0.184014 -0.030185 -0.419598
|
||||
v -0.126767 -0.030185 -0.464029
|
||||
v -0.064650 -0.030185 -0.491389
|
||||
vn 0.6574 0.6894 -0.3043
|
||||
vn 0.8218 -0.0000 -0.5698
|
||||
vn 0.5971 0.6870 -0.4141
|
||||
vn -0.5120 -0.0000 0.8590
|
||||
vn -0.6935 -0.0000 0.7205
|
||||
vn 0.7153 0.6919 -0.0985
|
||||
vn 0.9994 -0.0000 -0.0339
|
||||
vn 0.9907 -0.0000 -0.1364
|
||||
vn 1.0000 -0.0000 -0.0000
|
||||
vn 0.2021 0.6777 -0.7070
|
||||
vn 0.1415 -0.0000 -0.9899
|
||||
vn 0.1046 0.6729 -0.7323
|
||||
vn 0.6935 -0.0000 -0.7205
|
||||
vn 0.5059 0.6840 -0.5256
|
||||
vn 0.9612 -0.0000 -0.2757
|
||||
vn 0.6949 0.6910 -0.1993
|
||||
vn 0.0437 0.7064 0.7064
|
||||
vn 0.7142 0.6996 -0.0242
|
||||
vn -0.0000 0.7071 0.7071
|
||||
vn -0.0000 -0.0000 1.0000
|
||||
vn 0.5120 -0.0000 -0.8590
|
||||
vn 0.3751 0.6806 -0.6294
|
||||
vn 0.9075 -0.0000 -0.4201
|
||||
vn 0.2748 -0.0000 -0.9615
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vn -0.8218 -0.0000 0.5698
|
||||
vn -0.9075 -0.0000 0.4201
|
||||
vn -0.1115 -0.0000 0.9938
|
||||
vn -0.2603 -0.0000 0.9655
|
||||
vn -0.9612 -0.0000 0.2757
|
||||
vn -0.9994 -0.0000 0.0339
|
||||
vn -1.0000 -0.0000 -0.0000
|
||||
vn -0.9907 -0.0000 0.1364
|
||||
vn -0.0000 -0.0000 -1.0000
|
||||
vn -0.8218 -0.0000 -0.5698
|
||||
vn -0.9075 -0.0000 -0.4201
|
||||
vn 0.6935 -0.0000 0.7205
|
||||
vn 0.5120 -0.0000 0.8590
|
||||
vn -0.9907 -0.0000 -0.1364
|
||||
vn -0.9994 -0.0000 -0.0339
|
||||
vn -0.1415 -0.0000 -0.9899
|
||||
vn -0.2748 -0.0000 -0.9615
|
||||
vn -0.6935 -0.0000 -0.7205
|
||||
vn -0.9612 -0.0000 -0.2757
|
||||
vn -0.5120 -0.0000 -0.8590
|
||||
vn 0.8218 -0.0000 0.5698
|
||||
vn 0.9075 -0.0000 0.4201
|
||||
vn 0.2603 -0.0000 0.9655
|
||||
vn 0.1115 -0.0000 0.9938
|
||||
vn 0.9612 -0.0000 0.2757
|
||||
vn 0.9994 -0.0000 0.0339
|
||||
vn 0.9907 -0.0000 0.1364
|
||||
vn -0.0000 1.0000 -0.0000
|
||||
vt 0.852452 0.926767
|
||||
vt 0.863932 0.943326
|
||||
vt 0.852452 0.943326
|
||||
vt 0.416217 0.784524
|
||||
vt 0.414091 0.772054
|
||||
vt 0.416217 0.772054
|
||||
vt 0.852452 0.887374
|
||||
vt 0.863932 0.866055
|
||||
vt 0.863932 0.887374
|
||||
vt 0.550685 0.744478
|
||||
vt 0.539205 0.630661
|
||||
vt 0.539205 0.741041
|
||||
vt 0.348119 0.828570
|
||||
vt 0.336639 0.813877
|
||||
vt 0.348119 0.813877
|
||||
vt 0.863932 0.956916
|
||||
vt 0.852452 0.956916
|
||||
vt 0.863932 0.907874
|
||||
vt 0.852452 0.907874
|
||||
vt 0.852452 0.748155
|
||||
vt 0.852452 0.866055
|
||||
vt 0.643871 0.823767
|
||||
vt 0.632391 0.748497
|
||||
vt 0.643871 0.748497
|
||||
vt 0.348119 0.855700
|
||||
vt 0.336639 0.842689
|
||||
vt 0.348119 0.842689
|
||||
vt 0.863932 0.926767
|
||||
vt 0.336639 0.828570
|
||||
vt 0.980591 0.564665
|
||||
vt 0.984787 0.584748
|
||||
vt 0.913922 0.610199
|
||||
vt 0.866059 0.956916
|
||||
vt 0.537078 0.741041
|
||||
vt 0.537078 0.744478
|
||||
vt 0.630264 0.517300
|
||||
vt 0.632391 0.530436
|
||||
vt 0.630264 0.530436
|
||||
vt 0.866059 0.943326
|
||||
vt 0.632391 0.546546
|
||||
vt 0.630264 0.546546
|
||||
vt 0.416217 0.811798
|
||||
vt 0.414091 0.797931
|
||||
vt 0.416217 0.797931
|
||||
vt 0.866059 0.926767
|
||||
vt 0.632391 0.565007
|
||||
vt 0.630264 0.565007
|
||||
vt 0.334512 0.813877
|
||||
vt 0.434232 0.744478
|
||||
vt 0.506522 0.741497
|
||||
vt 0.509502 0.744478
|
||||
vt 0.505096 0.605666
|
||||
vt 0.509502 0.626577
|
||||
vt 0.506522 0.626678
|
||||
vt 0.500901 0.585583
|
||||
vt 0.508056 0.605259
|
||||
vt 0.494105 0.567123
|
||||
vt 0.503773 0.584759
|
||||
vt 0.485000 0.551012
|
||||
vt 0.496819 0.565866
|
||||
vt 0.473976 0.537876
|
||||
vt 0.487459 0.549307
|
||||
vt 0.461506 0.528198
|
||||
vt 0.476055 0.535717
|
||||
vt 0.448099 0.522293
|
||||
vt 0.463044 0.525618
|
||||
vt 0.434232 0.517300
|
||||
vt 0.434232 0.520737
|
||||
vt 0.336639 0.855700
|
||||
vt 0.334512 0.842689
|
||||
vt 0.632391 0.823767
|
||||
vt 0.630264 0.748497
|
||||
vt 0.414091 0.784524
|
||||
vt 0.334512 0.828570
|
||||
vt 0.539205 0.520281
|
||||
vt 0.539205 0.517300
|
||||
vt 0.537078 0.517300
|
||||
vt 0.630264 0.606102
|
||||
vt 0.632391 0.720921
|
||||
vt 0.630264 0.720921
|
||||
vt 0.863932 0.748155
|
||||
vt 0.866059 0.866055
|
||||
vt 0.630264 0.585090
|
||||
vt 0.632391 0.606102
|
||||
vt 0.866059 0.887374
|
||||
vt 0.182971 0.916633
|
||||
vt 0.180845 0.844343
|
||||
vt 0.182971 0.844343
|
||||
vt 0.632391 0.585090
|
||||
vt 0.866059 0.907874
|
||||
vt 0.600561 0.530890
|
||||
vt 0.589081 0.547450
|
||||
vt 0.589081 0.530890
|
||||
vt 0.414091 0.851542
|
||||
vt 0.416217 0.839072
|
||||
vt 0.416217 0.851542
|
||||
vt 0.600561 0.586842
|
||||
vt 0.589081 0.608161
|
||||
vt 0.589081 0.586842
|
||||
vt 0.348119 0.799183
|
||||
vt 0.600561 0.517300
|
||||
vt 0.589081 0.517300
|
||||
vt 0.600561 0.566342
|
||||
vt 0.589081 0.566342
|
||||
vt 0.600561 0.608161
|
||||
vt 0.589081 0.726061
|
||||
vt 0.643871 0.899038
|
||||
vt 0.336639 0.785065
|
||||
vt 0.348119 0.772054
|
||||
vt 0.348119 0.785065
|
||||
vt 0.600561 0.547450
|
||||
vt 0.336639 0.799183
|
||||
vt 0.913922 0.720579
|
||||
vt 0.841633 0.720579
|
||||
vt 0.602688 0.517300
|
||||
vt 0.893635 0.938640
|
||||
vt 0.895762 0.951776
|
||||
vt 0.893635 0.951776
|
||||
vt 0.602688 0.530890
|
||||
vt 0.895762 0.922530
|
||||
vt 0.893635 0.922530
|
||||
vt 0.414091 0.825665
|
||||
vt 0.416217 0.825665
|
||||
vt 0.602688 0.547450
|
||||
vt 0.895762 0.904069
|
||||
vt 0.893635 0.904069
|
||||
vt 0.361942 0.741497
|
||||
vt 0.434232 0.741497
|
||||
vt 0.358961 0.626577
|
||||
vt 0.363367 0.605666
|
||||
vt 0.361942 0.626678
|
||||
vt 0.360408 0.605259
|
||||
vt 0.367563 0.585583
|
||||
vt 0.364690 0.584759
|
||||
vt 0.374359 0.567123
|
||||
vt 0.371645 0.565866
|
||||
vt 0.383464 0.551012
|
||||
vt 0.381004 0.549307
|
||||
vt 0.394488 0.537876
|
||||
vt 0.392409 0.535717
|
||||
vt 0.406958 0.528198
|
||||
vt 0.405420 0.525618
|
||||
vt 0.420365 0.522293
|
||||
vt 0.419538 0.519400
|
||||
vt 0.334512 0.785065
|
||||
vt 0.336639 0.772054
|
||||
vt 0.630264 0.899038
|
||||
vt 0.632391 0.899038
|
||||
vt 0.334512 0.799183
|
||||
vt 0.895762 0.748155
|
||||
vt 0.893635 0.862974
|
||||
vt 0.893635 0.748155
|
||||
vt 0.602688 0.608161
|
||||
vt 0.600561 0.726061
|
||||
vt 0.895762 0.862974
|
||||
vt 0.893635 0.883986
|
||||
vt 0.602688 0.586842
|
||||
vt 0.182971 0.772054
|
||||
vt 0.602688 0.566342
|
||||
vt 0.550685 0.517300
|
||||
vt 0.539205 0.744478
|
||||
vt 0.986212 0.605761
|
||||
vt 0.986212 0.720579
|
||||
vt 0.913922 0.499819
|
||||
vt 0.941197 0.507280
|
||||
vt 0.927789 0.501375
|
||||
vt 0.953667 0.516959
|
||||
vt 0.964690 0.530095
|
||||
vt 0.973795 0.546205
|
||||
vt 0.632391 0.517300
|
||||
vt 0.414091 0.811798
|
||||
vt 0.448925 0.519400
|
||||
vt 0.334512 0.855700
|
||||
vt 0.630264 0.823767
|
||||
vt 0.537078 0.520281
|
||||
vt 0.866059 0.748155
|
||||
vt 0.180845 0.916633
|
||||
vt 0.414091 0.839072
|
||||
vt 0.841633 0.605761
|
||||
vt 0.843058 0.584748
|
||||
vt 0.847254 0.564665
|
||||
vt 0.854049 0.546205
|
||||
vt 0.863155 0.530095
|
||||
vt 0.874178 0.516959
|
||||
vt 0.886648 0.507280
|
||||
vt 0.900055 0.501375
|
||||
vt 0.895762 0.938640
|
||||
vt 0.358961 0.744478
|
||||
vt 0.334512 0.772054
|
||||
vt 0.602688 0.726061
|
||||
vt 0.895762 0.883986
|
||||
vt 0.180845 0.772054
|
||||
vt 0.591727 0.581771
|
||||
vt 0.592669 0.565234
|
||||
vt 0.601155 0.522724
|
||||
vt 0.866647 0.820446
|
||||
vt 0.866647 0.893741
|
||||
vt 0.855496 0.893741
|
||||
vt 0.593938 0.550739
|
||||
vt 0.595485 0.538844
|
||||
vt 0.597249 0.530005
|
||||
vt 0.599163 0.524562
|
||||
vt 0.601155 0.721574
|
||||
vt 0.590950 0.618375
|
||||
vt 0.591146 0.599714
|
||||
vt 0.590950 0.721574
|
||||
vt 0.855496 0.752511
|
||||
vt 0.857673 0.753816
|
||||
vt 0.859764 0.757682
|
||||
vt 0.864768 0.782703
|
||||
vt 0.863381 0.772408
|
||||
vt 0.861692 0.763960
|
||||
vt 0.865798 0.794448
|
||||
vt 0.866433 0.807192
|
||||
s 1
|
||||
f 5/1/1 28/2/2 6/3/3
|
||||
f 19/4/4 41/5/5 18/6/5
|
||||
f 3/7/6 24/8/7 25/9/8
|
||||
f 10/10/9 34/11/9 32/12/9
|
||||
f 9/13/10 23/14/11 10/15/12
|
||||
f 6/3/3 29/16/13 7/17/14
|
||||
f 3/7/6 26/18/15 4/19/16
|
||||
f 1/20/17 24/8/7 2/21/18
|
||||
f 11/22/19 22/23/20 1/24/17
|
||||
f 7/25/14 30/26/21 8/27/22
|
||||
f 4/19/16 27/28/23 5/1/1
|
||||
f 8/27/22 31/29/24 9/13/10
|
||||
f 15/30/25 14/31/25 34/32/25
|
||||
f 28/2/2 52/33/13 29/16/13
|
||||
f 32/12/9 55/34/9 46/35/9
|
||||
f 18/36/5 40/37/26 17/38/26
|
||||
f 27/28/23 51/39/2 28/2/2
|
||||
f 17/38/26 39/40/27 16/41/27
|
||||
f 32/42/28 43/43/29 20/44/29
|
||||
f 26/18/15 50/45/23 27/28/23
|
||||
f 16/41/27 38/46/30 15/47/30
|
||||
f 31/29/24 46/48/11 23/14/11
|
||||
f 44/49/25 35/50/25 45/51/25
|
||||
f 37/52/25 47/53/25 36/54/25
|
||||
f 38/55/25 48/56/25 37/52/25
|
||||
f 39/57/25 49/58/25 38/55/25
|
||||
f 40/59/25 50/60/25 39/57/25
|
||||
f 41/61/25 51/62/25 40/59/25
|
||||
f 42/63/25 52/64/25 41/61/25
|
||||
f 43/65/25 53/66/25 42/63/25
|
||||
f 35/50/25 47/53/25 45/51/25
|
||||
f 46/67/25 43/65/25 55/68/25
|
||||
f 29/69/13 53/70/21 30/26/21
|
||||
f 21/71/20 45/72/20 22/23/20
|
||||
f 19/4/4 43/43/29 42/73/4
|
||||
f 30/26/21 54/74/24 31/29/24
|
||||
f 33/75/9 21/76/9 44/77/9
|
||||
f 13/78/31 35/79/32 12/80/32
|
||||
f 22/81/9 47/82/7 24/8/7
|
||||
f 14/83/33 36/84/31 13/78/31
|
||||
f 24/8/7 48/85/8 25/9/8
|
||||
f 12/86/34 56/87/34 33/88/34
|
||||
f 15/47/30 37/89/33 14/83/33
|
||||
f 25/9/8 49/90/15 26/18/15
|
||||
f 80/91/35 61/92/36 62/93/35
|
||||
f 90/94/37 73/95/38 72/96/37
|
||||
f 77/97/39 58/98/40 59/99/39
|
||||
f 23/14/41 65/100/42 10/15/41
|
||||
f 81/101/43 62/93/35 63/102/43
|
||||
f 78/103/44 59/99/39 60/104/44
|
||||
f 76/105/40 57/106/32 58/98/40
|
||||
f 57/107/20 21/71/20 11/22/20
|
||||
f 82/108/45 63/109/43 64/110/45
|
||||
f 79/111/36 60/104/44 61/92/36
|
||||
f 83/112/42 64/110/45 65/100/42
|
||||
f 34/32/25 33/113/25 66/114/25
|
||||
f 99/115/43 80/91/35 81/101/43
|
||||
f 71/116/46 90/117/37 72/118/37
|
||||
f 98/119/35 79/111/36 80/91/35
|
||||
f 88/120/47 71/116/46 70/121/47
|
||||
f 92/122/48 32/42/49 74/123/48
|
||||
f 97/124/36 78/103/44 79/111/36
|
||||
f 87/125/50 70/121/47 69/126/50
|
||||
f 46/48/41 83/112/42 23/14/41
|
||||
f 44/49/25 84/127/25 56/128/25
|
||||
f 94/129/25 86/130/25 85/131/25
|
||||
f 95/132/25 87/133/25 86/130/25
|
||||
f 96/134/25 88/135/25 87/133/25
|
||||
f 97/136/25 89/137/25 88/135/25
|
||||
f 98/138/25 90/139/25 89/137/25
|
||||
f 99/140/25 91/141/25 90/139/25
|
||||
f 100/142/25 92/143/25 91/141/25
|
||||
f 84/127/25 94/129/25 85/131/25
|
||||
f 46/67/25 92/143/25 101/144/25
|
||||
f 100/145/45 81/146/43 82/108/45
|
||||
f 93/147/20 21/71/20 75/148/20
|
||||
f 73/95/38 92/122/48 74/123/48
|
||||
f 101/149/42 82/108/45 83/112/42
|
||||
f 84/150/9 67/151/51 66/152/9
|
||||
f 94/153/40 75/154/32 76/105/40
|
||||
f 85/155/51 68/156/52 67/151/51
|
||||
f 95/157/39 76/105/40 77/97/39
|
||||
f 56/87/34 66/158/34 33/88/34
|
||||
f 68/156/52 87/125/50 69/126/50
|
||||
f 96/159/44 77/97/39 78/103/44
|
||||
f 5/1/1 27/28/23 28/2/2
|
||||
f 19/4/4 42/73/4 41/5/5
|
||||
f 3/7/6 2/21/18 24/8/7
|
||||
f 21/76/9 33/75/9 11/160/9
|
||||
f 11/160/9 34/11/9 10/10/9
|
||||
f 10/10/9 32/12/9 23/161/9
|
||||
f 34/11/9 11/160/9 33/75/9
|
||||
f 9/13/10 31/29/24 23/14/11
|
||||
f 6/3/3 28/2/2 29/16/13
|
||||
f 3/7/6 25/9/8 26/18/15
|
||||
f 1/20/9 22/81/9 24/8/7
|
||||
f 11/22/19 21/71/20 22/23/20
|
||||
f 7/25/14 29/69/13 30/26/21
|
||||
f 4/19/16 26/18/15 27/28/23
|
||||
f 8/27/22 30/26/21 31/29/24
|
||||
f 14/31/25 13/162/25 34/32/25
|
||||
f 13/162/25 12/163/25 34/32/25
|
||||
f 12/163/25 33/113/25 34/32/25
|
||||
f 34/32/25 32/164/25 19/165/25
|
||||
f 32/164/25 20/166/25 19/165/25
|
||||
f 34/32/25 19/165/25 18/167/25
|
||||
f 18/167/25 17/168/25 34/32/25
|
||||
f 17/168/25 16/169/25 34/32/25
|
||||
f 16/169/25 15/30/25 34/32/25
|
||||
f 28/2/2 51/39/2 52/33/13
|
||||
f 32/12/9 46/35/9 23/161/9
|
||||
f 18/36/5 41/170/5 40/37/26
|
||||
f 27/28/23 50/45/23 51/39/2
|
||||
f 17/38/26 40/37/26 39/40/27
|
||||
f 32/42/28 55/171/28 43/43/29
|
||||
f 26/18/15 49/90/15 50/45/23
|
||||
f 16/41/27 39/40/27 38/46/30
|
||||
f 31/29/24 54/74/24 46/48/11
|
||||
f 44/49/25 56/128/25 35/50/25
|
||||
f 37/52/25 48/56/25 47/53/25
|
||||
f 38/55/25 49/58/25 48/56/25
|
||||
f 39/57/25 50/60/25 49/58/25
|
||||
f 40/59/25 51/62/25 50/60/25
|
||||
f 41/61/25 52/64/25 51/62/25
|
||||
f 42/63/25 53/66/25 52/64/25
|
||||
f 43/65/25 54/172/25 53/66/25
|
||||
f 35/50/25 36/54/25 47/53/25
|
||||
f 46/67/25 54/172/25 43/65/25
|
||||
f 29/69/13 52/173/13 53/70/21
|
||||
f 21/71/20 44/174/20 45/72/20
|
||||
f 19/4/4 20/44/29 43/43/29
|
||||
f 30/26/21 53/70/21 54/74/24
|
||||
f 33/75/9 44/77/9 56/175/9
|
||||
f 13/78/31 36/84/31 35/79/32
|
||||
f 22/81/9 45/176/9 47/82/7
|
||||
f 14/83/33 37/89/33 36/84/31
|
||||
f 24/8/7 47/82/7 48/85/8
|
||||
f 12/86/34 35/177/34 56/87/34
|
||||
f 15/47/30 38/46/30 37/89/33
|
||||
f 25/9/8 48/85/8 49/90/15
|
||||
f 80/91/35 79/111/36 61/92/36
|
||||
f 90/94/37 91/178/38 73/95/38
|
||||
f 77/97/39 76/105/40 58/98/40
|
||||
f 23/14/41 83/112/42 65/100/42
|
||||
f 81/101/43 80/91/35 62/93/35
|
||||
f 78/103/44 77/97/39 59/99/39
|
||||
f 76/105/40 75/154/32 57/106/32
|
||||
f 57/107/20 75/148/20 21/71/20
|
||||
f 82/108/45 81/146/43 63/109/43
|
||||
f 79/111/36 78/103/44 60/104/44
|
||||
f 83/112/42 82/108/45 64/110/45
|
||||
f 66/114/25 67/179/25 34/32/25
|
||||
f 67/179/25 68/180/25 34/32/25
|
||||
f 68/180/25 69/181/25 34/32/25
|
||||
f 69/181/25 70/182/25 34/32/25
|
||||
f 70/182/25 71/183/25 34/32/25
|
||||
f 71/183/25 72/184/25 34/32/25
|
||||
f 72/184/25 73/185/25 34/32/25
|
||||
f 73/185/25 74/186/25 32/164/25
|
||||
f 32/164/25 34/32/25 73/185/25
|
||||
f 99/115/43 98/119/35 80/91/35
|
||||
f 71/116/46 89/187/46 90/117/37
|
||||
f 98/119/35 97/124/36 79/111/36
|
||||
f 88/120/47 89/187/46 71/116/46
|
||||
f 92/122/48 55/171/49 32/42/49
|
||||
f 97/124/36 96/159/44 78/103/44
|
||||
f 87/125/50 88/120/47 70/121/47
|
||||
f 46/48/41 101/149/42 83/112/42
|
||||
f 44/49/25 93/188/25 84/127/25
|
||||
f 94/129/25 95/132/25 86/130/25
|
||||
f 95/132/25 96/134/25 87/133/25
|
||||
f 96/134/25 97/136/25 88/135/25
|
||||
f 97/136/25 98/138/25 89/137/25
|
||||
f 98/138/25 99/140/25 90/139/25
|
||||
f 99/140/25 100/142/25 91/141/25
|
||||
f 100/142/25 101/144/25 92/143/25
|
||||
f 84/127/25 93/188/25 94/129/25
|
||||
f 46/67/25 55/68/25 92/143/25
|
||||
f 100/145/45 99/189/43 81/146/43
|
||||
f 93/147/20 44/174/20 21/71/20
|
||||
f 73/95/38 91/178/38 92/122/48
|
||||
f 101/149/42 100/145/45 82/108/45
|
||||
f 84/150/9 85/155/51 67/151/51
|
||||
f 94/153/40 93/190/32 75/154/32
|
||||
f 85/155/51 86/191/52 68/156/52
|
||||
f 95/157/39 94/153/40 76/105/40
|
||||
f 56/87/34 84/192/34 66/158/34
|
||||
f 68/156/52 86/191/52 87/125/50
|
||||
f 96/159/44 95/157/39 77/97/39
|
||||
f 4/193/16 5/194/1 10/195/12
|
||||
s 0
|
||||
f 58/196/53 57/197/53 11/198/53
|
||||
s 1
|
||||
f 5/194/1 6/199/3 10/195/12
|
||||
f 6/199/3 7/200/14 10/195/12
|
||||
f 7/200/14 8/201/22 10/195/12
|
||||
f 8/201/22 9/202/10 10/195/12
|
||||
f 10/195/12 11/203/19 2/204/18
|
||||
f 4/193/16 10/195/12 3/205/6
|
||||
f 11/203/19 1/206/17 2/204/18
|
||||
f 2/204/18 3/205/6 10/195/12
|
||||
s 0
|
||||
f 11/198/53 10/207/53 58/196/53
|
||||
f 10/207/53 65/208/53 64/209/53
|
||||
f 61/210/53 10/207/53 62/211/53
|
||||
f 64/209/53 63/212/53 10/207/53
|
||||
f 63/212/53 62/211/53 10/207/53
|
||||
f 61/210/53 60/213/53 10/207/53
|
||||
f 60/213/53 59/214/53 10/207/53
|
||||
f 59/214/53 58/196/53 10/207/53
|
||||
2751
Projekte/mdga/client/src/main/resources/Models/swapCard/swapCard.obj
Normal file
2751
Projekte/mdga/client/src/main/resources/Models/swapCard/swapCard.obj
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,275 @@
|
||||
# Blender 3.6.5
|
||||
# www.blender.org
|
||||
o turbo.001
|
||||
v 0.479911 0.031444 0.058178
|
||||
v 0.008582 0.031444 0.530813
|
||||
v 0.469532 0.031444 0.039992
|
||||
v 0.309421 0.031444 0.039992
|
||||
v 0.001804 0.031444 0.348364
|
||||
v -0.304681 0.031444 0.041125
|
||||
v -0.474757 0.031444 0.041125
|
||||
v -0.474757 0.031444 0.059620
|
||||
v -0.006999 0.031444 0.530813
|
||||
v 0.479911 0.031444 -0.248942
|
||||
v 0.008582 0.031444 0.223694
|
||||
v 0.469532 0.031444 -0.267127
|
||||
v 0.309421 0.031444 -0.267127
|
||||
v 0.001804 0.031444 0.041245
|
||||
v -0.304681 0.031444 -0.265994
|
||||
v -0.474757 0.031444 -0.265994
|
||||
v -0.474757 0.031444 -0.247499
|
||||
v -0.006999 0.031444 0.223694
|
||||
v 0.479911 0.031444 -0.561796
|
||||
v 0.008582 0.031444 -0.092817
|
||||
v 0.469532 0.031444 -0.579981
|
||||
v 0.309421 0.031444 -0.579981
|
||||
v 0.001804 0.031444 -0.275266
|
||||
v -0.304681 0.031444 -0.578848
|
||||
v -0.474757 0.031444 -0.578848
|
||||
v -0.474757 0.031444 -0.560354
|
||||
v -0.006999 0.031444 -0.092817
|
||||
v 0.479911 -0.029054 0.058178
|
||||
v 0.008582 -0.029055 0.530813
|
||||
v 0.469532 -0.029054 0.039992
|
||||
v 0.309421 -0.029054 0.039992
|
||||
v 0.001804 -0.029055 0.348364
|
||||
v -0.304681 -0.029054 0.041125
|
||||
v -0.474757 -0.029055 0.041125
|
||||
v -0.474757 -0.029055 0.059620
|
||||
v -0.006999 -0.029055 0.530813
|
||||
v 0.479911 -0.029054 -0.248942
|
||||
v 0.008582 -0.029055 0.223694
|
||||
v 0.469532 -0.029054 -0.267127
|
||||
v 0.309421 -0.029054 -0.267127
|
||||
v 0.001804 -0.029055 0.041245
|
||||
v -0.304681 -0.029054 -0.265994
|
||||
v -0.474757 -0.029055 -0.265994
|
||||
v -0.474757 -0.029055 -0.247499
|
||||
v -0.006999 -0.029055 0.223694
|
||||
v 0.479911 -0.029054 -0.561796
|
||||
v 0.008582 -0.029055 -0.092817
|
||||
v 0.469532 -0.029054 -0.579981
|
||||
v 0.309421 -0.029054 -0.579981
|
||||
v 0.001804 -0.029055 -0.275266
|
||||
v -0.304681 -0.029054 -0.578848
|
||||
v -0.474757 -0.029055 -0.578848
|
||||
v -0.474757 -0.029055 -0.560354
|
||||
v -0.006999 -0.029055 -0.092817
|
||||
vn 0.8685 -0.0000 -0.4957
|
||||
vn -1.0000 -0.0000 -0.0000
|
||||
vn -0.0000 -0.0000 1.0000
|
||||
vn -0.0000 -0.0000 -1.0000
|
||||
vn -0.7080 -0.0000 -0.7062
|
||||
vn -0.7097 -0.0000 0.7045
|
||||
vn 0.7081 -0.0000 0.7061
|
||||
vn -0.7069 -0.0000 0.7073
|
||||
vn 0.7080 -0.0000 -0.7062
|
||||
vn -0.7037 -0.0000 -0.7104
|
||||
vn 0.7053 -0.0000 0.7089
|
||||
vn 0.7037 -0.0000 -0.7105
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vt 0.588715 0.839843
|
||||
vt 0.583870 0.825758
|
||||
vt 0.588715 0.825758
|
||||
vt 0.452602 0.883467
|
||||
vt 0.448296 0.897552
|
||||
vt 0.448296 0.883467
|
||||
vt 0.203212 0.786027
|
||||
vt 0.189127 0.782563
|
||||
vt 0.203212 0.782563
|
||||
vt 0.077824 0.851102
|
||||
vt 0.063739 0.811505
|
||||
vt 0.077824 0.811505
|
||||
vt 0.419186 0.782563
|
||||
vt 0.405101 0.854358
|
||||
vt 0.405101 0.782563
|
||||
vt 0.246407 0.922613
|
||||
vt 0.232322 0.786027
|
||||
vt 0.246407 0.786027
|
||||
vt 0.588715 0.883038
|
||||
vt 0.583869 0.868953
|
||||
vt 0.588715 0.868953
|
||||
vt 0.409407 0.883467
|
||||
vt 0.405101 0.897552
|
||||
vt 0.405101 0.883467
|
||||
vt 0.619270 0.531191
|
||||
vt 0.633355 0.686593
|
||||
vt 0.619270 0.686593
|
||||
vt 0.232322 0.782563
|
||||
vt 0.246407 0.782563
|
||||
vt 0.462381 0.782563
|
||||
vt 0.448296 0.854357
|
||||
vt 0.448296 0.782563
|
||||
vt 0.881817 0.837845
|
||||
vt 0.867732 0.701259
|
||||
vt 0.881817 0.701259
|
||||
vt 0.881817 0.866955
|
||||
vt 0.867732 0.904232
|
||||
vt 0.867732 0.866955
|
||||
vt 0.588715 0.796648
|
||||
vt 0.583869 0.782563
|
||||
vt 0.588715 0.782563
|
||||
vt 0.619270 0.715702
|
||||
vt 0.633355 0.871104
|
||||
vt 0.619270 0.871104
|
||||
vt 0.867732 0.697796
|
||||
vt 0.881817 0.697796
|
||||
vt 0.318711 0.782563
|
||||
vt 0.332797 0.876581
|
||||
vt 0.318711 0.876581
|
||||
vt 0.505575 0.782563
|
||||
vt 0.491490 0.854357
|
||||
vt 0.491490 0.782563
|
||||
vt 0.548770 0.876182
|
||||
vt 0.534685 0.913458
|
||||
vt 0.534685 0.876182
|
||||
vt 0.121019 0.851102
|
||||
vt 0.106934 0.811505
|
||||
vt 0.121019 0.811505
|
||||
vt 0.867732 0.513285
|
||||
vt 0.881817 0.668686
|
||||
vt 0.867732 0.668686
|
||||
vt 0.361906 0.782563
|
||||
vt 0.375991 0.876581
|
||||
vt 0.361906 0.876581
|
||||
vt 0.106934 0.880211
|
||||
vt 0.111240 0.894296
|
||||
vt 0.106934 0.894296
|
||||
vt 0.077824 0.917488
|
||||
vt 0.063739 0.880211
|
||||
vt 0.077824 0.880211
|
||||
vt 0.028640 0.858942
|
||||
vt 0.014555 0.819345
|
||||
vt 0.028640 0.819345
|
||||
vt 0.203212 0.922613
|
||||
vt 0.189127 0.786027
|
||||
vt 0.275517 0.782563
|
||||
vt 0.289602 0.876581
|
||||
vt 0.275517 0.876581
|
||||
vt 0.231604 0.642143
|
||||
vt 0.303398 0.713761
|
||||
vt 0.299165 0.753454
|
||||
vt 0.374985 0.642143
|
||||
vt 0.446779 0.713761
|
||||
vt 0.442546 0.753454
|
||||
vt 0.518366 0.642143
|
||||
vt 0.590160 0.713761
|
||||
vt 0.585927 0.753454
|
||||
vt 0.583870 0.839843
|
||||
vt 0.452602 0.897552
|
||||
vt 0.063739 0.851102
|
||||
vt 0.419186 0.854358
|
||||
vt 0.232322 0.922613
|
||||
vt 0.583869 0.883038
|
||||
vt 0.409407 0.897552
|
||||
vt 0.633355 0.531191
|
||||
vt 0.462381 0.854357
|
||||
vt 0.867732 0.837845
|
||||
vt 0.881817 0.904232
|
||||
vt 0.583869 0.796649
|
||||
vt 0.633355 0.715702
|
||||
vt 0.332797 0.782563
|
||||
vt 0.505575 0.854357
|
||||
vt 0.548770 0.913458
|
||||
vt 0.106934 0.851102
|
||||
vt 0.881817 0.513285
|
||||
vt 0.375991 0.782563
|
||||
vt 0.111240 0.880211
|
||||
vt 0.063739 0.917488
|
||||
vt 0.014555 0.858942
|
||||
vt 0.189127 0.922613
|
||||
vt 0.289602 0.782563
|
||||
vt 0.303399 0.751038
|
||||
vt 0.189127 0.643721
|
||||
vt 0.189127 0.640093
|
||||
vt 0.298829 0.531191
|
||||
vt 0.303135 0.531191
|
||||
vt 0.303135 0.570788
|
||||
vt 0.446779 0.751038
|
||||
vt 0.332508 0.643721
|
||||
vt 0.332508 0.640093
|
||||
vt 0.442210 0.531191
|
||||
vt 0.446516 0.531191
|
||||
vt 0.446516 0.570788
|
||||
vt 0.590160 0.751038
|
||||
vt 0.475889 0.643721
|
||||
vt 0.475889 0.640093
|
||||
vt 0.585591 0.531191
|
||||
vt 0.589897 0.531191
|
||||
vt 0.589897 0.570788
|
||||
s 0
|
||||
f 3/1/1 28/2/1 30/3/1
|
||||
f 16/4/2 44/5/2 17/6/2
|
||||
f 9/7/3 29/8/3 2/9/3
|
||||
f 24/10/4 52/11/4 25/12/4
|
||||
f 5/13/5 31/14/5 32/15/5
|
||||
f 17/16/6 45/17/6 18/18/6
|
||||
f 12/19/1 37/20/1 39/21/1
|
||||
f 25/22/2 53/23/2 26/24/2
|
||||
f 2/25/7 28/26/7 1/27/7
|
||||
f 18/18/3 38/28/3 11/29/3
|
||||
f 14/30/5 40/31/5 41/32/5
|
||||
f 26/33/8 54/34/8 27/35/8
|
||||
f 4/36/4 30/37/4 31/38/4
|
||||
f 21/39/1 46/40/1 48/41/1
|
||||
f 11/42/7 37/43/7 10/44/7
|
||||
f 27/35/3 47/45/3 20/46/3
|
||||
f 5/47/9 33/48/9 6/49/9
|
||||
f 23/50/10 49/51/10 50/52/10
|
||||
f 13/53/4 39/54/4 40/55/4
|
||||
f 6/56/4 34/57/4 7/58/4
|
||||
f 20/59/11 46/60/11 19/61/11
|
||||
f 14/62/9 42/63/9 15/64/9
|
||||
f 8/65/2 34/66/2 35/67/2
|
||||
f 21/68/4 49/69/4 22/70/4
|
||||
f 15/71/4 43/72/4 16/73/4
|
||||
f 8/74/6 36/75/6 9/7/6
|
||||
f 23/76/12 51/77/12 24/78/12
|
||||
f 32/79/13 31/80/13 28/81/13
|
||||
f 41/82/13 40/83/13 37/84/13
|
||||
f 50/85/13 49/86/13 46/87/13
|
||||
f 3/1/1 1/88/1 28/2/1
|
||||
f 16/4/2 43/89/2 44/5/2
|
||||
f 9/7/3 36/75/3 29/8/3
|
||||
f 24/10/4 51/90/4 52/11/4
|
||||
f 5/13/5 4/91/5 31/14/5
|
||||
f 17/16/6 44/92/6 45/17/6
|
||||
f 12/19/1 10/93/1 37/20/1
|
||||
f 25/22/2 52/94/2 53/23/2
|
||||
f 2/25/7 29/95/7 28/26/7
|
||||
f 18/18/3 45/17/3 38/28/3
|
||||
f 14/30/5 13/96/5 40/31/5
|
||||
f 26/33/8 53/97/8 54/34/8
|
||||
f 4/36/4 3/98/4 30/37/4
|
||||
f 21/39/1 19/99/1 46/40/1
|
||||
f 11/42/7 38/100/7 37/43/7
|
||||
f 27/35/3 54/34/3 47/45/3
|
||||
f 5/47/9 32/101/9 33/48/9
|
||||
f 23/50/10 22/102/10 49/51/10
|
||||
f 13/53/4 12/103/4 39/54/4
|
||||
f 6/56/4 33/104/4 34/57/4
|
||||
f 20/59/11 47/105/11 46/60/11
|
||||
f 14/62/9 41/106/9 42/63/9
|
||||
f 8/65/2 7/107/2 34/66/2
|
||||
f 21/68/4 48/108/4 49/69/4
|
||||
f 15/71/4 42/109/4 43/72/4
|
||||
f 8/74/6 35/110/6 36/75/6
|
||||
f 23/76/12 50/111/12 51/77/12
|
||||
f 31/80/13 30/112/13 28/81/13
|
||||
f 28/81/13 29/113/13 32/79/13
|
||||
f 29/113/13 36/114/13 32/79/13
|
||||
f 36/114/13 35/115/13 32/79/13
|
||||
f 35/115/13 34/116/13 33/117/13
|
||||
f 32/79/13 35/115/13 33/117/13
|
||||
f 40/83/13 39/118/13 37/84/13
|
||||
f 37/84/13 38/119/13 41/82/13
|
||||
f 38/119/13 45/120/13 41/82/13
|
||||
f 45/120/13 44/121/13 41/82/13
|
||||
f 44/121/13 43/122/13 42/123/13
|
||||
f 41/82/13 44/121/13 42/123/13
|
||||
f 49/86/13 48/124/13 46/87/13
|
||||
f 46/87/13 47/125/13 50/85/13
|
||||
f 47/125/13 54/126/13 50/85/13
|
||||
f 54/126/13 53/127/13 50/85/13
|
||||
f 53/127/13 52/128/13 51/129/13
|
||||
f 50/85/13 53/127/13 51/129/13
|
||||
@@ -1,5 +1,7 @@
|
||||
package pp.mdga.notification;
|
||||
|
||||
import pp.mdga.game.BonusCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@@ -8,12 +10,14 @@
|
||||
public class AcquireCardNotification extends Notification{
|
||||
|
||||
private UUID cardId;
|
||||
private BonusCard bonusCard;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* @param cardId The id of the card that was acquired.
|
||||
*/
|
||||
public AcquireCardNotification(UUID cardId) {
|
||||
public AcquireCardNotification(BonusCard bonusCard, UUID cardId) {
|
||||
this.bonusCard = bonusCard;
|
||||
this.cardId = cardId;
|
||||
}
|
||||
|
||||
@@ -24,4 +28,8 @@ public AcquireCardNotification(UUID cardId) {
|
||||
public UUID getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public BonusCard getBonusCard() {
|
||||
return bonusCard;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
package pp.mdga.notification;
|
||||
|
||||
import pp.mdga.game.Color;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class MoveThrowPieceNotification extends Notification{
|
||||
|
||||
private UUID pieceId1;
|
||||
private UUID pieceId2;
|
||||
private int nodeIndex;
|
||||
private Color colorPiece2;
|
||||
|
||||
/**
|
||||
* This constructor is used to create a new MoveThrowPieceNotification
|
||||
*
|
||||
* @param pieceId1 the pieceId1
|
||||
* @param pieceId2 the pieceId2
|
||||
* @param nodeIndex the nodeIndex
|
||||
* @param colorPiece2 the color
|
||||
*/
|
||||
public MoveThrowPieceNotification(UUID pieceId1, UUID pieceId2, int nodeIndex, Color colorPiece2) {
|
||||
this.pieceId1 = pieceId1;
|
||||
this.pieceId2 = pieceId2;
|
||||
this.nodeIndex = nodeIndex;
|
||||
this.colorPiece2 = colorPiece2;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the pieceId1
|
||||
*
|
||||
* @return the pieceId1
|
||||
*/
|
||||
public UUID getPieceId1() {
|
||||
return pieceId1;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the pieceId2
|
||||
*
|
||||
* @return the pieceId2
|
||||
*/
|
||||
public UUID getPieceId2() {
|
||||
return pieceId2;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the nodeIndex
|
||||
*
|
||||
* @return the nodeIndex
|
||||
*/
|
||||
public int getNodeIndex() {
|
||||
return nodeIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the color
|
||||
*
|
||||
* @return the color
|
||||
*/
|
||||
public Color getColor() {
|
||||
return colorPiece2;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package pp.mdga.notification;
|
||||
|
||||
import pp.mdga.game.Color;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Notification that a piece is in the game
|
||||
*/
|
||||
public class PieceInGameNotification extends Notification{
|
||||
private Color color;
|
||||
private UUID id;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param color the color of the piece
|
||||
* @param id the id of the piece
|
||||
*/
|
||||
PieceInGameNotification(Color color, UUID id) {
|
||||
this.color = color;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the color of the piece
|
||||
*/
|
||||
public Color getColor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the id of the piece
|
||||
*/
|
||||
public UUID getId() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package pp.mdga.notification;
|
||||
|
||||
import pp.mdga.game.Color;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ThrowPieceNotification extends Notification{
|
||||
|
||||
private UUID pieceId;
|
||||
|
||||
/**
|
||||
* This constructor is used to create a new ThrowPieceNotification
|
||||
*
|
||||
* @param pieceId1 the pieceId1
|
||||
* @param pieceId2 the pieceId2
|
||||
* @param nodeIndex the nodeIndex
|
||||
* @param colorPiece2 the color
|
||||
*/
|
||||
public ThrowPieceNotification(UUID pieceId) {
|
||||
this.pieceId = pieceId;
|
||||
}
|
||||
|
||||
public UUID getPieceId() {
|
||||
return pieceId;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user