Skip to content

Commit

Permalink
Screens for tk; currently mostly just copy of interface
Browse files Browse the repository at this point in the history
  • Loading branch information
RPINerd committed Aug 14, 2024
1 parent 3fde773 commit 06f9d9d
Show file tree
Hide file tree
Showing 23 changed files with 1,735 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/screens/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
""
66 changes: 66 additions & 0 deletions src/screens/average_prices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
"""
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
89 changes: 89 additions & 0 deletions src/screens/bank.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
"""
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
75 changes: 75 additions & 0 deletions src/screens/buy_cargo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""
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
74 changes: 74 additions & 0 deletions src/screens/buy_equip.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
"""
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
74 changes: 74 additions & 0 deletions src/screens/buy_ship.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
"""
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
Loading

0 comments on commit 06f9d9d

Please sign in to comment.