Skip to content

Commit c503d4e

Browse files
committed
Attempting to integrate custom fonts
1 parent 45ce0c8 commit c503d4e

File tree

5 files changed

+135
-91
lines changed

5 files changed

+135
-91
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ venv/
1313
# Scratch/temp files
1414
*.sln
1515
scratch*
16-
*.tmp
16+
*.tmp
17+
Notes.md

assets/images/splash.png

23.9 KB
Loading

spacetradertk.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@
66
This file is the start of a rewrite of the Space Trader game using Tkinter for the GUI.
77
"""
88

9+
import os
910
import tkinter as tk
1011

11-
import src.constants as c
12+
from customtkinter import FontManager
1213

13-
# import src.game_data as gd
14+
import src.constants as c
1415
from src.screens.char_create import CreateCommander
1516

16-
# from tkinter import ttk
17+
# from time import sleep
18+
# from tkinter import font
19+
# from PIL import ImageFont
1720

1821

1922
class SpaceTrader(tk.Tk):
@@ -25,9 +28,33 @@ def __init__(self):
2528
self.geometry(f"{str(160 * c.SCALAR)}x{str(160 * c.SCALAR)}")
2629
self.resizable(False, False)
2730
self.configure(bg=c.BKG_HEX)
28-
31+
self._load_assets()
32+
33+
# Splash screen
34+
# splash_img = tk.PhotoImage(file=os.path.join(self.images, "splash.png"))
35+
# splash = tk.Label(self, image=splash_img)
36+
# splash.pack(expand=True, fill="both")
37+
# sleep(4)
38+
# splash.pack_forget()
2939
self.create_commander = CreateCommander(self)
30-
self.create_commander.pack(expand=True, fill="both")
40+
41+
def _load_assets(self):
42+
"""
43+
Loads all game assets, currently just pointers to directories
44+
"""
45+
46+
# Load the configuration file
47+
# self.config = configparser.ConfigParser()
48+
# self.config.read(os.path.join("src/config", "config.ini"))
49+
50+
# Load the directories for the game assets
51+
self.images = os.path.join("assets/images/")
52+
self.resources = os.path.join("assets/resources/")
53+
# self.data = os.path.join("data")
54+
FontManager.load_font("assets/fonts/palm-pilot-small.ttf")
55+
FontManager.load_font("assets/fonts/palm-pilot-bold.ttf")
56+
FontManager.load_font("assets/fonts/palm-pilot-large.ttf")
57+
FontManager.load_font("assets/fonts/palm-pilot-large-bold.ttf")
3158

3259

3360
game = SpaceTrader()

src/screens/char_create.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ def __init__(self, parent, label_text, initial_value, row, column, **kwargs) ->
2121

2222
global points_pool
2323
self.value = tk.IntVar(value=initial_value)
24-
25-
self.label = ttk.Label(self, text=label_text)
24+
self.label = ttk.Label(self, text=label_text, font=("palm-pilot-small", 6))
2625
self.decrement = ttk.Button(self, text="-", command=self.decrement_value)
2726
self.value_label = ttk.Label(self, textvariable=self.value)
2827
self.increment = ttk.Button(self, text="+", command=self.increment_value)
@@ -52,6 +51,7 @@ class CreateCommander(ttk.Frame):
5251

5352
def __init__(self, parent) -> None:
5453
super().__init__(parent)
54+
self.pack(expand=True, fill="both")
5555

5656
# Initial values
5757
self.cmdr_name = tk.StringVar(value="Jameson")
@@ -60,7 +60,8 @@ def __init__(self, parent) -> None:
6060
points_pool = tk.IntVar(value=16)
6161

6262
# Title Bar
63-
self.header = ttk.Label(self, text="New Commander", font=("Helvetica", 8))
63+
self.header = ttk.Label(self, text="New Commander")
64+
self.header["font"] = "PalmPilotLargeBold"
6465
self.header.pack()
6566

6667
# Commander name
@@ -85,7 +86,6 @@ def __init__(self, parent) -> None:
8586
self.difficulty_inc.pack(side="left")
8687

8788
# Skill points allocation grid
88-
8989
self.skills_frame = ttk.Frame(self)
9090
self.points_label = ttk.Label(self.skills_frame, text="Skill Points:")
9191
self.points_current = ttk.Label(self.skills_frame, textvariable=points_pool)

src/screens/system_info.py

Lines changed: 97 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -4,90 +4,106 @@
44
Basic system information screen
55
"""
66

