mirror of
				https://github.com/inf112-v20/Fiasko.git
				synced 2025-10-31 09:43:45 +01:00 
			
		
		
		
	Oppdaterer visning av skade og liv med ikoner for liv, skade og kritisk skade
This commit is contained in:
		| @@ -190,8 +190,67 @@ public class BoardActiveScreen extends InteractiveScreen { | ||||
|             } | ||||
|             roboRallyWrapper.font.getData().setScale(tileDimensions / 44); | ||||
|             roboRallyWrapper.font.draw(batch, playerName, viewPortWidth, 2 * tileDimensions * index); | ||||
|             roboRallyWrapper.font.draw(batch, "DMG: " + robot.getDamageTaken() + " LV: " + robot.getAmountOfLives(), | ||||
|                     viewPortWidth, 1.5f * tileDimensions + 2 * tileDimensions * (index - 1)); | ||||
|             drawDamage(batch, robot, index); | ||||
|             drawLives(batch, robot, index); | ||||
|             drawFlag(batch, robot, index); | ||||
|             TextureRegion robotTexture = TextureConverterUtil.convertElement(player.getRobotID()); | ||||
|             batch.draw(robotTexture, viewPortWidth, 2 * tileDimensions * (index - 1), tileDimensions, tileDimensions); | ||||
|             index++; | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Draws the damage of the player | ||||
|      * @param batch The sprite batch to use for drawing | ||||
|      * @param robot The robot which has visited the flag | ||||
|      * @param index The index of the robot in the robot list | ||||
|      */ | ||||
|     private void drawDamage(SpriteBatch batch, Robot robot, int index) { | ||||
|         int offset = 4 * (tileDimensions / 4); | ||||
|         int tokenSize = tileDimensions / 4; | ||||
|         TextureRegion damageTexture; | ||||
|         for (int i = 0; i < Math.min(robot.getDamageTaken(), 10); i++) { | ||||
|             if (i == 9) { | ||||
|                 damageTexture = TextureConverterUtil.getDamageTokenCriticalTexture(); | ||||
|             } else { | ||||
|                 damageTexture = TextureConverterUtil.getDamageTokenTexture(); | ||||
|             } | ||||
|             batch.draw(damageTexture.getTexture(), viewPortWidth + offset + ((i % 5) * tokenSize), | ||||
|                     tileDimensions + tileDimensions / 4 + 2 * tileDimensions * (index - 1) - | ||||
|                             (tokenSize * ((i / 5))), | ||||
|                     tileDimensions / 2, | ||||
|                     tileDimensions / 2, tokenSize, tokenSize, 1, | ||||
|                     1, 0, damageTexture.getRegionX(), damageTexture.getRegionY(), | ||||
|                     damageTexture.getRegionWidth(), damageTexture.getRegionWidth(), false, false); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Draws the lives of the player | ||||
|      * @param batch The sprite batch to use for drawing | ||||
|      * @param robot The robot which has visited the flag | ||||
|      * @param index The index of the robot in the robot list | ||||
|      */ | ||||
|     private void drawLives(SpriteBatch batch, Robot robot, int index) { | ||||
|         TextureRegion lifeTexture = TextureConverterUtil.getLifeTexture(); | ||||
|         int heartSize = tileDimensions / 4; | ||||
|         for (int i = 0; i < robot.getAmountOfLives(); i++) { | ||||
|             batch.draw(lifeTexture.getTexture(), viewPortWidth + heartSize / 2 + i * heartSize, | ||||
|                     tileDimensions + 2 * tileDimensions * (index - 1), tileDimensions / 2, | ||||
|                     tileDimensions / 2, heartSize, heartSize, 1, | ||||
|                     1, 0, lifeTexture.getRegionX(), lifeTexture.getRegionY(), | ||||
|                     lifeTexture.getRegionWidth(), lifeTexture.getRegionWidth(), false, false); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Draws the last flag the player visited | ||||
|      * @param batch The sprite batch to use for drawing | ||||
|      * @param robot The robot which has visited the flag | ||||
|      * @param index The index of the robot in the robot list | ||||
|      */ | ||||
|     private void drawFlag(SpriteBatch batch, Robot robot, int index) { | ||||
|         int lastFlagVisited = robot.getLastFlagVisited(); | ||||
|         if (lastFlagVisited > 0) { | ||||
|             TileType flagType = TileType.getTileTypeFromID(robot.getLastFlagVisited() + 16); | ||||
| @@ -202,11 +261,6 @@ public class BoardActiveScreen extends InteractiveScreen { | ||||
|                     flagRegion.getRegionY(), flagRegion.getRegionWidth(), flagRegion.getRegionWidth(), | ||||
|                     false, false); | ||||
|         } | ||||
|             TextureRegion robotTexture = TextureConverterUtil.convertElement(player.getRobotID()); | ||||
|             batch.draw(robotTexture, viewPortWidth, 2 * tileDimensions * (index - 1), tileDimensions, tileDimensions); | ||||
|             index++; | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -109,16 +109,12 @@ class RoboRallyClientListener extends Listener { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|             if (newHand.isEmpty()) { | ||||
|                 if (wrapper.getGame().getRobotPowerDown()) { | ||||
|             if (newHand.isEmpty() && wrapper.getGame().getRobotPowerDown()) { | ||||
|                 wrapper.getGame().setProgram(new ArrayList<>()); | ||||
|                 wrapper.getGame().setGameState(GameState.SKIP_POWER_DOWN_SCREEN); | ||||
|             } else { | ||||
|                 wrapper.getGame().setGameState(GameState.CHOOSING_CARDS); | ||||
|             } | ||||
|             } else { | ||||
|                 wrapper.getGame().setGameState(GameState.CHOOSING_CARDS); | ||||
|             } | ||||
|             wrapper.getGame().setPlayerHand(newHand); | ||||
|         }).start(); | ||||
|     } | ||||
|   | ||||
| @@ -29,6 +29,7 @@ import java.util.Map; | ||||
| public final class TextureConverterUtil { | ||||
|     private static final Texture textureSheet = new Texture(Gdx.files.internal("assets/tiles.png")); | ||||
|     private static final Texture robotsTexture = new Texture(Gdx.files.internal("assets/robots.png")); | ||||
|     private static final Texture effectsTexture = new Texture(Gdx.files.internal("assets/effects.png")); | ||||
|     private static Map<TileType, TextureConverterContainer> tileSheetTileTextureMappings; | ||||
|     private static Map<TileType, Boolean> tileSheetTileHasRotatedTextureMappings; | ||||
|     private static Map<ParticleType, TextureConverterContainer> tileSheetParticleTextureMappings; | ||||
| @@ -39,6 +40,30 @@ public final class TextureConverterUtil { | ||||
|     private TextureConverterUtil() { | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns the texture to use to display damage tokens | ||||
|      * @return The damage token texture | ||||
|      */ | ||||
|     public static TextureRegion getDamageTokenCriticalTexture() { | ||||
|         return new TextureRegion(effectsTexture, 2 * 64, 0, 64, 64); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns the texture to use to display damage tokens | ||||
|      * @return The damage token texture | ||||
|      */ | ||||
|     public static TextureRegion getDamageTokenTexture() { | ||||
|         return new TextureRegion(effectsTexture, 64, 0, 64, 64); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns the texture to use to display lives | ||||
|      * @return The life texture | ||||
|      */ | ||||
|     public static TextureRegion getLifeTexture() { | ||||
|         return new TextureRegion(effectsTexture, 0, 0, 64, 64); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets a list of all disposable elements which should be disposed when the software closes | ||||
|      * | ||||
| @@ -48,6 +73,7 @@ public final class TextureConverterUtil { | ||||
|         List<Disposable> disposables = new ArrayList<>(); | ||||
|         disposables.add(textureSheet); | ||||
|         disposables.add(robotsTexture); | ||||
|         disposables.add(effectsTexture); | ||||
|         return disposables; | ||||
|     } | ||||
|  | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								src/main/resources/assets/effects.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/resources/assets/effects.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.2 KiB | 
		Reference in New Issue
	
	Block a user