diff --git a/data/images/entities/bush.jpg b/data/images/entities/bush.jpg new file mode 100644 index 0000000..e894c0f Binary files /dev/null and b/data/images/entities/bush.jpg differ diff --git a/data/images/entities/bush.png b/data/images/entities/bush.png deleted file mode 100644 index a59627d..0000000 Binary files a/data/images/entities/bush.png and /dev/null differ diff --git a/data/images/entities/rabbit.jpg b/data/images/entities/rabbit.jpg new file mode 100644 index 0000000..d9510d6 Binary files /dev/null and b/data/images/entities/rabbit.jpg differ diff --git a/data/images/entities/rabbit.png b/data/images/entities/rabbit.png deleted file mode 100644 index 0a67152..0000000 Binary files a/data/images/entities/rabbit.png and /dev/null differ diff --git a/data/images/entities/rock.jpg b/data/images/entities/rock.jpg new file mode 100644 index 0000000..01a4d5a Binary files /dev/null and b/data/images/entities/rock.jpg differ diff --git a/data/images/entities/treasure.png b/data/images/entities/treasure.png deleted file mode 100644 index a795552..0000000 Binary files a/data/images/entities/treasure.png and /dev/null differ diff --git a/data/mapdata/mapEntities.json b/data/mapdata/mapEntities.json index cc221d2..a0c8a32 100644 --- a/data/mapdata/mapEntities.json +++ b/data/mapdata/mapEntities.json @@ -13,6 +13,7 @@ "hunger" : 20 } }, + { "name" : "cranberry", "position" : { @@ -26,5 +27,37 @@ "thirst" : 2, "hunger" : 10 } + }, + + { + "name" : "rabbit", + "position" : { + "x": 12, + "y": 16 + }, + "isPickupable" : true, + "effect" : { + "hp": 30, + "stamina": -5, + "thirst": -5, + "hunger": 40 + } + }, + + { + "name" : "bush", + "position" : { + "x": 15, + "y": 9 + }, + "isPickupable" : false + }, + { + "name" : "rock", + "position" : { + "x": 13, + "y": 1 + }, + "isPickupable" : false } ] \ No newline at end of file diff --git a/src/entities/Entity.py b/src/entities/Entity.py index 857f664..fee6d5f 100644 --- a/src/entities/Entity.py +++ b/src/entities/Entity.py @@ -8,6 +8,7 @@ class Entity(pygame.sprite.Sprite): def __init__(self, texture, size, pos): super().__init__() self.image, self.rect = self.getTexture(texture, size) + self.image.set_colorkey((255, 255, 255)) self.rect.x = pos[0] self.rect.y = pos[1] self.id = self.getId() diff --git a/src/game/EventManager.py b/src/game/EventManager.py index 313a0b8..d8a3bca 100644 --- a/src/game/EventManager.py +++ b/src/game/EventManager.py @@ -22,6 +22,8 @@ class EventManager: def handleEvents(self): pygame.event.pump() + self.game.screen.ui.timerTextView.changeText(self.game.ingameTimer.getPrettyTime()) + keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/src/ui/Ui.py b/src/ui/Ui.py index a68b3bf..7c50c6f 100644 --- a/src/ui/Ui.py +++ b/src/ui/Ui.py @@ -26,43 +26,66 @@ class Ui(): self.timerTextView = UiText(pygame.Rect(0, 0, leftUiWidth, self.barHeight), font=self.font, text=timer.getPrettyTime(), textColor=Colors.WHITE.value, backgroundColor=Colors.GRAY.value) - self.isDayTextView = UiText(pygame.Rect(0, self.timerTextView.rect.y + self.barHeight, leftUiWidth, self.barHeight), text="Day", - font=self.font, backgroundColor=Colors.GRAY.value, textColor=Colors.WHITE.value) + self.isDayTextView = UiText( + pygame.Rect(0, self.timerTextView.rect.y + self.barHeight, leftUiWidth, self.barHeight), text="Day", + font=self.font, backgroundColor=Colors.GRAY.value, textColor=Colors.WHITE.value) self.healthTextView = UiText(pygame.Rect(0, 0, rightUiWidth, self.barHeight), text="Health points", font=self.font, textColor=Colors.WHITE.value) - self.healthBar = UiBar(pygame.Rect(0, self.healthTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight)) + self.healthBar = UiBar( + pygame.Rect(0, self.healthTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight)) - self.hungerTextView = UiText(pygame.Rect(0, self.healthBar.rect.y + self.barHeight, rightUiWidth, self.barHeight), - text="Hunger", font=self.font, textColor=Colors.WHITE.value) - self.hungerBar = UiBar(pygame.Rect(0, self.hungerTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight), initialFilledPercent=0, - filledBarColor=Colors.YELLOW.value) + self.hungerTextView = UiText( + pygame.Rect(0, self.healthBar.rect.y + self.barHeight, rightUiWidth, self.barHeight), + text="Hunger", font=self.font, textColor=Colors.WHITE.value) + self.hungerBar = UiBar( + pygame.Rect(0, self.hungerTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight), + initialFilledPercent=0, + filledBarColor=Colors.YELLOW.value) - self.staminaTextView = UiText(pygame.Rect(0, self.hungerBar.rect.y + self.barHeight, rightUiWidth, self.barHeight), text="Stamina", - font=self.font, textColor=Colors.WHITE.value) - self.staminaBar = UiBar(pygame.Rect(0, self.staminaTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight), filledBarColor=Colors.GREEN.value) + self.staminaTextView = UiText( + pygame.Rect(0, self.hungerBar.rect.y + self.barHeight, rightUiWidth, self.barHeight), text="Stamina", + font=self.font, textColor=Colors.WHITE.value) + self.staminaBar = UiBar( + pygame.Rect(0, self.staminaTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight), + filledBarColor=Colors.GREEN.value) - self.thirstTextView = UiText(pygame.Rect(0, self.staminaBar.rect.y + self.barHeight, rightUiWidth, self.barHeight), text="Thirst", - font=self.font, textColor=Colors.WHITE.value) - self.thirstBar = UiBar(pygame.Rect(0, self.thirstTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight), initialFilledPercent=0, - filledBarColor=Colors.BLUE.value) + self.thirstTextView = UiText( + pygame.Rect(0, self.staminaBar.rect.y + self.barHeight, rightUiWidth, self.barHeight), text="Thirst", + font=self.font, textColor=Colors.WHITE.value) + self.thirstBar = UiBar( + pygame.Rect(0, self.thirstTextView.rect.y + self.barHeight, rightUiWidth, self.barHeight), + initialFilledPercent=0, + filledBarColor=Colors.BLUE.value) self.console = UiConsole(pygame.Rect(0, self.timerTextView.rect.h + self.isDayTextView.rect.h, leftUiWidth, screenHeight - self.timerTextView.rect.h - self.isDayTextView.rect.h), font=self.font) def updateBasedOnPlayerStats(self, statistics: Statistics): - self.healthBar.updateFill(statistics.hp) - self.hungerBar.updateFill(statistics.hunger) - self.staminaBar.updateFill(statistics.stamina) - self.thirstBar.updateFill(statistics.thirst) + consoleLines = [] + if self.healthBar.value != statistics.hp: + self.healthBar.updateFill(statistics.hp) + consoleLines.append("Health: " + str(statistics.hp)) + + if self.hungerBar.value != statistics.hunger: + self.hungerBar.updateFill(statistics.hunger) + consoleLines.append("Hunger: " + str(statistics.hunger)) + + if self.staminaBar.value != statistics.stamina: + self.staminaBar.updateFill(statistics.stamina) + consoleLines.append("Stamina: " + str(statistics.stamina)) + + if self.thirstBar.value != statistics.thirst: + self.thirstBar.updateFill(statistics.thirst) + consoleLines.append("Stamina: " + str(statistics.thirst)) + + self.console.addLinesToConsoleAndScrollToDisplayThem(consoleLines) def updateBasedOnPygameEvent(self, event: pygame.event): pass - - class Colors(Enum): RED = (255, 0, 0) GREEN = (0, 255, 0) diff --git a/src/ui/UiBar.py b/src/ui/UiBar.py index 2112573..8475395 100644 --- a/src/ui/UiBar.py +++ b/src/ui/UiBar.py @@ -13,6 +13,7 @@ class UiBar(UiElement): self.outlineColor = outlineColor self.outlineThickness = outlineThickness self.filledBarColor = filledBarColor + self.value = initialFilledPercent self.__genBar__() @@ -27,4 +28,5 @@ class UiBar(UiElement): def updateFill(self, filledPercent): self.filledPercent = filledPercent / 100 + self.value = filledPercent self.__genBar__() diff --git a/src/ui/UiText.py b/src/ui/UiText.py index a6beb6a..676faf7 100644 --- a/src/ui/UiText.py +++ b/src/ui/UiText.py @@ -24,3 +24,11 @@ class UiText(UiElement): self.image.fill(backgroundColor) wordImage = self.font.render(text, antialias, textColor) self.image.blit(wordImage, (0, 0)) + + def changeText(self, newText): + self.text = newText + + if self.backgroundColor is not None: + self.image.fill(self.backgroundColor) + wordImage = self.font.render(self.text, self.antialias, self.textColor) + self.image.blit(wordImage, (0, 0))