Commit graph

74 commits

Author SHA1 Message Date
372cd5f295 Generate a .pylintrc and tweak it slightly for this project 2022-05-07 11:20:57 -07:00
3510bab79a Document return value of MapGenerator.generate 2022-05-07 11:20:41 -07:00
4002b64640 Attack!!!
Refactor MovePlayerAction into a few different Action subclasses. Move direction
to a parent MoveAction, and create three new subclasses of MoveAction:

    - BumpAction: perform the test that an action can be performed in the given direction
    - WalkAction, take a step in the given direction
    - MeleeAction, attack another Entity in the given direction

Add an ActionResult class that communicates the result of performing an Action.

    - ActionResult.succeeded indicates whether the action succeeded.
    - ActionResult.done indicates if the action is fully complete or requires followup.
    - ActionResult.alternate specifies the follow-up action to perform.

Convert all the key handling actions to BumpActions.

In the Engine's event handler method, loop until an action is completed,
performing specified alternate actions until the result object indicates the
action is done.
2022-05-07 11:16:17 -07:00
57bbb2c3fc Some more fixes from the linter 2022-05-07 09:57:39 -07:00
7720bc525a Address some linter issues; add doc strings
- Clean up some import ordering
- Write some Numpy style doc strings for classes and functions
2022-05-07 08:55:10 -07:00
f3d5e273db Remove this unimplemented method 2022-05-07 08:54:46 -07:00
16b4b64099 Clean up the logging; use % formats instead of f-strings 2022-05-07 08:53:58 -07:00
a1c1609908 Enable linting 2022-05-07 08:51:55 -07:00
ded318e659 Reorganize the package
- Create an __init__.py, which makes this directory a Python package.
- Replace the contents of __main__.py with the contents of main.py
2022-05-07 08:51:44 -07:00
d99c97408c Generate orcs and trolls randomly throughout the dungeon 2022-05-06 21:16:39 -07:00
08b1841bdf Add monsters module and define Species, Monster, Orc, and Troll 2022-05-06 21:16:19 -07:00
1e69667ba8 Create a Hero class for the character the player moves; stop using tcod.Color for foreground and background; use tuples instead 2022-05-06 21:16:00 -07:00
5f6247ef13 I decided: every dungeon map has rooms 2022-05-06 21:14:42 -07:00
c2c67ae9ef Move logging hero movement into the if block where it actually does the move 2022-05-06 21:13:37 -07:00
00462f6005 Change Engine.Configuration to a clas and convert moved_entities to a set 2022-05-06 14:34:26 -07:00
6a431ee574 Tweaking the room size ratios 2022-05-05 08:55:49 -07:00
1d4882a8ac Do not allow entities to move into squares previously moved entities have moved to 2022-05-05 08:45:30 -07:00
a43e403e9c Let NPCs randomly walk 2022-05-05 08:38:06 -07:00
1cd45d366b Add Direction.all() that returns an iterator that produces all the Direction values 2022-05-05 08:37:48 -07:00
1247617b87 Add diagonal movement 2022-05-04 09:25:35 -07:00
084385f8f2 Add a map shroud over tiles and compute field of view based on player position!!! 2022-05-04 09:22:40 -07:00
25aa5506c8 Convert the generator.Configuration class to a dataclass 2022-05-04 09:22:06 -07:00
0b577ad5ea Merge branch 'diggin-tunnels' 2022-05-03 19:05:57 -07:00
39832c7f74 A little script to visualize how BSP works; emits a DOT graph 2022-05-03 19:05:53 -07:00
c638ee506a Carve walls and floors out of Empty tiles
Walls fill all the Empty tiles around Floors, including rooms and hallways.
2022-05-03 19:04:59 -07:00
7c5c3c57ec Fill the map with Empty tiles instead of Wall tiles 2022-05-03 19:03:31 -07:00
fcfab9fc1b Add Rect.inset_rect 2022-05-03 19:02:39 -07:00
09bdf8a7a6 Place NPCs randomly in a generated room 2022-05-03 19:00:45 -07:00
58e732c923 Clean up and document room rect generation 2022-05-03 18:25:30 -07:00
7ba33cc6eb Fix this type annotation 2022-05-03 18:24:14 -07:00
50d6550e17 Parameterize maximum room size; make minimum_room_size the actual floor size, not counting walls 2022-05-03 18:23:48 -07:00
e1044f3a73 Move MovePlayerAction.Direction to geometry.Direction 2022-05-03 18:21:24 -07:00
8aa7cd30ae Merge remote-tracking branch 'origin/main' 2022-05-03 07:17:39 -07:00
558bd86b16
Initial commit 2022-05-03 07:15:41 -07:00
010c67fd78 Attempt #1 to dig tunnels -- it does not work 2022-05-01 18:03:47 -07:00
3e87ef7279 Implement __iter__ on the geometry types so you can tuple(thing) 2022-05-01 17:43:13 -07:00
33c147d670 Default --debug on 2022-05-01 17:41:42 -07:00
f89ff42f02 Clean up logging, and refine some bits of the map generator algorithm 2022-05-01 17:41:07 -07:00
ed312e985d Add a __repr__ for map.RectangularRoom 2022-05-01 17:34:57 -07:00
8b9897f0cc Convert the geometry types to frozen dataclasses 2022-05-01 17:32:48 -07:00
a072ad507e Move map generation into a new MapGenerator subclass; add RoomsAndCorridorsGenerator to uses BSP 2022-05-01 10:46:30 -07:00
a54828c7fb Fix up all the runtime errors caused by the previous refactoring 2022-05-01 09:51:22 -07:00
f1b95a697e Remove the commented out RegenerateRoomsAction handling
It still is not implemented but RegenerateRoomsAction will handle it when I
bring it back.
2022-05-01 09:29:58 -07:00
5ce26e310b Move the action perform logic to Action.perform() on each Action subclass
Rename Object to Entity to avoid name clashes with Python.object
2022-05-01 09:29:30 -07:00
cde6ea2065 Make the MovePlayerAction.Direction values Vectors 2022-05-01 09:27:59 -07:00
cf64d517de Add some error logging to main and a --debug argument 2022-05-01 09:26:57 -07:00
a422a74a17 Refine the geometry classes; add __add__ method for Points and Vectors 2022-05-01 09:26:20 -07:00
7f225e9e01 Start the player in the middle of the first room 2022-05-01 00:09:45 -07:00
5302b5cf5e Redo tiles to use numpy datatypes
This gives us some nice optimizations when splatting the map to the console.
2022-05-01 00:09:12 -07:00
e7a5af59ed Add mid coordinate and midpoint properties to Rect 2022-05-01 00:08:10 -07:00