added solution for exercise 9
added the models for the 3 remaining ship types and implemented them in the SeaSynchronizer.java also added the correct logic for the ships to be displayed correctly
This commit is contained in:
		
						parent
						
							46f75188cb
						
					
				
				
					commit
					562a478ef8
				
			@@ -34,7 +34,10 @@
 | 
			
		||||
 */
 | 
			
		||||
class SeaSynchronizer extends ShipMapSynchronizer {
 | 
			
		||||
    private static final String UNSHADED = "Common/MatDefs/Misc/Unshaded.j3md"; //NON-NLS
 | 
			
		||||
    private static final String KING_GEORGE_V_MODEL = "Models/KingGeorgeV/KingGeorgeV.j3o"; //NON-NLS
 | 
			
		||||
    private static final String KING_GEORGE_V_MODEL = "Models/KingGeorgeV/KingGeorgeV.j3o";
 | 
			
		||||
    private static final String UBOAT = "Models/UBoat/14084_WWII_Ship_German_Type_II_U-boat_v2_L1.obj"; //NON-NLS
 | 
			
		||||
    private static final String BATTLE_SHIP_MODERN = "Models/BattleShipModern/10619_Battleship.obj";
 | 
			
		||||
    private static final String PATROL_BOAT = "Models/PatrolBoat/12219_boat_v2_L2.obj";
 | 
			
		||||
    private static final String COLOR = "Color"; //NON-NLS
 | 
			
		||||
    private static final String SHIP = "ship"; //NON-NLS
 | 
			
		||||
    private static final String SHOT = "shot"; //NON-NLS
 | 
			
