diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 3e96a66..58b2d2b 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -7,7 +7,7 @@ we maintain our own git repo. running ------- - just run launch the app (uv run python playscii.py) + just run launch the app (uv run python -m playscii) just check lint gate (ruff check + format) just lint ruff check --fix + ruff format just typecheck ty check (601 errors, legacy code, not in check gate) @@ -16,14 +16,19 @@ running project structure ----------------- - all python source lives at the repo root (no src/ layout) - ~50 .py files, flat structure, no packages + python source organized as playscii/ package (~50 .py files) + data directories (charsets/, palettes/, etc.) live at repo root + formats/ and games/ also at root (loaded dynamically via importlib) + + playscii/ + __init__.py package marker + __main__.py entry point for python -m playscii + app.py main application, SDL2/OpenGL setup (was playscii.py) + art.py art/canvas management, the core data model + ui*.py ~20 UI modules (dialogs, panels, menus, toolbar, etc.) + game_*.py game engine (objects, rooms, world, HUD) + renderable*.py rendering pipeline (sprites, lines, framebuffer) - playscii.py main entry point, app init, SDL2/OpenGL setup - art.py art/canvas management, the core data model - ui*.py ~20 UI modules (dialogs, panels, menus, toolbar, etc.) - game_*.py game engine (objects, rooms, world, HUD) - renderable*.py rendering pipeline (sprites, lines, framebuffer) formats/ import/export handlers (ANS, ATA, BMP, EDSCII, PNG, GIF, TXT) games/ bundled example games (crawler, fireplace, flood, maze, shmup, etc.) charsets/ 30+ classic computer character sets (.char + .png) @@ -44,6 +49,12 @@ dependencies gotchas ------- + package structure: + all python source now lives in playscii/ package. files use relative + imports (from .art import ...). formats/ and games/ use absolute imports + (from playscii.art import ...). data directories stay at root since the + app uses CWD-relative paths to load charsets, shaders, etc. + art scripts and exec(): art.py imports random at module level with a noqa comment. art scripts (.arsc files) are loaded via exec() in art.py's scope. they use random @@ -52,14 +63,14 @@ gotchas in art.py — check before removing anything. pdoc detection: - playscii.py has a contextlib.suppress block that tries to import pdoc. + app.py has a contextlib.suppress block that tries to import pdoc. the import MUST stay inside the suppress block. if it gets moved or removed, pdoc_available becomes unconditionally True and the help menu breaks when pdoc isn't installed. SDL2 init ordering: - many modules import from playscii.py's namespace or expect SDL2 to be - initialized before they run. import order in playscii.py matters — E402 + many modules import from app.py's namespace or expect SDL2 to be + initialized before they run. import order in app.py matters — E402 is disabled for this reason. mutable default arguments: diff --git a/.gitignore b/.gitignore index e39c021..1470402 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ venv/*.* dist/*.* build/*.* +playscii/__pycache__/*.* __pycache__/*.* .idea/*.* playscii.profile diff --git a/formats/in_ans.py b/formats/in_ans.py index ef633a3..180b858 100644 --- a/formats/in_ans.py +++ b/formats/in_ans.py @@ -1,4 +1,4 @@ -from art_import import ArtImporter +from playscii.art_import import ArtImporter DEFAULT_FG, DEFAULT_BG = 7, 0 WIDTH = 80 diff --git a/formats/in_ata.py b/formats/in_ata.py index a39a6b8..26b1108 100644 --- a/formats/in_ata.py +++ b/formats/in_ata.py @@ -1,4 +1,4 @@ -from art_import import ArtImporter +from playscii.art_import import ArtImporter # import as white on black for ease of edit + export DEFAULT_FG, DEFAULT_BG = 113, 1 diff --git a/formats/in_bitmap.py b/formats/in_bitmap.py index 741f6fb..2c693b8 100644 --- a/formats/in_bitmap.py +++ b/formats/in_bitmap.py @@ -4,14 +4,13 @@ import os from PIL import Image - -from art import DEFAULT_CHARSET, DEFAULT_HEIGHT, DEFAULT_PALETTE, DEFAULT_WIDTH -from art_import import ArtImporter -from image_convert import ImageConverter -from palette import PaletteFromFile -from ui_art_dialog import ImportOptionsDialog -from ui_dialog import Field, UIDialog -from ui_file_chooser_dialog import ImageFileChooserDialog +from playscii.art import DEFAULT_CHARSET, DEFAULT_HEIGHT, DEFAULT_PALETTE, DEFAULT_WIDTH +from playscii.art_import import ArtImporter +from playscii.image_convert import ImageConverter +from playscii.palette import PaletteFromFile +from playscii.ui_art_dialog import ImportOptionsDialog +from playscii.ui_dialog import Field, UIDialog +from playscii.ui_file_chooser_dialog import ImageFileChooserDialog # custom chooser showing image previews, shares parent w/ "palette from image" diff --git a/formats/in_bitmap_2color.py b/formats/in_bitmap_2color.py index cb34a38..a6cb63e 100644 --- a/formats/in_bitmap_2color.py +++ b/formats/in_bitmap_2color.py @@ -1,12 +1,11 @@ import numpy as np - from formats.in_bitmap import ( BitmapImageImporter, ConvertImageChooserDialog, ConvertImageOptionsDialog, ) -from image_convert import ImageConverter -from ui_dialog import Field, SkipFieldType, UIDialog +from playscii.image_convert import ImageConverter +from playscii.ui_dialog import Field, SkipFieldType, UIDialog class TwoColorConvertImageOptionsDialog(ConvertImageOptionsDialog): diff --git a/formats/in_bitmap_sequence.py b/formats/in_bitmap_sequence.py index f285afc..34fbd96 100644 --- a/formats/in_bitmap_sequence.py +++ b/formats/in_bitmap_sequence.py @@ -6,7 +6,7 @@ import os import time import formats.in_bitmap as bm -import image_convert +from playscii import image_convert class ImageSequenceConverter: diff --git a/formats/in_edscii.py b/formats/in_edscii.py index ffb4ad3..e8a0dce 100644 --- a/formats/in_edscii.py +++ b/formats/in_edscii.py @@ -1,6 +1,6 @@ -from art_import import ArtImporter -from ui_art_dialog import ImportOptionsDialog -from ui_dialog import Field, UIDialog +from playscii.art_import import ArtImporter +from playscii.ui_art_dialog import ImportOptionsDialog +from playscii.ui_dialog import Field, UIDialog class EDSCIIImportOptionsDialog(ImportOptionsDialog): diff --git a/formats/in_endoom.py b/formats/in_endoom.py index 3433317..b7c53e2 100644 --- a/formats/in_endoom.py +++ b/formats/in_endoom.py @@ -1,4 +1,4 @@ -from art_import import ArtImporter +from playscii.art_import import ArtImporter class EndDoomImporter(ArtImporter): diff --git a/formats/in_txt.py b/formats/in_txt.py index 0765bdb..ea6c248 100644 --- a/formats/in_txt.py +++ b/formats/in_txt.py @@ -1,4 +1,4 @@ -from art_import import ArtImporter +from playscii.art_import import ArtImporter class TextImporter(ArtImporter): diff --git a/formats/out_ans.py b/formats/out_ans.py index 778f019..3ce6986 100644 --- a/formats/out_ans.py +++ b/formats/out_ans.py @@ -1,4 +1,4 @@ -from art_export import ArtExporter +from playscii.art_export import ArtExporter WIDTH = 80 ENCODING = "cp1252" # old default diff --git a/formats/out_ata.py b/formats/out_ata.py index 2c95732..e790737 100644 --- a/formats/out_ata.py +++ b/formats/out_ata.py @@ -1,5 +1,5 @@ -from art import TileIter -from art_export import ArtExporter +from playscii.art import TileIter +from playscii.art_export import ArtExporter class ANSExporter(ArtExporter): diff --git a/formats/out_endoom.py b/formats/out_endoom.py index 76a8341..d8d6081 100644 --- a/formats/out_endoom.py +++ b/formats/out_endoom.py @@ -1,4 +1,4 @@ -from art_export import ArtExporter +from playscii.art_export import ArtExporter WIDTH, HEIGHT = 80, 25 diff --git a/formats/out_gif.py b/formats/out_gif.py index 7788196..746890c 100644 --- a/formats/out_gif.py +++ b/formats/out_gif.py @@ -1,5 +1,5 @@ -from art_export import ArtExporter -from image_export import export_animation +from playscii.art_export import ArtExporter +from playscii.image_export import export_animation class GIFExporter(ArtExporter): diff --git a/formats/out_png.py b/formats/out_png.py index e408384..481bd8e 100644 --- a/formats/out_png.py +++ b/formats/out_png.py @@ -1,7 +1,7 @@ -from art_export import ArtExporter -from image_export import export_still_image -from ui_art_dialog import ExportOptionsDialog -from ui_dialog import Field, UIDialog +from playscii.art_export import ArtExporter +from playscii.image_export import export_still_image +from playscii.ui_art_dialog import ExportOptionsDialog +from playscii.ui_dialog import Field, UIDialog DEFAULT_SCALE = 4 DEFAULT_CRT = True diff --git a/formats/out_png_set.py b/formats/out_png_set.py index 62ad337..ca20b6f 100644 --- a/formats/out_png_set.py +++ b/formats/out_png_set.py @@ -1,10 +1,10 @@ import os -from art_export import ArtExporter -from image_export import export_still_image -from renderable import LAYER_VIS_FULL, LAYER_VIS_NONE -from ui_art_dialog import ExportOptionsDialog -from ui_dialog import Field, UIDialog +from playscii.art_export import ArtExporter +from playscii.image_export import export_still_image +from playscii.renderable import LAYER_VIS_FULL, LAYER_VIS_NONE +from playscii.ui_art_dialog import ExportOptionsDialog +from playscii.ui_dialog import Field, UIDialog FILE_EXTENSION = "png" diff --git a/formats/out_txt.py b/formats/out_txt.py index b5a1ee1..d2c0373 100644 --- a/formats/out_txt.py +++ b/formats/out_txt.py @@ -1,4 +1,4 @@ -from art_export import ArtExporter +from playscii.art_export import ArtExporter class TextExporter(ArtExporter): diff --git a/games/crawler/scripts/crawler.py b/games/crawler/scripts/crawler.py index e03726d..45b5d34 100644 --- a/games/crawler/scripts/crawler.py +++ b/games/crawler/scripts/crawler.py @@ -1,4 +1,4 @@ -from game_object import GameObject +from playscii.game_object import GameObject # initial work: 2019-02-17 and 18 # FP view research: 2021-11-22 diff --git a/games/crawler/scripts/line_tester.py b/games/crawler/scripts/line_tester.py index 9604127..c25f551 100644 --- a/games/crawler/scripts/line_tester.py +++ b/games/crawler/scripts/line_tester.py @@ -1,6 +1,6 @@ -import vector -from game_object import GameObject -from renderable_line import DebugLineRenderable +from playscii import vector +from playscii.game_object import GameObject +from playscii.renderable_line import DebugLineRenderable # stuff for troubleshooting "get tiles intersecting line" etc diff --git a/games/crawler/scripts/player.py b/games/crawler/scripts/player.py index af3e4cc..0e49345 100644 --- a/games/crawler/scripts/player.py +++ b/games/crawler/scripts/player.py @@ -1,4 +1,3 @@ -from game_util_objects import Player from games.crawler.scripts.crawler import ( DIR_EAST, DIR_NAMES, @@ -9,6 +8,7 @@ from games.crawler.scripts.crawler import ( OPPOSITE_DIRS, RIGHT_TURN_DIRS, ) +from playscii.game_util_objects import Player class CrawlPlayer(Player): diff --git a/games/crawler/scripts/topview.py b/games/crawler/scripts/topview.py index 24bedec..612f34e 100644 --- a/games/crawler/scripts/topview.py +++ b/games/crawler/scripts/topview.py @@ -1,12 +1,12 @@ -from art import TileIter -from game_object import GameObject from games.crawler.scripts.crawler import ( DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, ) -from vector import get_tiles_along_integer_line +from playscii.art import TileIter +from playscii.game_object import GameObject +from playscii.vector import get_tiles_along_integer_line class CrawlTopDownView(GameObject): diff --git a/games/cronotest/scripts/cronotest_classes.py b/games/cronotest/scripts/cronotest_classes.py index 23ce551..5f13c1c 100644 --- a/games/cronotest/scripts/cronotest_classes.py +++ b/games/cronotest/scripts/cronotest_classes.py @@ -1,4 +1,9 @@ -from game_util_objects import DynamicBoxObject, Pickup, StaticTileObject, TopDownPlayer +from playscii.game_util_objects import ( + DynamicBoxObject, + Pickup, + StaticTileObject, + TopDownPlayer, +) class CronoPlayer(TopDownPlayer): diff --git a/games/fireplace/scripts/fireplace.py b/games/fireplace/scripts/fireplace.py index 6a2b929..14c0318 100644 --- a/games/fireplace/scripts/fireplace.py +++ b/games/fireplace/scripts/fireplace.py @@ -13,8 +13,8 @@ import os import webbrowser from random import choice, randint -from art import TileIter -from game_object import GameObject +from playscii.art import TileIter +from playscii.game_object import GameObject # # some tuning knobs diff --git a/games/flood/scripts/game.py b/games/flood/scripts/game.py index ac0b809..0f90bea 100644 --- a/games/flood/scripts/game.py +++ b/games/flood/scripts/game.py @@ -1,7 +1,7 @@ from random import choice -from art import TileIter -from game_object import GameObject +from playscii.art import TileIter +from playscii.game_object import GameObject # TODO: # solver? https://stackoverflow.com/questions/1430962/how-to-optimally-solve-the-flood-fill-puzzle diff --git a/games/maze/scripts/hud.py b/games/maze/scripts/hud.py index ffcd0ea..25ced3f 100644 --- a/games/maze/scripts/hud.py +++ b/games/maze/scripts/hud.py @@ -1,4 +1,4 @@ -from game_hud import GameHUD, GameHUDRenderable +from playscii.game_hud import GameHUD, GameHUDRenderable class MazeHUD(GameHUD): diff --git a/games/maze/scripts/objects.py b/games/maze/scripts/objects.py index e7bc301..6b5a69f 100644 --- a/games/maze/scripts/objects.py +++ b/games/maze/scripts/objects.py @@ -1,16 +1,16 @@ import math import random -from art import TileIter -from collision import ( +from playscii.art import TileIter +from playscii.collision import ( CST_CIRCLE, CST_TILE, CT_GENERIC_DYNAMIC, CT_GENERIC_STATIC, CT_NONE, ) -from game_object import GameObject -from game_util_objects import Player, StaticTileBG +from playscii.game_object import GameObject +from playscii.game_util_objects import Player, StaticTileBG class MazeBG(StaticTileBG): diff --git a/games/maze/scripts/player.py b/games/maze/scripts/player.py index 52e4250..62edb6d 100644 --- a/games/maze/scripts/player.py +++ b/games/maze/scripts/player.py @@ -1,7 +1,7 @@ import math -from game_util_objects import BlobShadow, Player from games.maze.scripts.rooms import OutsideRoom +from playscii.game_util_objects import BlobShadow, Player class PlayerBlobShadow(BlobShadow): diff --git a/games/maze/scripts/rooms.py b/games/maze/scripts/rooms.py index d8e5652..fb27c5a 100644 --- a/games/maze/scripts/rooms.py +++ b/games/maze/scripts/rooms.py @@ -1,4 +1,4 @@ -from game_room import GameRoom +from playscii.game_room import GameRoom class MazeRoom(GameRoom): diff --git a/games/platso/scripts/platso.py b/games/platso/scripts/platso.py index ac65016..5df0bbf 100644 --- a/games/platso/scripts/platso.py +++ b/games/platso/scripts/platso.py @@ -1,7 +1,7 @@ import math import random -from game_util_objects import Character, Player, StaticTileBG, WarpTrigger +from playscii.game_util_objects import Character, Player, StaticTileBG, WarpTrigger class PlatformWorld(StaticTileBG): diff --git a/games/shmup/scripts/shmup.py b/games/shmup/scripts/shmup.py index 788cc26..f5ec36a 100644 --- a/games/shmup/scripts/shmup.py +++ b/games/shmup/scripts/shmup.py @@ -1,8 +1,14 @@ import math import random -from game_object import GameObject -from game_util_objects import Character, ObjectSpawner, Player, Projectile, StaticTileBG +from playscii.game_object import GameObject +from playscii.game_util_objects import ( + Character, + ObjectSpawner, + Player, + Projectile, + StaticTileBG, +) class ShmupPlayer(Player): diff --git a/games/wildflowers/scripts/flower.py b/games/wildflowers/scripts/flower.py index 8bd8804..5629292 100644 --- a/games/wildflowers/scripts/flower.py +++ b/games/wildflowers/scripts/flower.py @@ -1,12 +1,12 @@ import random import time -from art import ART_DIR, UV_FLIPX, UV_FLIPY, UV_ROTATE180 -from game_object import GameObject from games.wildflowers.scripts.frond import Frond from games.wildflowers.scripts.petal import Petal from games.wildflowers.scripts.ramps import PALETTE_RAMPS -from renderable import TileRenderable +from playscii.art import ART_DIR, UV_FLIPX, UV_FLIPY, UV_ROTATE180 +from playscii.game_object import GameObject +from playscii.renderable import TileRenderable # TODO: random size range? # (should also change camera zoom, probably frond/petal counts) diff --git a/games/wildflowers/scripts/wildflowers.py b/games/wildflowers/scripts/wildflowers.py index 0543f5f..cc17330 100644 --- a/games/wildflowers/scripts/wildflowers.py +++ b/games/wildflowers/scripts/wildflowers.py @@ -1,5 +1,5 @@ -from game_util_objects import GameObject, WorldGlobalsObject -from image_export import export_still_image +from playscii.game_util_objects import GameObject, WorldGlobalsObject +from playscii.image_export import export_still_image """ overall approach: diff --git a/justfile b/justfile index bf671c1..65c7d62 100644 --- a/justfile +++ b/justfile @@ -11,4 +11,4 @@ test: check: lint run: - uv run python playscii.py + uv run python -m playscii diff --git a/playscii/__init__.py b/playscii/__init__.py new file mode 100644 index 0000000..2ab08ce --- /dev/null +++ b/playscii/__init__.py @@ -0,0 +1 @@ +# playscii package diff --git a/playscii/__main__.py b/playscii/__main__.py new file mode 100644 index 0000000..846229b --- /dev/null +++ b/playscii/__main__.py @@ -0,0 +1,9 @@ +import sys + +from .app import get_app + +app = get_app() +error = app.main_loop() +app.quit() +app.logger.close() +sys.exit(error) diff --git a/playscii.py b/playscii/app.py similarity index 98% rename from playscii.py rename to playscii/app.py index a0d698a..ebd3a1b 100755 --- a/playscii.py +++ b/playscii/app.py @@ -49,7 +49,7 @@ with contextlib.suppress(Exception): pdoc_available = True # submodules - set here so cfg file can modify them all easily -from art import ( +from .art import ( ART_DIR, ART_FILE_EXTENSION, ART_SCRIPT_DIR, @@ -61,25 +61,25 @@ from art import ( Art, ArtFromDisk, ) -from art_export import ArtExporter -from art_import import ArtImporter -from audio import AudioLord -from camera import Camera -from charset import CHARSET_DIR, CharacterSet, CharacterSetLord -from cursor import Cursor -from framebuffer import Framebuffer -from game_world import TOP_GAME_DIR, GameWorld -from grid import ArtGrid -from input_handler import InputLord -from palette import PALETTE_DIR, Palette, PaletteLord -from renderable import OnionTileRenderable, TileRenderable +from .art_export import ArtExporter +from .art_import import ArtImporter +from .audio import AudioLord +from .camera import Camera +from .charset import CHARSET_DIR, CharacterSet, CharacterSetLord +from .cursor import Cursor +from .framebuffer import Framebuffer +from .game_world import TOP_GAME_DIR, GameWorld +from .grid import ArtGrid +from .input_handler import InputLord +from .palette import PALETTE_DIR, Palette, PaletteLord +from .renderable import OnionTileRenderable, TileRenderable # some classes are imported only so the cfg file can modify their defaults -from renderable_line import DebugLineRenderable -from renderable_sprite import SpriteRenderable, UIBGTextureRenderable -from shader import ShaderLord -from ui import OIS_WIDTH, UI -from ui_file_chooser_dialog import THUMBNAIL_CACHE_DIR +from .renderable_line import DebugLineRenderable +from .renderable_sprite import SpriteRenderable, UIBGTextureRenderable +from .shader import ShaderLord +from .ui import OIS_WIDTH, UI +from .ui_file_chooser_dialog import THUMBNAIL_CACHE_DIR APP_NAME = "Playscii" VERSION_FILENAME = "version" @@ -1145,7 +1145,8 @@ class Application: return for module_name in AUTOGEN_DOC_MODULES: # pdoc.pdoc takes module name as string, returns HTML doc string - html = pdoc.pdoc(module_name) + qualified_name = f"playscii.{module_name}" + html = pdoc.pdoc(qualified_name) docfile = open(AUTOGEN_DOCS_PATH + module_name + ".html", "w") docfile.write(html) docfile.close() @@ -1317,11 +1318,3 @@ def get_app(): autoplay_game, ) return app - - -if __name__ == "__main__": - app = get_app() - error = app.main_loop() - app.quit() - app.logger.close() - sys.exit(error) diff --git a/art.py b/playscii/art.py similarity index 99% rename from art.py rename to playscii/art.py index 0e3b70d..e221e76 100644 --- a/art.py +++ b/playscii/art.py @@ -6,8 +6,8 @@ import traceback import numpy as np -from edit_command import CommandStack, EntireArtCommand -from image_export import write_thumbnail +from .edit_command import CommandStack, EntireArtCommand +from .image_export import write_thumbnail # X, Y, Z VERT_LENGTH = 3 diff --git a/art_export.py b/playscii/art_export.py similarity index 98% rename from art_export.py rename to playscii/art_export.py index 4a33cd0..501f63c 100644 --- a/art_export.py +++ b/playscii/art_export.py @@ -1,6 +1,6 @@ import traceback -from art import ART_DIR +from .art import ART_DIR class ArtExporter: diff --git a/art_import.py b/playscii/art_import.py similarity index 96% rename from art_import.py rename to playscii/art_import.py index 135590d..f53299f 100644 --- a/art_import.py +++ b/playscii/art_import.py @@ -1,8 +1,8 @@ import os import traceback -from art import ART_FILE_EXTENSION, DEFAULT_CHARSET, DEFAULT_PALETTE -from ui_file_chooser_dialog import GenericImportChooserDialog +from .art import ART_FILE_EXTENSION, DEFAULT_CHARSET, DEFAULT_PALETTE +from .ui_file_chooser_dialog import GenericImportChooserDialog class ArtImporter: diff --git a/audio.py b/playscii/audio.py similarity index 100% rename from audio.py rename to playscii/audio.py diff --git a/camera.py b/playscii/camera.py similarity index 99% rename from camera.py rename to playscii/camera.py index 62daa3c..cb6c2ec 100644 --- a/camera.py +++ b/playscii/camera.py @@ -2,7 +2,7 @@ import math import numpy as np -import vector +from . import vector def clamp(val, lowest, highest): diff --git a/charset.py b/playscii/charset.py similarity index 99% rename from charset.py rename to playscii/charset.py index 28d838e..e92b0c4 100644 --- a/charset.py +++ b/playscii/charset.py @@ -4,7 +4,7 @@ import time from PIL import Image -from texture import Texture +from .texture import Texture CHARSET_DIR = "charsets/" CHARSET_FILE_EXTENSION = "char" diff --git a/collision.py b/playscii/collision.py similarity index 99% rename from collision.py rename to playscii/collision.py index 8d8abce..dbea7d0 100644 --- a/collision.py +++ b/playscii/collision.py @@ -1,7 +1,7 @@ import math from collections import namedtuple -from renderable_line import ( +from .renderable_line import ( BoxCollisionRenderable, CircleCollisionRenderable, TileBoxCollisionRenderable, diff --git a/cursor.py b/playscii/cursor.py similarity index 99% rename from cursor.py rename to playscii/cursor.py index d71a701..412334e 100644 --- a/cursor.py +++ b/playscii/cursor.py @@ -4,9 +4,9 @@ import math import numpy as np from OpenGL import GL -import vector -from edit_command import EditCommand -from renderable_sprite import UISpriteRenderable +from . import vector +from .edit_command import EditCommand +from .renderable_sprite import UISpriteRenderable """ reference diagram: diff --git a/edit_command.py b/playscii/edit_command.py similarity index 100% rename from edit_command.py rename to playscii/edit_command.py diff --git a/framebuffer.py b/playscii/framebuffer.py similarity index 100% rename from framebuffer.py rename to playscii/framebuffer.py diff --git a/game_hud.py b/playscii/game_hud.py similarity index 94% rename from game_hud.py rename to playscii/game_hud.py index be46534..66eafa2 100644 --- a/game_hud.py +++ b/playscii/game_hud.py @@ -1,5 +1,5 @@ -from art import Art -from renderable import TileRenderable +from .art import Art +from .renderable import TileRenderable class GameHUDArt(Art): diff --git a/game_object.py b/playscii/game_object.py similarity index 99% rename from game_object.py rename to playscii/game_object.py index 38d49f9..26c37de 100644 --- a/game_object.py +++ b/playscii/game_object.py @@ -2,9 +2,9 @@ import math import os import random -import vector -from art import ArtInstance -from collision import ( +from . import vector +from .art import ArtInstance +from .collision import ( CST_AABB, CST_CIRCLE, CST_NONE, @@ -15,8 +15,8 @@ from collision import ( Contact, point_in_box, ) -from renderable import GameObjectRenderable -from renderable_line import BoundsIndicatorRenderable, OriginIndicatorRenderable +from .renderable import GameObjectRenderable +from .renderable_line import BoundsIndicatorRenderable, OriginIndicatorRenderable # facings GOF_LEFT = 0 diff --git a/game_room.py b/playscii/game_room.py similarity index 99% rename from game_room.py rename to playscii/game_room.py index c10751d..7a1128f 100644 --- a/game_room.py +++ b/playscii/game_room.py @@ -1,4 +1,4 @@ -from game_object import GameObject +from .game_object import GameObject class GameRoom: diff --git a/game_util_objects.py b/playscii/game_util_objects.py similarity index 99% rename from game_util_objects.py rename to playscii/game_util_objects.py index 230a4d1..4d65b7a 100644 --- a/game_util_objects.py +++ b/playscii/game_util_objects.py @@ -1,7 +1,7 @@ import os.path import random -from collision import ( +from .collision import ( CST_AABB, CST_CIRCLE, CST_TILE, @@ -10,7 +10,7 @@ from collision import ( CT_NONE, CT_PLAYER, ) -from game_object import FACING_DIRS, GameObject +from .game_object import FACING_DIRS, GameObject class GameObjectAttachment(GameObject): diff --git a/game_world.py b/playscii/game_world.py similarity index 99% rename from game_world.py rename to playscii/game_world.py index 9a7f8ae..8160482 100644 --- a/game_world.py +++ b/playscii/game_world.py @@ -9,17 +9,12 @@ from collections import namedtuple import sdl2 -import collision -import game_hud -import game_object -import game_room -import game_util_objects -import vector -from art import ART_DIR -from camera import Camera -from charset import CHARSET_DIR -from grid import GameGrid -from palette import PALETTE_DIR +from . import collision, game_hud, game_object, game_room, game_util_objects, vector +from .art import ART_DIR +from .camera import Camera +from .charset import CHARSET_DIR +from .grid import GameGrid +from .palette import PALETTE_DIR TOP_GAME_DIR = "games/" DEFAULT_STATE_FILENAME = "start" @@ -29,8 +24,8 @@ SOUNDS_DIR = "sounds/" # generic starter script with a GO and Player subclass STARTER_SCRIPT = """ -from game_object import GameObject -from game_util_objects import Player +from playscii.game_object import GameObject +from playscii.game_util_objects import Player class MyGamePlayer(Player): diff --git a/grid.py b/playscii/grid.py similarity index 98% rename from grid.py rename to playscii/grid.py index 38a8d16..bd2404a 100644 --- a/grid.py +++ b/playscii/grid.py @@ -1,6 +1,6 @@ import numpy as np -from renderable_line import LineRenderable +from .renderable_line import LineRenderable # grid that displays as guide for Cursor diff --git a/image_convert.py b/playscii/image_convert.py similarity index 99% rename from image_convert.py rename to playscii/image_convert.py index bcf3109..1b418ee 100644 --- a/image_convert.py +++ b/playscii/image_convert.py @@ -5,8 +5,8 @@ import time import numpy as np from PIL import Image -from lab_color import lab_color_diff, rgb_to_lab -from renderable_sprite import SpriteRenderable +from .lab_color import lab_color_diff, rgb_to_lab +from .renderable_sprite import SpriteRenderable """ notes / future research diff --git a/image_export.py b/playscii/image_export.py similarity index 99% rename from image_export.py rename to playscii/image_export.py index 45ed419..a740a9d 100644 --- a/image_export.py +++ b/playscii/image_export.py @@ -1,7 +1,7 @@ from OpenGL import GL from PIL import GifImagePlugin, Image, ImageChops -from framebuffer import ExportFramebuffer, ExportFramebufferNoCRT +from .framebuffer import ExportFramebuffer, ExportFramebufferNoCRT def get_frame_image(app, art, frame, allow_crt=True, scale=1, bg_color=(0, 0, 0, 0)): diff --git a/input_handler.py b/playscii/input_handler.py similarity index 99% rename from input_handler.py rename to playscii/input_handler.py index 66554bd..5c333b5 100644 --- a/input_handler.py +++ b/playscii/input_handler.py @@ -5,12 +5,12 @@ from sys import exit import sdl2 -from art import ART_DIR, ART_FILE_EXTENSION -from collision import CT_NONE -from key_shifts import NUMLOCK_OFF_MAP, NUMLOCK_ON_MAP -from renderable import LAYER_VIS_DIM, LAYER_VIS_FULL, LAYER_VIS_NONE -from ui import OIS_FILL, OIS_HEIGHT, OIS_WIDTH, SCALE_INCREMENT -from ui_art_dialog import ( +from .art import ART_DIR, ART_FILE_EXTENSION +from .collision import CT_NONE +from .key_shifts import NUMLOCK_OFF_MAP, NUMLOCK_ON_MAP +from .renderable import LAYER_VIS_DIM, LAYER_VIS_FULL, LAYER_VIS_NONE +from .ui import OIS_FILL, OIS_HEIGHT, OIS_WIDTH, SCALE_INCREMENT +from .ui_art_dialog import ( AddFrameDialog, AddLayerDialog, CloseUnsavedChangesDialog, @@ -32,7 +32,7 @@ from ui_art_dialog import ( SetLayerNameDialog, SetLayerZDialog, ) -from ui_file_chooser_dialog import ( +from .ui_file_chooser_dialog import ( ArtChooserDialog, CharSetChooserDialog, OverlayImageFileChooserDialog, @@ -40,7 +40,7 @@ from ui_file_chooser_dialog import ( PaletteFromImageChooserDialog, RunArtScriptDialog, ) -from ui_game_dialog import ( +from .ui_game_dialog import ( AddRoomDialog, NewGameDirDialog, RenameRoomDialog, @@ -49,7 +49,7 @@ from ui_game_dialog import ( SetRoomCamDialog, SetRoomEdgeWarpsDialog, ) -from ui_list_operations import ( +from .ui_list_operations import ( LO_LOAD_STATE, LO_OPEN_GAME_DIR, LO_SELECT_OBJECTS, diff --git a/key_shifts.py b/playscii/key_shifts.py similarity index 100% rename from key_shifts.py rename to playscii/key_shifts.py diff --git a/lab_color.py b/playscii/lab_color.py similarity index 100% rename from lab_color.py rename to playscii/lab_color.py diff --git a/palette.py b/playscii/palette.py similarity index 99% rename from palette.py rename to playscii/palette.py index c338d50..812f2ef 100644 --- a/palette.py +++ b/playscii/palette.py @@ -5,8 +5,8 @@ from random import randint from PIL import Image -from lab_color import lab_color_diff, rgb_to_lab -from texture import Texture +from .lab_color import lab_color_diff, rgb_to_lab +from .texture import Texture PALETTE_DIR = "palettes/" PALETTE_EXTENSIONS = ["png", "gif", "bmp"] diff --git a/renderable.py b/playscii/renderable.py similarity index 99% rename from renderable.py rename to playscii/renderable.py index 38056f0..4bdb09b 100644 --- a/renderable.py +++ b/playscii/renderable.py @@ -4,8 +4,8 @@ import math import numpy as np from OpenGL import GL -from art import VERT_LENGTH -from palette import MAX_COLORS +from .art import VERT_LENGTH +from .palette import MAX_COLORS # inactive layer alphas LAYER_VIS_FULL = 1 diff --git a/renderable_line.py b/playscii/renderable_line.py similarity index 99% rename from renderable_line.py rename to playscii/renderable_line.py index 5559678..cad9d1f 100644 --- a/renderable_line.py +++ b/playscii/renderable_line.py @@ -6,7 +6,7 @@ import time import numpy as np from OpenGL import GL -from renderable import TileRenderable +from .renderable import TileRenderable class LineRenderable: diff --git a/renderable_sprite.py b/playscii/renderable_sprite.py similarity index 99% rename from renderable_sprite.py rename to playscii/renderable_sprite.py index 0127a84..e2abe16 100644 --- a/renderable_sprite.py +++ b/playscii/renderable_sprite.py @@ -5,7 +5,7 @@ import numpy as np from OpenGL import GL from PIL import Image -from texture import Texture +from .texture import Texture class SpriteRenderable: diff --git a/selection.py b/playscii/selection.py similarity index 98% rename from selection.py rename to playscii/selection.py index 1887639..45c94e3 100644 --- a/selection.py +++ b/playscii/selection.py @@ -2,7 +2,7 @@ import math import numpy as np -from renderable_line import LineRenderable +from .renderable_line import LineRenderable class SelectionRenderable(LineRenderable): diff --git a/shader.py b/playscii/shader.py similarity index 100% rename from shader.py rename to playscii/shader.py diff --git a/texture.py b/playscii/texture.py similarity index 100% rename from texture.py rename to playscii/texture.py diff --git a/ui.py b/playscii/ui.py similarity index 98% rename from ui.py rename to playscii/ui.py index 403aa7d..7bbdbdc 100644 --- a/ui.py +++ b/playscii/ui.py @@ -3,17 +3,17 @@ import sdl2 from OpenGL import GL from PIL import Image -from art import ( +from .art import ( UV_FLIP270, UV_NORMAL, uv_names, ) -from edit_command import EditCommand, EditCommandTile, EntireArtCommand -from texture import Texture -from ui_colors import UIColors -from ui_console import ConsoleUI -from ui_edit_panel import EditListPanel -from ui_element import ( +from .edit_command import EditCommand, EditCommandTile, EntireArtCommand +from .texture import Texture +from .ui_colors import UIColors +from .ui_console import ConsoleUI +from .ui_edit_panel import EditListPanel +from .ui_element import ( DebugTextUI, FPSCounterUI, GameHoverLabel, @@ -22,12 +22,12 @@ from ui_element import ( ToolTip, UIArt, ) -from ui_menu_bar import ArtMenuBar, GameMenuBar -from ui_menu_pulldown import PulldownMenu -from ui_object_panel import EditObjectPanel -from ui_popup import ToolPopup -from ui_status_bar import StatusBarUI -from ui_tool import ( +from .ui_menu_bar import ArtMenuBar, GameMenuBar +from .ui_menu_pulldown import PulldownMenu +from .ui_object_panel import EditObjectPanel +from .ui_popup import ToolPopup +from .ui_status_bar import StatusBarUI +from .ui_tool import ( EraseTool, FillTool, GrabTool, @@ -37,7 +37,7 @@ from ui_tool import ( SelectTool, TextTool, ) -from ui_toolbar import ArtToolBar +from .ui_toolbar import ArtToolBar UI_ASSET_DIR = "ui/" SCALE_INCREMENT = 0.25 diff --git a/ui_art_dialog.py b/playscii/ui_art_dialog.py similarity index 99% rename from ui_art_dialog.py rename to playscii/ui_art_dialog.py index c3c6621..320b417 100644 --- a/ui_art_dialog.py +++ b/playscii/ui_art_dialog.py @@ -1,6 +1,6 @@ import os.path -from art import ( +from .art import ( ART_DIR, ART_FILE_EXTENSION, DEFAULT_FRAME_DELAY, @@ -8,10 +8,10 @@ from art import ( DEFAULT_LAYER_Z_OFFSET, DEFAULT_WIDTH, ) -from palette import PaletteFromFile -from ui_chooser_dialog import ChooserDialog, ChooserItem, ChooserItemButton -from ui_console import SaveCommand -from ui_dialog import Field, UIDialog +from .palette import PaletteFromFile +from .ui_chooser_dialog import ChooserDialog, ChooserItem, ChooserItemButton +from .ui_console import SaveCommand +from .ui_dialog import Field, UIDialog class BaseFileDialog(UIDialog): diff --git a/ui_button.py b/playscii/ui_button.py similarity index 99% rename from ui_button.py rename to playscii/ui_button.py index 05c2bf3..8375275 100644 --- a/ui_button.py +++ b/playscii/ui_button.py @@ -1,4 +1,4 @@ -from ui_colors import UIColors +from .ui_colors import UIColors TEXT_LEFT = 0 TEXT_CENTER = 1 diff --git a/ui_chooser_dialog.py b/playscii/ui_chooser_dialog.py similarity index 99% rename from ui_chooser_dialog.py rename to playscii/ui_chooser_dialog.py index 5aa4081..9774dc4 100644 --- a/ui_chooser_dialog.py +++ b/playscii/ui_chooser_dialog.py @@ -2,11 +2,11 @@ import os import sdl2 -from art import UV_FLIPY, UV_NORMAL -from renderable_sprite import UISpriteRenderable -from ui_button import UIButton -from ui_colors import UIColors -from ui_dialog import Field, UIDialog +from .art import UV_FLIPY, UV_NORMAL +from .renderable_sprite import UISpriteRenderable +from .ui_button import UIButton +from .ui_colors import UIColors +from .ui_dialog import Field, UIDialog class ChooserItemButton(UIButton): diff --git a/ui_colors.py b/playscii/ui_colors.py similarity index 100% rename from ui_colors.py rename to playscii/ui_colors.py diff --git a/ui_console.py b/playscii/ui_console.py similarity index 98% rename from ui_console.py rename to playscii/ui_console.py index 27b92ad..75109d7 100644 --- a/ui_console.py +++ b/playscii/ui_console.py @@ -4,12 +4,12 @@ from math import ceil import sdl2 # imports for console execution namespace - be careful! -from art import UV_FLIPY -from image_convert import ImageConverter -from image_export import export_animation, export_still_image -from key_shifts import SHIFT_MAP -from palette import PaletteFromFile -from ui_element import UIElement +from .art import UV_FLIPY +from .image_convert import ImageConverter +from .image_export import export_animation, export_still_image +from .key_shifts import SHIFT_MAP +from .palette import PaletteFromFile +from .ui_element import UIElement CONSOLE_HISTORY_FILENAME = "console_history" diff --git a/ui_dialog.py b/playscii/ui_dialog.py similarity index 99% rename from ui_dialog.py rename to playscii/ui_dialog.py index 1ef19d4..042ed68 100644 --- a/ui_dialog.py +++ b/playscii/ui_dialog.py @@ -3,10 +3,10 @@ from collections import namedtuple import sdl2 -from key_shifts import SHIFT_MAP -from ui_button import TEXT_CENTER, UIButton -from ui_colors import UIColors -from ui_element import UIElement +from .key_shifts import SHIFT_MAP +from .ui_button import TEXT_CENTER, UIButton +from .ui_colors import UIColors +from .ui_element import UIElement Field = namedtuple( "Field", diff --git a/ui_edit_panel.py b/playscii/ui_edit_panel.py similarity index 98% rename from ui_edit_panel.py rename to playscii/ui_edit_panel.py index 881a86f..c73d087 100644 --- a/ui_edit_panel.py +++ b/playscii/ui_edit_panel.py @@ -1,11 +1,11 @@ import os -from game_world import STATE_FILE_EXTENSION, TOP_GAME_DIR -from ui_button import UIButton -from ui_chooser_dialog import ScrollArrowButton -from ui_colors import UIColors -from ui_element import UIElement -from ui_list_operations import ( +from .game_world import STATE_FILE_EXTENSION, TOP_GAME_DIR +from .ui_button import UIButton +from .ui_chooser_dialog import ScrollArrowButton +from .ui_colors import UIColors +from .ui_element import UIElement +from .ui_list_operations import ( LO_LOAD_STATE, LO_NONE, LO_OPEN_GAME_DIR, diff --git a/ui_element.py b/playscii/ui_element.py similarity index 99% rename from ui_element.py rename to playscii/ui_element.py index d2d4c76..d3bc7b7 100644 --- a/ui_element.py +++ b/playscii/ui_element.py @@ -1,9 +1,9 @@ import time from math import ceil -import vector -from art import Art -from renderable import TileRenderable +from . import vector +from .art import Art +from .renderable import TileRenderable class UIElement: diff --git a/ui_file_chooser_dialog.py b/playscii/ui_file_chooser_dialog.py similarity index 97% rename from ui_file_chooser_dialog.py rename to playscii/ui_file_chooser_dialog.py index 9fe939b..6d20ce5 100644 --- a/ui_file_chooser_dialog.py +++ b/playscii/ui_file_chooser_dialog.py @@ -4,20 +4,20 @@ import time from PIL import Image -from art import ( +from .art import ( ART_DIR, ART_FILE_EXTENSION, ART_SCRIPT_DIR, SCRIPT_FILE_EXTENSION, THUMBNAIL_CACHE_DIR, ) -from charset import CHARSET_DIR, CHARSET_FILE_EXTENSION -from image_export import write_thumbnail -from palette import PALETTE_DIR, PALETTE_EXTENSIONS -from texture import Texture -from ui_art_dialog import ImportOptionsDialog, PaletteFromFileDialog -from ui_chooser_dialog import ChooserDialog, ChooserItem -from ui_console import OpenCommand +from .charset import CHARSET_DIR, CHARSET_FILE_EXTENSION +from .image_export import write_thumbnail +from .palette import PALETTE_DIR, PALETTE_EXTENSIONS +from .texture import Texture +from .ui_art_dialog import ImportOptionsDialog, PaletteFromFileDialog +from .ui_chooser_dialog import ChooserDialog, ChooserItem +from .ui_console import OpenCommand class BaseFileChooserItem(ChooserItem): diff --git a/ui_game_dialog.py b/playscii/ui_game_dialog.py similarity index 97% rename from ui_game_dialog.py rename to playscii/ui_game_dialog.py index 2afd3a3..ca00890 100644 --- a/ui_game_dialog.py +++ b/playscii/ui_game_dialog.py @@ -1,6 +1,6 @@ -from ui_console import LoadGameStateCommand, SaveGameStateCommand -from ui_dialog import Field, UIDialog -from ui_list_operations import ( +from .ui_console import LoadGameStateCommand, SaveGameStateCommand +from .ui_dialog import Field, UIDialog +from .ui_list_operations import ( LO_NONE, ) diff --git a/ui_game_menu_pulldown_item.py b/playscii/ui_game_menu_pulldown_item.py similarity index 99% rename from ui_game_menu_pulldown_item.py rename to playscii/ui_game_menu_pulldown_item.py index f077e07..b133e3a 100644 --- a/ui_game_menu_pulldown_item.py +++ b/playscii/ui_game_menu_pulldown_item.py @@ -1,4 +1,4 @@ -from ui_menu_pulldown_item import ( +from .ui_menu_pulldown_item import ( FileQuitItem, PulldownMenuData, PulldownMenuItem, diff --git a/ui_info_dialog.py b/playscii/ui_info_dialog.py similarity index 98% rename from ui_info_dialog.py rename to playscii/ui_info_dialog.py index 701c0dd..3f3d145 100644 --- a/ui_info_dialog.py +++ b/playscii/ui_info_dialog.py @@ -1,7 +1,7 @@ import sdl2 -from ui_dialog import UIDialog -from ui_element import UIElement +from .ui_dialog import UIDialog +from .ui_element import UIElement class PagedInfoDialog(UIDialog): diff --git a/ui_list_operations.py b/playscii/ui_list_operations.py similarity index 100% rename from ui_list_operations.py rename to playscii/ui_list_operations.py diff --git a/ui_menu_bar.py b/playscii/ui_menu_bar.py similarity index 97% rename from ui_menu_bar.py rename to playscii/ui_menu_bar.py index 3a8140b..e96d01d 100644 --- a/ui_menu_bar.py +++ b/playscii/ui_menu_bar.py @@ -1,10 +1,10 @@ from math import ceil -from renderable_sprite import UISpriteRenderable -from ui_button import TEXT_CENTER, UIButton -from ui_colors import UIColors -from ui_element import UIElement -from ui_game_menu_pulldown_item import ( +from .renderable_sprite import UISpriteRenderable +from .ui_button import TEXT_CENTER, UIButton +from .ui_colors import UIColors +from .ui_element import UIElement +from .ui_game_menu_pulldown_item import ( GameMenuData, GameObjectMenuData, GameRoomMenuData, @@ -12,8 +12,8 @@ from ui_game_menu_pulldown_item import ( GameViewMenuData, GameWorldMenuData, ) -from ui_info_dialog import AboutDialog -from ui_menu_pulldown_item import ( +from .ui_info_dialog import AboutDialog +from .ui_menu_pulldown_item import ( ArtMenuData, CharColorMenuData, EditMenuData, diff --git a/ui_menu_pulldown.py b/playscii/ui_menu_pulldown.py similarity index 97% rename from ui_menu_pulldown.py rename to playscii/ui_menu_pulldown.py index 3f78834..f84b75c 100644 --- a/ui_menu_pulldown.py +++ b/playscii/ui_menu_pulldown.py @@ -1,8 +1,8 @@ -from art import UV_FLIPX, UV_FLIPY, UV_ROTATE180 -from ui_button import UIButton -from ui_colors import UIColors -from ui_element import UIElement -from ui_menu_pulldown_item import PulldownMenuData, PulldownMenuItem, SeparatorItem +from .art import UV_FLIPX, UV_FLIPY, UV_ROTATE180 +from .ui_button import UIButton +from .ui_colors import UIColors +from .ui_element import UIElement +from .ui_menu_pulldown_item import PulldownMenuData, PulldownMenuItem, SeparatorItem class MenuItemButton(UIButton): diff --git a/ui_menu_pulldown_item.py b/playscii/ui_menu_pulldown_item.py similarity index 99% rename from ui_menu_pulldown_item.py rename to playscii/ui_menu_pulldown_item.py index 70098e9..43fde47 100644 --- a/ui_menu_pulldown_item.py +++ b/playscii/ui_menu_pulldown_item.py @@ -1,5 +1,5 @@ -from renderable import LAYER_VIS_DIM, LAYER_VIS_FULL, LAYER_VIS_NONE -from ui_tool import ( +from .renderable import LAYER_VIS_DIM, LAYER_VIS_FULL, LAYER_VIS_NONE +from .ui_tool import ( EraseTool, FillTool, GrabTool, diff --git a/ui_object_panel.py b/playscii/ui_object_panel.py similarity index 98% rename from ui_object_panel.py rename to playscii/ui_object_panel.py index 3769c3b..948cc63 100644 --- a/ui_object_panel.py +++ b/playscii/ui_object_panel.py @@ -1,9 +1,9 @@ import os -from ui_button import TEXT_RIGHT, UIButton -from ui_colors import UIColors -from ui_dialog import Field, UIDialog -from ui_edit_panel import GamePanel +from .ui_button import TEXT_RIGHT, UIButton +from .ui_colors import UIColors +from .ui_dialog import Field, UIDialog +from .ui_edit_panel import GamePanel class ResetObjectButton(UIButton): diff --git a/ui_popup.py b/playscii/ui_popup.py similarity index 98% rename from ui_popup.py rename to playscii/ui_popup.py index 33b74c2..d267d1c 100644 --- a/ui_popup.py +++ b/playscii/ui_popup.py @@ -1,11 +1,11 @@ -from art import UV_FLIPX, UV_FLIPY, UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270 -from renderable_line import SwatchSelectionBoxRenderable -from ui_button import TEXT_CENTER, UIButton -from ui_colors import UIColors -from ui_element import UIArt, UIElement -from ui_file_chooser_dialog import CharSetChooserDialog, PaletteChooserDialog -from ui_swatch import MIN_CHARSET_WIDTH, CharacterSetSwatch, PaletteSwatch -from ui_tool import FILL_BOUND_BG_COLOR, FILL_BOUND_CHAR, FILL_BOUND_FG_COLOR, FillTool +from .art import UV_FLIPX, UV_FLIPY, UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270 +from .renderable_line import SwatchSelectionBoxRenderable +from .ui_button import TEXT_CENTER, UIButton +from .ui_colors import UIColors +from .ui_element import UIArt, UIElement +from .ui_file_chooser_dialog import CharSetChooserDialog, PaletteChooserDialog +from .ui_swatch import MIN_CHARSET_WIDTH, CharacterSetSwatch, PaletteSwatch +from .ui_tool import FILL_BOUND_BG_COLOR, FILL_BOUND_CHAR, FILL_BOUND_FG_COLOR, FillTool TOOL_PANE_WIDTH = 10 diff --git a/ui_status_bar.py b/playscii/ui_status_bar.py similarity index 98% rename from ui_status_bar.py rename to playscii/ui_status_bar.py index 8b92d6f..9088917 100644 --- a/ui_status_bar.py +++ b/playscii/ui_status_bar.py @@ -2,11 +2,11 @@ import os.path import time from math import ceil -from art import uv_names -from renderable_line import UIRenderableX -from ui_button import TEXT_CENTER, TEXT_RIGHT, UIButton -from ui_colors import UIColors -from ui_element import UIArt, UIElement, UIRenderable +from .art import uv_names +from .renderable_line import UIRenderableX +from .ui_button import TEXT_CENTER, TEXT_RIGHT, UIButton +from .ui_colors import UIColors +from .ui_element import UIArt, UIElement, UIRenderable # buttons to toggle "affects" status / cycle through choices, respectively diff --git a/ui_swatch.py b/playscii/ui_swatch.py similarity index 99% rename from ui_swatch.py rename to playscii/ui_swatch.py index 58bcc30..8388b75 100644 --- a/ui_swatch.py +++ b/playscii/ui_swatch.py @@ -3,8 +3,8 @@ import time import numpy as np -from renderable_line import LineRenderable, SwatchSelectionBoxRenderable, UIRenderableX -from ui_element import UIArt, UIElement, UIRenderable +from .renderable_line import LineRenderable, SwatchSelectionBoxRenderable, UIRenderableX +from .ui_element import UIArt, UIElement, UIRenderable # min width for charset; if charset is tiny adjust to this MIN_CHARSET_WIDTH = 16 diff --git a/ui_tool.py b/playscii/ui_tool.py similarity index 99% rename from ui_tool.py rename to playscii/ui_tool.py index 52429b9..ece4454 100644 --- a/ui_tool.py +++ b/playscii/ui_tool.py @@ -1,7 +1,7 @@ import sdl2 from PIL import Image -from art import ( +from .art import ( UV_FLIP90, UV_FLIP270, UV_FLIPX, @@ -11,10 +11,10 @@ from art import ( UV_ROTATE180, UV_ROTATE270, ) -from edit_command import EditCommandTile -from key_shifts import SHIFT_MAP -from selection import SelectionRenderable -from texture import Texture +from .edit_command import EditCommandTile +from .key_shifts import SHIFT_MAP +from .selection import SelectionRenderable +from .texture import Texture class UITool: diff --git a/ui_toolbar.py b/playscii/ui_toolbar.py similarity index 96% rename from ui_toolbar.py rename to playscii/ui_toolbar.py index aacb2b2..3827492 100644 --- a/ui_toolbar.py +++ b/playscii/ui_toolbar.py @@ -1,7 +1,7 @@ -from renderable_line import ToolSelectionBoxRenderable -from renderable_sprite import UISpriteRenderable -from ui_button import UIButton -from ui_element import UIElement +from .renderable_line import ToolSelectionBoxRenderable +from .renderable_sprite import UISpriteRenderable +from .ui_button import UIButton +from .ui_element import UIElement class ToolBar(UIElement): diff --git a/vector.py b/playscii/vector.py similarity index 100% rename from vector.py rename to playscii/vector.py diff --git a/pyproject.toml b/pyproject.toml index c1cfe11..03c3dea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ requires = ["hatchling"] build-backend = "hatchling.build" [tool.ruff] -src = ["."] +src = ["playscii"] line-length = 88 [tool.ruff.lint]