7-
import pygame
7+
import tkinter as tk
8+
from tkinter import ttk
9+
10+
from header import Heading
811

912
from ..constants import BKG_COLOR, GameStateID
1013
from .renderer import Header, TextRender, TitleBar
1114
from .state import State
1215

1316

14-
class SystemInfo(State):
15-
16-
def __init__(self, game) -> None:
17-
self.game = game
18-
self.head_font: pygame.font.Font = game.font_sm_bold
19-
self.font: pygame.font.Font = game.font_sm
20-
super().__init__(game)
21-
22-
self.header = Header(self.game.canvas, self.font)
23-
self.buttonB, self.buttonS, self.buttonY, self.buttonW = self.header.get_buttons()
24-
25-
def handle_events(self, event: pygame.event) -> None:
26-
if event.type == pygame.QUIT:
27-
self.game.running = False
28-
if event.type == pygame.KEYDOWN:
29-
if event.key == pygame.K_ESCAPE:
30-
self.game.current_state = GameStateID.SPLASH
31-
if event.key == pygame.K_b:
32-
self.game.current_state = GameStateID.B_CARGO
33-
if event.key == pygame.K_s:
34-
self.game.current_state = GameStateID.S_CARGO
35-
if event.key == pygame.K_y:
36-
self.game.current_state = GameStateID.Y_SHIPYARD
37-
if event.key == pygame.K_e:
38-
self.game.current_state = GameStateID.BUY_EQUIPMENT
39-
if event.key == pygame.K_q:
40-
self.game.current_state = GameStateID.SELL_EQUIPMENT
41-
if event.key == pygame.K_p:
42-
self.game.current_state = GameStateID.PERSONNEL
43-
if event.key == pygame.K_k:
44-
self.game.current_state = GameStateID.BANK
45-
if event.key == pygame.K_i:
46-
self.game.current_state = GameStateID.SYSTEM_INFO
47-
if event.key == pygame.K_c:
48-
self.game.current_state = GameStateID.STATUS
49-
if event.key == pygame.K_g:
50-
self.game.current_state = GameStateID.GALACTIC_CHART
51-
if event.key == pygame.K_w:
52-
self.game.current_state = GameStateID.W_SHORTRANGE
53-
if event.key == pygame.K_o:
54-
NotImplemented
55-
if event.type == pygame.MOUSEBUTTONDOWN:
56-
if self.buttonB.is_clicked(event.pos):
57-
print("Clicked B")
58-
self.game.current_state = GameStateID.B_CARGO
59-
if self.buttonS.is_clicked(event.pos):
60-
print("Clicked S")
61-
self.game.current_state = GameStateID.S_CARGO
62-
if self.buttonY.is_clicked(event.pos):
63-
print("Clicked Y")
64-
self.game.current_state = GameStateID.Y_SHIPYARD
65-
if self.buttonW.is_clicked(event.pos):
66-
print("Clicked W")
67-
self.game.current_state = GameStateID.W_SHORTRANGE
68-
69-
def update(self, actions) -> None:
70-
pass
71-
72-
def render(self, canvas: pygame.Surface) -> pygame.Surface:
73-
canvas.fill(BKG_COLOR)
74-
75-
# Draw the header
76-
# Header(canvas, self.font)
77-
self.header.render()
78-
TitleBar("System Info", self.head_font, canvas)
79-
80-
# Category headers
81-
categories: list[TextRender] = []
82-
categories.append(TextRender("Name:", (1, 18), self.head_font))
83-
categories.append(TextRender("Size:", (1, 38), self.head_font))
84-
categories.append(TextRender("Tech Level:", (1, 58), self.head_font))
85-
categories.append(TextRender("Government:", (1, 78), self.head_font))
86-
categories.append(TextRender("Resources:", (1, 98), self.head_font))
87-
categories.append(TextRender("Police:", (1, 118), self.head_font))
88-
categories.append(TextRender("Pirates:", (1, 138), self.head_font))
89-
90-
for category in categories:
91-
category.draw(canvas)
92-
93-
return canvas
17+
class SystemInfo(ttk.frame):
18+
19+
def __init__(self, parent) -> None:
20+
super().__init__(parent)
21+
self.pack(expand=True, fill="both")
22+
23+
self.header = Heading(self, "System Info")
24+
25+
self.info_frame = ttk.Frame(self)
26+
self.pressure_frame = ttk.Frame(self)
27+
self.shortcut_frame = ttk.Frame(self)
28+
29+
30+
# class SystemInfo(State):
31+
32+
# def __init__(self, game) -> None:
33+
# self.game = game
34+
# self.head_font: pygame.font.Font = game.font_sm_bold
35+
# self.font: pygame.font.Font = game.font_sm
36+
# super().__init__(game)
37+
38+
# self.header = Header(self.game.canvas, self.font)
39+
# self.buttonB, self.buttonS, self.buttonY, self.buttonW = self.header.get_buttons()
40+
41+
# def handle_events(self, event: pygame.event) -> None:
42+
# if event.type == pygame.QUIT:
43+
# self.game.running = False
44+
# if event.type == pygame.KEYDOWN:
45+
# if event.key == pygame.K_ESCAPE:
46+
# self.game.current_state = GameStateID.SPLASH
47+
# if event.key == pygame.K_b:
48+
# self.game.current_state = GameStateID.B_CARGO
49+
# if event.key == pygame.K_s:
50+
# self.game.current_state = GameStateID.S_CARGO
51+
# if event.key == pygame.K_y:
52+
# self.game.current_state = GameStateID.Y_SHIPYARD
53+
# if event.key == pygame.K_e:
54+
# self.game.current_state = GameStateID.BUY_EQUIPMENT
55+
# if event.key == pygame.K_q:
56+
# self.game.current_state = GameStateID.SELL_EQUIPMENT
57+
# if event.key == pygame.K_p:
58+
# self.game.current_state = GameStateID.PERSONNEL
59+
# if event.key == pygame.K_k:
60+
# self.game.current_state = GameStateID.BANK
61+
# if event.key == pygame.K_i:
62+
# self.game.current_state = GameStateID.SYSTEM_INFO
63+
# if event.key == pygame.K_c:
64+
# self.game.current_state = GameStateID.STATUS
65+
# if event.key == pygame.K_g:
66+
# self.game.current_state = GameStateID.GALACTIC_CHART
67+
# if event.key == pygame.K_w:
68+
# self.game.current_state = GameStateID.W_SHORTRANGE
69+
# if event.key == pygame.K_o:
70+
# NotImplemented
71+
# if event.type == pygame.MOUSEBUTTONDOWN:
72+
# if self.buttonB.is_clicked(event.pos):
73+
# print("Clicked B")
74+
# self.game.current_state = GameStateID.B_CARGO
75+
# if self.buttonS.is_clicked(event.pos):
76+
# print("Clicked S")
77+
# self.game.current_state = GameStateID.S_CARGO
78+
# if self.buttonY.is_clicked(event.pos):
79+
# print("Clicked Y")
80+
# self.game.current_state = GameStateID.Y_SHIPYARD
81+
# if self.buttonW.is_clicked(event.pos):
82+
# print("Clicked W")
83+
# self.game.current_state = GameStateID.W_SHORTRANGE
84+
85+
# def update(self, actions) -> None:
86+
# pass
87+
88+
# def render(self, canvas: pygame.Surface) -> pygame.Surface:
89+
# canvas.fill(BKG_COLOR)
90+
91+
# # Draw the header
92+
# # Header(canvas, self.font)
93+
# self.header.render()
94+
# TitleBar("System Info", self.head_font, canvas)
95+
96+
# # Category headers
97+
# categories: list[TextRender] = []
98+
# categories.append(TextRender("Name:", (1, 18), self.head_font))
99+
# categories.append(TextRender("Size:", (1, 38), self.head_font))
100+
# categories.append(TextRender("Tech Level:", (1, 58), self.head_font))
101+
# categories.append(TextRender("Government:", (1, 78), self.head_font))
102+
# categories.append(TextRender("Resources:", (1, 98), self.head_font))
103+
# categories.append(TextRender("Police:", (1, 118), self.head_font))
104+
# categories.append(TextRender("Pirates:", (1, 138), self.head_font))
105+
106+
# for category in categories:
107+
# category.draw(canvas)
108+
109+
# return canvas

0 commit comments

Comments
 (0)