		||||
@@ -141,7 +144,18 @@ public Spatial visit(Battleship ship) {
 | 
			
		||||
     * @return the spatial representing the battleship
 | 
			
		||||
     */
 | 
			
		||||
    private Spatial createShip(Battleship ship) {
 | 
			
		||||
        return ship.getLength() == 4 ? createBattleship(ship) : createBox(ship);
 | 
			
		||||
        switch (ship.getLength()){
 | 
			
		||||
            case 1:
 | 
			
		||||
                return createPatrolBoat(ship);
 | 
			
		||||
            case 2:
 | 
			
		||||
                return createModernBattleship(ship);
 | 
			
		||||
            case 3:
 | 
			
		||||
                return createUBoat(ship);
 | 
			
		||||
            case 4:
 | 
			
		||||
                return createBattleship(ship);
 | 
			
		||||
            default:
 | 
			
		||||
                throw new IllegalArgumentException("Ship length must be between 1 and 4 units long");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -196,6 +210,38 @@ private Spatial createBattleship(Battleship ship) {
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Spatial createUBoat(Battleship ship) {
 | 
			
		||||
        final Spatial model = app.getAssetManager().loadModel(UBOAT);
 | 
			
		||||
 | 
			
		||||
        model.rotate(-HALF_PI, calculateRotationAngle(ship.getRot()), 0f);
 | 
			
		||||
        model.scale(0.5f);
 | 
			
		||||
        model.setShadowMode(ShadowMode.CastAndReceive);
 | 
			
		||||
        model.move(0, -0.3f, 0);
 | 
			
		||||
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Spatial createModernBattleship(Battleship ship) {
 | 
			
		||||
        final Spatial model = app.getAssetManager().loadModel(BATTLE_SHIP_MODERN);
 | 
			
		||||
 | 
			
		||||
        model.rotate(-HALF_PI, calculateRotationAngle(ship.getRot()) + HALF_PI, 0f);
 | 
			
		||||
        model.scale(0.00008f);
 | 
			
		||||
        model.setShadowMode(ShadowMode.CastAndReceive);
 | 
			
		||||
        model.move(0, 0.2f, 0);
 | 
			
		||||
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Spatial createPatrolBoat(Battleship ship) {
 | 
			
		||||
        final Spatial model = app.getAssetManager().loadModel(PATROL_BOAT);
 | 
			
		||||
 | 
			
		||||
        model.rotate(-HALF_PI, calculateRotationAngle(ship.getRot()), 0f);
 | 
			
		||||
        model.scale(0.0005f);
 | 
			
		||||
        model.setShadowMode(ShadowMode.CastAndReceive);
 | 
			
		||||
 | 
			
		||||
        return model;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Calculates the rotation angle for the specified rotation.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,73 @@
 | 
			
		||||
newmtl Battleship
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.00 0.00 0.00
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
map_Kd BattleshipC.jpg
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.00 0.00 0.00
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn1SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.00 0.00 0.00
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn2SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.00 0.00 0.00
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn3SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.50 0.50 0.50
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn4SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.50 0.50 0.50
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn5SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.50 0.50 0.50
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn6SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.50 0.50 0.50
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn7SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.50 0.50 0.50
 | 
			
		||||
Ns 256.00
 | 
			
		||||
newmtl blinn8SG
 | 
			
		||||
illum 4
 | 
			
		||||
Kd 0.50 0.50 0.50
 | 
			
		||||
Ka 0.00 0.00 0.00
 | 
			
		||||
Tf 1.00 1.00 1.00
 | 
			
		||||
Ni 1.00
 | 
			
		||||
Ks 0.50 0.50 0.50
 | 
			
		||||
Ns 256.00
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 360 KiB  | 
@@ -0,0 +1,3 @@
 | 
			
		||||
based on:
 | 
			
		||||
https://free3d.com/3d-model/battleship-v1--611736.html
 | 
			
		||||
License: Free Personal Use Only
 | 
			
		||||
@@ -0,0 +1,104 @@
 | 
			
		||||
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
 | 
			
		||||
# File Created: 16.12.2011 14:18:52
 | 
			
		||||
 | 
			
		||||
newmtl white
 | 
			
		||||
	Ns 53.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 0.6667 0.6667 0.6667
 | 
			
		||||
	Kd 0.6667 0.6667 0.6667
 | 
			
		||||
	Ks 0.1800 0.1800 0.1800
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
 | 
			
		||||
newmtl boat_elements_black
 | 
			
		||||
	Ns 55.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 0.0000 0.0000 0.0000
 | 
			
		||||
	Kd 0.0000 0.0000 0.0000
 | 
			
		||||
	Ks 0.3600 0.3600 0.3600
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
 | 
			
		||||
newmtl boat_glass
 | 
			
		||||
	Ns 60.0000
 | 
			
		||||
	Ni 7.0000
 | 
			
		||||
	d 0.4000
 | 
			
		||||
	Tr 0.6000
 | 
			
		||||
	Tf 0.4000 0.4000 0.4000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 0.1059 0.1569 0.1451
 | 
			
		||||
	Kd 0.1059 0.1569 0.1451
 | 
			
		||||
	Ks 0.6750 0.6750 0.6750
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
 | 
			
		||||
newmtl boat_screw_hooks_bronze
 | 
			
		||||
	Ns 80.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 0.2941 0.2157 0.0510
 | 
			
		||||
	Kd 0.2941 0.2157 0.0510
 | 
			
		||||
	Ks 0.7200 0.7200 0.7200
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
 | 
			
		||||
newmtl boat_silver
 | 
			
		||||
	Ns 80.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 0.3333 0.3333 0.3333
 | 
			
		||||
	Kd 0.3333 0.3333 0.3333
 | 
			
		||||
	Ks 0.7200 0.7200 0.7200
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
 | 
			
		||||
newmtl boat_buffer
 | 
			
		||||
	Ns 10.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 1.0000 1.0000 1.0000
 | 
			
		||||
	Kd 1.0000 1.0000 1.0000
 | 
			
		||||
	Ks 0.2700 0.2700 0.2700
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
	map_Ka boat_buffer_diffuse.jpg
 | 
			
		||||
	map_Kd boat_buffer_diffuse.jpg
 | 
			
		||||
 | 
			
		||||
newmtl boat_roof_accessory
 | 
			
		||||
	Ns 15.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 1.0000 1.0000 1.0000
 | 
			
		||||
	Kd 1.0000 1.0000 1.0000
 | 
			
		||||
	Ks 0.3600 0.3600 0.3600
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
	map_Ka boat_roof_accessory_diffuse.jpg
 | 
			
		||||
	map_Kd boat_roof_accessory_diffuse.jpg
 | 
			
		||||
 | 
			
		||||
newmtl boat_body
 | 
			
		||||
	Ns 55.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 1.0000 1.0000 1.0000
 | 
			
		||||
	Kd 1.0000 1.0000 1.0000
 | 
			
		||||
	Ks 0.3600 0.3600 0.3600
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
	map_Ka boat_body_diffuse.jpg
 | 
			
		||||
	map_Kd boat_body_diffuse.jpg
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
based on:
 | 
			
		||||
https://free3d.com/3d-model/boat-v2--225787.html
 | 
			
		||||
License: Free Personal Use Only
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 56 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 166 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 98 KiB  | 
@@ -0,0 +1,16 @@
 | 
			
		||||
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
 | 
			
		||||
# File Created: 29.03.2012 14:25:39
 | 
			
		||||
 | 
			
		||||
newmtl default
 | 
			
		||||
	Ns 35.0000
 | 
			
		||||
	Ni 1.5000
 | 
			
		||||
	d 1.0000
 | 
			
		||||
	Tr 0.0000
 | 
			
		||||
	Tf 1.0000 1.0000 1.0000 
 | 
			
		||||
	illum 2
 | 
			
		||||
	Ka 1.0000 1.0000 1.0000
 | 
			
		||||
	Kd 1.0000 1.0000 1.0000
 | 
			
		||||
	Ks 0.5400 0.5400 0.5400
 | 
			
		||||
	Ke 0.0000 0.0000 0.0000
 | 
			
		||||
	map_Ka 14084_WWII_ship_German_Type_II_U-boat_diff.jpg
 | 
			
		||||
	map_Kd 14084_WWII_ship_German_Type_II_U-boat_diff.jpg
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 168 KiB  | 
@@ -0,0 +1,3 @@
 | 
			
		||||
based on:
 | 
			
		||||
https://free3d.com/3d-model/wwii-ship-german-type-ii-uboat-v2--700733.html
 | 
			
		||||
License: Free Personal Use Only
 | 
			
		||||
@@ -182,35 +182,6 @@ private boolean checkMap(MapMessage msg, int from) {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /*int[][] tempMap = new int[mapWidth][mapHeight];
 | 
			
		||||
        for (int[] row : tempMap)
 | 
			
		||||
            Arrays.fill(row, 0);
 | 
			
		||||
        msg.getShips().forEach(s -> {
 | 
			
		||||
            int deltaX = s.getMaxX()-s.getMinX();
 | 
			
		||||
            int deltaY = s.getMaxY()-s.getMinY();
 | 
			
		||||
            int lastX = s.getX();
 | 
			
		||||
            int lastY = s.getY();
 | 
			
		||||
            tempMap[lastX][lastY] += 1;
 | 
			
		||||
            for (int i = 0; i < deltaX-1; i++)
 | 
			
		||||
                for (int j = 0; j < deltaY-1; j++) {
 | 
			
		||||
                    tempMap[lastX + (deltaX / Math.abs(deltaX))][lastY + (deltaY / Math.abs(deltaY))] += 1;
 | 
			
		||||
                    lastX = lastX + (deltaX / Math.abs(deltaX));
 | 
			
		||||
                    lastY = lastY + (deltaY / Math.abs(deltaY));
 | 
			
		||||
                }
 | 
			
		||||
        });
 | 
			
		||||
        for (int[] row : tempMap){
 | 
			
		||||
            for(int cell : row){
 | 
			
		||||
                if (cell > 1){
 | 
			
		||||
                    LOGGER.log(Level.ERROR, "There are multiple ships on one position");
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }*/
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user