diff --git a/src/config/colors.ini b/src/config/colors.ini deleted file mode 100644 index e69de29..0000000 diff --git a/src/config/config.ini b/src/config/config.ini index 110e6a0..de419ae 100644 --- a/src/config/config.ini +++ b/src/config/config.ini @@ -1,13 +1,12 @@ [graphics] -screen_width = 1024 -screen_height = 1024 +scale_factor = 2 [gameplay] always_ignore_pirates = False always_ignore_police = False always_ignore_traders = False always_ignore_orbit_traders = False -auto_refule = False +auto_refuel = False auto_repair = False continuous_attack = False continuous_attack_flee = False diff --git a/src/config/names.ini b/src/config/names.ini deleted file mode 100644 index e69de29..0000000 diff --git a/src/interface/__init__.py b/src/interface/__init__.py deleted file mode 100644 index e16c76d..0000000 --- a/src/interface/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/src/interface/average_prices.py b/src/interface/average_prices.py deleted file mode 100644 index 0451b95..0000000 --- a/src/interface/average_prices.py +++ /dev/null @@ -1,66 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Average Prices screen - This shows the prices of goods in comparison to the target system. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class AvgPrices(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Average Price List", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/bank.py b/src/interface/bank.py deleted file mode 100644 index 80fb237..0000000 --- a/src/interface/bank.py +++ /dev/null @@ -1,89 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Banking Screen - For managing both loans and insurance. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class Bank(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Bank", self.head_font, canvas) - title.render() - - # Bank headers - loan_headers = [ - "Loan", - "Current debt:", - "Maximum loan:", - ] - ins_headers = [ - "Insurance", - "Current ship:", - "No-claim:", - "Costs:", - ] - i = 0 - for head in loan_headers: - TextRender(head, (2, 18 + i), self.head_font).draw(canvas) - i += 16 - i = 0 - for head in ins_headers: - TextRender(head, (2, 80 + i), self.head_font).draw(canvas) - i += 16 - - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/buy_cargo.py b/src/interface/buy_cargo.py deleted file mode 100644 index 59db48a..0000000 --- a/src/interface/buy_cargo.py +++ /dev/null @@ -1,75 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Buy Cargo Screen -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from ..economy import TradeItemId -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class BuyCargo(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Buy Cargo", self.head_font, canvas) - title.render() - - # Draw the cargo list - i = 0 - for good in TradeItemId.lst(): - TextRender(good, (30, 18 + i), self.font).draw(canvas) - i += 13 - - TextRender("Bays: {}/{}", (2, 158), self.font, ref="bottomleft").draw(canvas) - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/buy_equip.py b/src/interface/buy_equip.py deleted file mode 100644 index b54c644..0000000 --- a/src/interface/buy_equip.py +++ /dev/null @@ -1,74 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Buy Equipment Screen -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from ..ships import Equipment -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class BuyEquipment(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Buy Equipment", self.head_font, canvas) - title.render() - - # Draw available equipment - i = 0 - for equip in Equipment.sale_list(): - TextRender(equip, (35, 18 + i), self.font).draw(canvas) - i += 13 - - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/buy_ship.py b/src/interface/buy_ship.py deleted file mode 100644 index 300af9e..0000000 --- a/src/interface/buy_ship.py +++ /dev/null @@ -1,74 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from ..game_data import ShipID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class BuyShip(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Buy Ship", self.head_font, canvas) - title.render() - - # Draw avaialble ships - i = 0 - for ship in ShipID.sale_lst(): - TextRender(ship, (35, 18 + i), self.font).draw(canvas) - i += 13 - - TextRender("Cash: {0} cr.", (154, 158), self.font, ref="bottomleft").draw(canvas) - - return canvas diff --git a/src/interface/char_create.py b/src/interface/char_create.py deleted file mode 100644 index 5dd7707..0000000 --- a/src/interface/char_create.py +++ /dev/null @@ -1,146 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Character creation screen -""" - -import pygame - -from ..constants import BKG_COLOR, CIRCLE_XY, FRG_COLOR, HALF_RES, INTERNAL_RES, Difficulty, GameStateID -from .renderer import Button, TextInput, TextRender -from .state import State - - -class CharacterCreation(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - self._cmdr_name = "Jameson" - self._cmdr_input = TextInput(55, 20, 80, self.font) - self.sprite_group = pygame.sprite.Group(self._cmdr_input) - self._curr_difficulty = 2 - self._curr_points = 16 - self._curr_pilot = 1 - self._curr_fighter = 1 - self._curr_trader = 1 - self._curr_engineer = 1 - - self._inc_difficulty = Button("+", (HALF_RES + 40, 48), CIRCLE_XY, self.font) - self._dec_difficulty = Button("-", (HALF_RES - 20, 48), CIRCLE_XY, self.font) - - self._inc_pilot = Button("+", (HALF_RES + 10, 80), CIRCLE_XY, self.font) - self._dec_pilot = Button("-", (HALF_RES - 20, 80), CIRCLE_XY, self.font) - self._inc_fighter = Button("+", (HALF_RES + 10, 92), CIRCLE_XY, self.font) - self._dec_fighter = Button("-", (HALF_RES - 20, 92), CIRCLE_XY, self.font) - self._inc_trader = Button("+", (HALF_RES + 10, 104), CIRCLE_XY, self.font) - self._dec_trader = Button("-", (HALF_RES - 20, 104), CIRCLE_XY, self.font) - self._inc_engineer = Button("+", (HALF_RES + 10, 116), CIRCLE_XY, self.font) - self._dec_engineer = Button("-", (HALF_RES - 20, 116), CIRCLE_XY, self.font) - - self._buttons = [ - self._inc_difficulty, - self._dec_difficulty, - self._inc_pilot, - self._dec_pilot, - self._inc_fighter, - self._dec_fighter, - self._inc_trader, - self._dec_trader, - self._inc_engineer, - self._dec_engineer, - ] - self._curr_values = [ - self._curr_points, - self._curr_pilot, - self._curr_fighter, - self._curr_trader, - self._curr_engineer, - ] - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_q: - self.game.running = False - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_RETURN: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: - for index, button in enumerate(self._buttons): - if button.is_clicked(event.pos) and index < 2: - if button.text == "+": - self._curr_difficulty += 1 - elif button.text == "-": - self._curr_difficulty -= 1 - else: - raise ValueError(f"Invalid button text! Expected '+' or '-' but got {button.text}") - elif button.is_clicked(event.pos) and index >= 2: - if button.text == "+": - self._curr_points -= 1 - self._curr_values[index // 2] += 1 - elif button.text == "-": - self._curr_points += 1 - self._curr_values[index // 2] -= 1 - else: - raise ValueError(f"Invalid button text! Expected '+' or '-' but got {button.text}") - self.sprite_group.update(event) - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - - # Background - canvas.fill(BKG_COLOR) - - # Border - pygame.draw.rect( - canvas, - FRG_COLOR, - pygame.Rect(1, 1, INTERNAL_RES - 2, INTERNAL_RES - 2), - 2, - border_radius=3, - ) - - # Header - pygame.draw.rect( - canvas, - FRG_COLOR, - pygame.Rect(3, 1, INTERNAL_RES - 6, 14), - ) - header_text = TextRender( - "New Commander", (INTERNAL_RES // 2, 8), self.head_font, ref="center", fontcolor=BKG_COLOR - ) - header_text.draw(canvas) - - prompt_text: list[TextRender] = [] - prompt_text.append(TextRender("Name:", (10, 20), self.font)) - prompt_text.append(TextRender("Difficulty:", (10, 40), self.font)) - prompt_text.append(TextRender("Skill Points:", (10, 65 + 14 * 0), self.font)) - prompt_text.append(TextRender("Pilot:", (10, 65 + 14 * 1), self.font)) - prompt_text.append(TextRender("Fighter:", (10, 65 + 14 * 2), self.font)) - prompt_text.append(TextRender("Trader:", (10, 65 + 14 * 3), self.font)) - prompt_text.append(TextRender("Engineer:", (10, 65 + 14 * 4), self.font)) - - for text in prompt_text: - text.draw(canvas) - - # Buttons - for button in self._buttons: - button.draw(canvas) - - # Draw the current values - self.sprite_group.draw(canvas) - difficulty_text = TextRender(Difficulty.name(self._curr_difficulty), (HALF_RES, 40), self.font) - difficulty_text.draw(canvas) - for idx, value in enumerate(self._curr_values): - value_text = TextRender(str(value), (HALF_RES, 65 + (idx * 14)), self.font) - value_text.draw(canvas) - - return canvas diff --git a/src/interface/char_status.py b/src/interface/char_status.py deleted file mode 100644 index 391ee4b..0000000 --- a/src/interface/char_status.py +++ /dev/null @@ -1,66 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Commander Status Screen - Shows your stats, time played, etc. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class CharInfo(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Commander", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/longrange.py b/src/interface/longrange.py deleted file mode 100644 index 9a7adda..0000000 --- a/src/interface/longrange.py +++ /dev/null @@ -1,67 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Galactic Chart Screen - Shows the entire galaxy and the current range of the ship. - Also allows for systems to be tracked and wormholes to be previewed. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class LongRange(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Galactic Chart", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/personnel.py b/src/interface/personnel.py deleted file mode 100644 index c9938dc..0000000 --- a/src/interface/personnel.py +++ /dev/null @@ -1,75 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Personnel Screen - Manage current crew and hire new crew members if available. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar, divider -from .state import State - -NO_QUARTER = "No quarters available" -NO_HIRE = "No one for hire" - - -class Personnel(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Personnel Roster", self.head_font, canvas) - title.render() - - # Draw the dividers - divider(canvas, 63) - divider(canvas, 108) - - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/quests.py b/src/interface/quests.py deleted file mode 100644 index 04f326d..0000000 --- a/src/interface/quests.py +++ /dev/null @@ -1,65 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Quest Screen -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class Quests(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Quests", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/renderer.py b/src/interface/renderer.py deleted file mode 100644 index 607f3c3..0000000 --- a/src/interface/renderer.py +++ /dev/null @@ -1,240 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - The renderer module contains classes for rendering text and UI elements to the screen. - Elements like the header, and BSYW bar are universal elements for the game states and - can be abstracted away here to keep the individual screens' classes clean. -""" - -import pygame - -from ..constants import BKG_COLOR, FRG_COLOR, INTERNAL_RES - - -class Button: - def __init__( - self, - text: str, - pos: tuple[int, int], - size: tuple[int, int], - font: pygame.font.Font, - **options, - ) -> None: - self.pos = pos - self.width, self.height = size - self.text = text - self.font = font - self.reference = options.get("reference", "topleft") - self.render() - - def render(self) -> None: - """Render the text into an image.""" - self.border = pygame.Rect(0, 0, self.width, self.height) - self.img = self.font.render(self.text, False, FRG_COLOR) - self.txtarea = self.img.get_rect() - - # Set the position of the button based on the reference point. For the text area, we need to center - # it within the button so the position is adjusted based on the half-width and height of the border position. - if self.reference == "center": - self.border.center = self.pos - self.txtarea.center = (self.pos[0], self.pos[1]) - elif self.reference == "topright": - self.border.topright = self.pos - self.txtarea.center = ( - self.pos[0] - self.width // 2, - self.pos[1] + self.height // 2, - ) - elif self.reference == "bottomright": - self.border.bottomright = self.pos - self.txtarea.center = ( - self.pos[0] + self.width // 2, - self.pos[1] - self.height // 2, - ) - elif self.reference == "bottomleft": - self.border.bottomleft = self.pos - self.txtarea.center = ( - self.pos[0] + self.width // 2, - self.pos[1] - self.height // 2, - ) - else: - self.border.topleft = self.pos - self.txtarea.center = ( - self.pos[0] + self.width // 2, - self.pos[1] + self.height // 2, - ) - - def draw(self, canvas: pygame.Surface) -> None: - pygame.draw.rect(canvas, FRG_COLOR, self.border, 1) - canvas.blit(self.img, self.txtarea) - - def is_clicked(self, pos: tuple[int, int]) -> bool: - #! Debugging print statements - # print(self.border.topleft, self.border.bottomright) - # print(pos) - # print(self.border.collidepoint(pos)) - - return self.border.collidepoint(pos) - - -class TextRender: - """ - A self aware object that can render itself to the screen. - - Attributes: - text (str): The text to render. - pos (tuple[int, int]): The position to render the text. - font (pygame.font.Font): The font to render the text in. - pos_center (bool): Flag to center the text on the position. - fontcolor (pygame.Color or RGB tuple): The color of the text. - img (pygame.Surface): The rendered text image. - rect (pygame.Rect): The bounding rectangle - - """ - - def __init__(self, text: str, pos: tuple[int, int], font: pygame.font.Font, **options) -> None: - self.text = text - self.pos = pos - self.font = font - self.reference = options.get("ref", "topleft") - self.fontcolor = options.get("fontcolor", FRG_COLOR) - self.render() - - def render(self) -> None: - """Render the text into an image.""" - self.img = self.font.render(self.text, False, self.fontcolor) - self.rect = self.img.get_rect() - if self.reference == "center": - self.rect.center = self.pos - elif self.reference == "topright": - self.rect.topright = self.pos - elif self.reference == "bottomright": - self.rect.bottomright = self.pos - elif self.reference == "bottomleft": - self.rect.bottomleft = self.pos - else: - self.rect.topleft = self.pos - - def draw(self, canvas: pygame.Surface) -> None: - """Draw the text to the screen.""" - canvas.blit(self.img, self.rect) - - -class Header: - """ - Renders the core header for vast majority of screens in the game. - This includes the underline, as well as the BSYW button - outlines for the top right. - - Underline - 2px thick, starts 14px from the top of the screen - BSYW Button - 14px by 13px squares, 1px from the top right corner - """ - - def __init__(self, canvas: pygame.Surface, font: pygame.font.Font) -> None: - self.canvas = canvas - self.underline = pygame.Rect(1, 14, 158, 2) - - self.buttonW = Button("W", (INTERNAL_RES - 1, 1), (14, 13), font, reference="topright") - self.buttonY = Button( - "Y", - (self.buttonW.border.topleft[0] + 1, self.buttonW.border.topleft[1]), - (14, 13), - font, - reference="topright", - ) - self.buttonS = Button( - "S", - (self.buttonY.border.topleft[0] + 1, self.buttonY.border.topleft[1]), - (14, 13), - font, - reference="topright", - ) - self.buttonB = Button( - "B", - (self.buttonS.border.topleft[0] + 1, self.buttonS.border.topleft[1]), - (14, 13), - font, - reference="topright", - ) - self.render() - - def get_buttons(self) -> tuple[Button, Button, Button, Button]: - return self.buttonB, self.buttonS, self.buttonY, self.buttonW - - def render(self) -> None: - pygame.draw.rect(self.canvas, FRG_COLOR, self.underline) - self.buttonW.draw(self.canvas) - self.buttonY.draw(self.canvas) - self.buttonS.draw(self.canvas) - self.buttonB.draw(self.canvas) - - -class TitleBar: - """ - Renders the title bar for the top of the screen (e.g. Sell Cargo, System Info, etc.) - """ - - def __init__(self, title: str, font: pygame.font.Font, canvas: pygame.Surface) -> None: - self.canvas = canvas - self.title = title - self.font = font - self.text = TextRender(title, (4, 3), font, fontcolor=BKG_COLOR) - self.text_width = self.text.rect.size[0] - self.bar = pygame.Rect(1, 2, self.text_width + 5, 14) - self.top_bar = pygame.Rect(2, 1, self.text_width + 3, 1) - self.render() - - def render(self) -> None: - pygame.draw.rect(self.canvas, FRG_COLOR, self.bar) - pygame.draw.rect(self.canvas, FRG_COLOR, self.top_bar) - self.text.draw(self.canvas) - - -class RoundedButton(Button): - """This will be a button with the roughly rounded corners.""" - - pass - - -class TextInput(pygame.sprite.Sprite): - """A text input box for the player to enter a custom value""" - - def __init__(self, x, y, w, font: pygame.font.Font): - super().__init__() - self.color = (0, 0, 0) - self.backcolor = None - self.pos = (x, y) - self.width = w - self.font = font - self.active = False - self.text = "" - self.render_text() - - def render_text(self): - t_surf = self.font.render(self.text, False, self.color, self.backcolor) - self.image = pygame.Surface( - (max(self.width, t_surf.get_width() + 10), t_surf.get_height() + 10), pygame.SRCALPHA - ) - if self.backcolor: - self.image.fill(self.backcolor) - self.image.blit(t_surf, (5, 5)) - pygame.draw.rect(self.image, self.color, self.image.get_rect().inflate(-2, -2), 2) - self.rect = self.image.get_rect(topleft=self.pos) - - def update(self, event): - if event.type == pygame.MOUSEBUTTONDOWN and not self.active: - self.active = self.rect.collidepoint(event.pos) - if event.type == pygame.KEYDOWN and self.active: - if event.key == pygame.K_RETURN: - self.active = False - elif event.key == pygame.K_BACKSPACE: - self.text = self.text[:-1] - else: - self.text += event.unicode - self.render_text() - - -def divider(canvas: pygame.Surface, y: int) -> None: - """ - Draws a horizontal divider line on the screen at the specified y position. - """ - pygame.draw.line(canvas, FRG_COLOR, (1, y), (INTERNAL_RES - 2, y), 2) diff --git a/src/interface/sell_cargo.py b/src/interface/sell_cargo.py deleted file mode 100644 index 954a442..0000000 --- a/src/interface/sell_cargo.py +++ /dev/null @@ -1,75 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Sell Cargo Screen -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from ..economy import TradeItemId -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class SellCargo(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Sell Cargo", self.head_font, canvas) - title.render() - - # Draw the cargo list - i = 0 - for good in TradeItemId.lst(): - TextRender(good, (30, 18 + i), self.font).draw(canvas) - i += 13 - - TextRender("Bays: {}/{}", (2, 158), self.font, ref="bottomleft").draw(canvas) - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/sell_equip.py b/src/interface/sell_equip.py deleted file mode 100644 index ae67797..0000000 --- a/src/interface/sell_equip.py +++ /dev/null @@ -1,71 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Sell Equipment Screen -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar, divider -from .state import State - - -class SellEquipment(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Sell Equipment", self.head_font, canvas) - title.render() - - # Draw the dividers - divider(canvas, 63) - divider(canvas, 108) - - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/ship_info.py b/src/interface/ship_info.py deleted file mode 100644 index f58f8ac..0000000 --- a/src/interface/ship_info.py +++ /dev/null @@ -1,66 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Ship Info Screen - Shows the info on your current ship. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class ShipInfo(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Current Ship", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/shipyard.py b/src/interface/shipyard.py deleted file mode 100644 index 702aeb1..0000000 --- a/src/interface/shipyard.py +++ /dev/null @@ -1,83 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Shipyard Screen - Counterintuitively, not actually where you buy ships. - Houses refuel, repair, escape pod purchase and then link to ship sales. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - -FUEL_STATUS = "You have fuel to fly {0} parsecs." -FULL_TANK = "Your tank cannot hold more fuel." -HULL_STATUS = "Your hull strength is at {0}%." -FULL_HULL = "No repairs are needed." -SHIP_SALES = "No new ships are for sale." -ESCAPE_POD = "No escape pods are for sale." - - -class Shipyard(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Shipyard", self.head_font, canvas) - title.render() - - # Draw the text - TextRender(FUEL_STATUS.format(0), (2, 30), self.font).draw(canvas) - TextRender(FULL_TANK, (2, 50), self.font).draw(canvas) - TextRender(HULL_STATUS.format(100), (2, 70), self.font).draw(canvas) - TextRender(FULL_HULL, (2, 90), self.font).draw(canvas) - TextRender(SHIP_SALES, (2, 110), self.font).draw(canvas) - TextRender(ESCAPE_POD, (2, 130), self.font).draw(canvas) - TextRender("Cash: {} cr.", (154, 158), self.font, ref="bottomright").draw(canvas) - - return canvas diff --git a/src/interface/shortrange.py b/src/interface/shortrange.py deleted file mode 100644 index c8e6424..0000000 --- a/src/interface/shortrange.py +++ /dev/null @@ -1,69 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Short Range Chart Screen - Shows the nearby systems and the current range of the ship. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class ShortRange(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Short Range Chart", self.head_font, canvas) - title.render() - - # TODO This one is gonna be a doozy! - TextRender("Pls Halp..", (80, 80), self.font, ref="center").draw(canvas) - - return canvas diff --git a/src/interface/special_cargo.py b/src/interface/special_cargo.py deleted file mode 100644 index 8b39c64..0000000 --- a/src/interface/special_cargo.py +++ /dev/null @@ -1,66 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Special Cargo Screen - Here is where you can view quest related or otherwise unique cargo items. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class SpecialCargo(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Special Cargo", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/splash.py b/src/interface/splash.py deleted file mode 100644 index b883678..0000000 --- a/src/interface/splash.py +++ /dev/null @@ -1,34 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - The splash screen is the inital screen that is displayed when the game is started. -""" - -import pygame - -from ..constants import GameStateID -from .state import State - - -class Splash(State): - - def __init__(self, game) -> None: - self.game = game - super().__init__(game) - self.background_image = pygame.image.load(self.game.images + "/splash.jpg") - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key in (pygame.K_ESCAPE, pygame.K_q): - self.game.running = False - if event.key == pygame.K_RETURN: - self.game.set_state(GameStateID.CHAR_CREATE) - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.blit(self.background_image, (0, 0)) - return canvas diff --git a/src/interface/state.py b/src/interface/state.py deleted file mode 100644 index 227335e..0000000 --- a/src/interface/state.py +++ /dev/null @@ -1,13 +0,0 @@ -class State: - - def __init__(self, game) -> None: - self.game = game - - def handle_events(self, events: list) -> None: - pass - - def update(self, actions) -> None: - pass - - def render(self, canvas) -> None: - pass diff --git a/src/interface/state.template b/src/interface/state.template deleted file mode 100644 index ee74168..0000000 --- a/src/interface/state.template +++ /dev/null @@ -1,43 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class (State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("", self.head_font, canvas) - title.render() - - return canvas diff --git a/src/interface/system_info.py b/src/interface/system_info.py deleted file mode 100644 index ee75426..0000000 --- a/src/interface/system_info.py +++ /dev/null @@ -1,93 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Basic system information screen -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class SystemInfo(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - self.header = Header(self.game.canvas, self.font) - self.buttonB, self.buttonS, self.buttonY, self.buttonW = self.header.get_buttons() - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - if event.type == pygame.MOUSEBUTTONDOWN: - if self.buttonB.is_clicked(event.pos): - print("Clicked B") - self.game.current_state = GameStateID.B_CARGO - if self.buttonS.is_clicked(event.pos): - print("Clicked S") - self.game.current_state = GameStateID.S_CARGO - if self.buttonY.is_clicked(event.pos): - print("Clicked Y") - self.game.current_state = GameStateID.Y_SHIPYARD - if self.buttonW.is_clicked(event.pos): - print("Clicked W") - self.game.current_state = GameStateID.W_SHORTRANGE - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - # Header(canvas, self.font) - self.header.render() - TitleBar("System Info", self.head_font, canvas) - - # Category headers - categories: list[TextRender] = [] - categories.append(TextRender("Name:", (1, 18), self.head_font)) - categories.append(TextRender("Size:", (1, 38), self.head_font)) - categories.append(TextRender("Tech Level:", (1, 58), self.head_font)) - categories.append(TextRender("Government:", (1, 78), self.head_font)) - categories.append(TextRender("Resources:", (1, 98), self.head_font)) - categories.append(TextRender("Police:", (1, 118), self.head_font)) - categories.append(TextRender("Pirates:", (1, 138), self.head_font)) - - for category in categories: - category.draw(canvas) - - return canvas diff --git a/src/interface/target_system.py b/src/interface/target_system.py deleted file mode 100644 index c49851f..0000000 --- a/src/interface/target_system.py +++ /dev/null @@ -1,80 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - Target System - General info on the currently selected target to warp to. -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class TargetSystem(State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_b: - self.game.current_state = GameStateID.B_CARGO - if event.key == pygame.K_s: - self.game.current_state = GameStateID.S_CARGO - if event.key == pygame.K_y: - self.game.current_state = GameStateID.Y_SHIPYARD - if event.key == pygame.K_e: - self.game.current_state = GameStateID.BUY_EQUIPMENT - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SELL_EQUIPMENT - if event.key == pygame.K_p: - self.game.current_state = GameStateID.PERSONNEL - if event.key == pygame.K_k: - self.game.current_state = GameStateID.BANK - if event.key == pygame.K_i: - self.game.current_state = GameStateID.SYSTEM_INFO - if event.key == pygame.K_c: - self.game.current_state = GameStateID.STATUS - if event.key == pygame.K_g: - self.game.current_state = GameStateID.GALACTIC_CHART - if event.key == pygame.K_w: - self.game.current_state = GameStateID.W_SHORTRANGE - if event.key == pygame.K_o: - NotImplemented - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("Target System", self.head_font, canvas) - title.render() - - # Category headers - categories: list[TextRender] = [] - categories.append(TextRender("Name:", (1, 18), self.head_font)) - categories.append(TextRender("Size:", (1, 38), self.head_font)) - categories.append(TextRender("Tech Level:", (1, 58), self.head_font)) - categories.append(TextRender("Government:", (1, 78), self.head_font)) - categories.append(TextRender("Distance:", (1, 98), self.head_font)) - categories.append(TextRender("Police:", (1, 118), self.head_font)) - categories.append(TextRender("Pirates:", (1, 138), self.head_font)) - categories.append(TextRender("Current costs:", (1, 158), self.head_font)) - - for category in categories: - category.draw(canvas) - - return canvas diff --git a/src/screens/splash.py b/src/screens/splash.py deleted file mode 100644 index b883678..0000000 --- a/src/screens/splash.py +++ /dev/null @@ -1,34 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - The splash screen is the inital screen that is displayed when the game is started. -""" - -import pygame - -from ..constants import GameStateID -from .state import State - - -class Splash(State): - - def __init__(self, game) -> None: - self.game = game - super().__init__(game) - self.background_image = pygame.image.load(self.game.images + "/splash.jpg") - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key in (pygame.K_ESCAPE, pygame.K_q): - self.game.running = False - if event.key == pygame.K_RETURN: - self.game.set_state(GameStateID.CHAR_CREATE) - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.blit(self.background_image, (0, 0)) - return canvas diff --git a/src/screens/state.template b/src/screens/state.template deleted file mode 100644 index ee74168..0000000 --- a/src/screens/state.template +++ /dev/null @@ -1,43 +0,0 @@ -""" - Space Trader (PalmOS) | RPINerd, 2024 - - -""" - -import pygame - -from ..constants import BKG_COLOR, GameStateID -from .renderer import Header, TextRender, TitleBar -from .state import State - - -class (State): - - def __init__(self, game) -> None: - self.game = game - self.head_font: pygame.font.Font = game.font_sm_bold - self.font: pygame.font.Font = game.font_sm - super().__init__(game) - - def handle_events(self, event: pygame.event) -> None: - if event.type == pygame.QUIT: - self.game.running = False - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_q: - self.game.current_state = GameStateID.SPLASH - if event.key == pygame.K_ESCAPE: - self.game.current_state = GameStateID.SPLASH - - def update(self, actions) -> None: - pass - - def render(self, canvas: pygame.Surface) -> pygame.Surface: - canvas.fill(BKG_COLOR) - - # Draw the header - header = Header(canvas, self.font) - header.render() - title = TitleBar("", self.head_font, canvas) - title.render() - - return canvas