Commit Graph

86 Commits

Author SHA1 Message Date
John McCardle 3325e4895e Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup
directories needed:
* build - for cmake output
* deps - stuff needed to compile McRogueface (headers)
	libtcod -> ../modules/libtcod/src/libtcod
	sfml -> ../modules/SFML/include/SFML
	python -> ../modules/cpython/Include
* lib - stuff needed to link McRogueFace (shared objects); also required at runtime
	libtcod -> `../modules/libtcod/buildsys/autotools/.libs/libtcod.so.1.0.24`
	sfml -> `../modules/SFML/build/lib/*`
	python -> `../modules/cpython/libpython3.12.so`; standard lib at ../modules/cpython/build/lib.linux-x86_64-3.12 & ../modules/cpython/Lib

You can get dependencies by:
 - Build from source (i.e. all submodules)
 - Go download them from each project's website
 - install packages from your distro and symlink them to deps/lib directories
2024-02-24 20:40:40 -05:00
John McCardle 705943abba initial cmake config (builds, python standard library not available) 2024-02-23 21:55:16 -05:00
John McCardle 47b485ca7d Submodules: Add dependencies
This is the prerequisite to:
* complete from-source build
* removing compilation libraries from the git repo
* rebasing the project for "alpha 0.1" release
2024-02-23 08:37:36 -05:00
John McCardle f2eaee95ec (minor) sprite object enabled in collection 2023-10-20 22:23:20 -04:00
John McCardle 494658e5c3 Sprite fixes. Changing sprite_number now changes the visible texture. Repr fixed. 2023-09-15 22:09:29 -04:00
John McCardle 6e820af8c4 mcrfpy.Sprite / PyUISpriteType compiles; too excited to fully test it (todo: modify the macro to get instances into and out of collections) 2023-09-13 23:23:08 -04:00
John McCardle cf485ef327 Refactoring UISprite to play well with Python API and match existing code styles. Default constructor will have to go, which complicates the Python class slightly for mcrfpy.Sprite 2023-09-11 20:30:10 -04:00
John McCardle 3a1432212f UICollection.remove 2023-09-09 10:14:11 -04:00
John McCardle 38b6a3cade UICollection.append, tests are good for Caption and Frame objects created by Python to be drawn by the UITestScene 2023-09-09 08:49:02 -04:00
John McCardle 1bbb0aa5b8 Caption object seems to be instantiable with a Font object now. Can't test actual rendering without a way to add objects to a collection. 2023-09-07 23:10:21 -04:00
John McCardle bec2b3294d Added PyFont/mcrfpy.Font object 2023-09-07 22:25:19 -04:00
John McCardle 9486104377 Converted py_instance to a macro (don't ask me why it doesn't work as a function) and first pass at UICaption functionality. UISprite C++ tests. 2023-09-03 20:40:52 -04:00
John McCardle 5267287b05 checkpoint: found that py_instance causes segfaults when called separately, but the same exact code inside of the _getitem method works fine. I can't explain that. I guess I'll turn it into a macro so the actions are inline and I can move on to finishing the other UI classes. 2023-09-03 12:46:23 -04:00
John McCardle b8af8bc870 UIDrawable to Python object (untested, but compiling) 2023-09-02 20:02:07 -04:00
John McCardle 0ef0a5d506 Switched UIFrame and Scene to store their UIDrawables in shared_ptr to vector, instead of directly to vector. Every object that can be exposed to Python has to be safely shareable so it doesn't become a segfault, and that includes the UIDrawable collections AND the UIDrawable members. So we get the terrifying type for collections of child elements: 'std::shared_ptr<std::vector<std::shared_ptr<UIDrawable>>>'. May I be forgiven for my sins 2023-09-02 14:00:48 -04:00
John McCardle a41d3d4a54 Iterator class fleshed out. Several implementations left to do, but it compiles, and I think every function definition for the PyUICollectionType and PyUICollectionIterType is now in place 2023-09-02 09:22:34 -04:00
John McCardle 6d4bc2989c UICollection work: fixed compilation, still quite a bit of stubs 2023-09-02 04:40:05 -04:00
John McCardle d5a7cbca85 In progress: UICollection. mcrfpydef::PyUICollection_sqmethods needs to be made static or moved somewhere it won't be multiply defined 2023-09-01 23:31:31 -04:00
John McCardle 5d8510747c Color and Frame classes pretty well integrated from the Python perspective now 2023-09-01 18:28:59 -04:00
John McCardle 06052c81c9 PyUIFrame looking not half bad. There seems to be a glitch with the color values. 2023-09-01 12:14:24 -04:00
John McCardle 6fe7b842ef Successful use of a copy-modify-paste template of Python type (UIFrame -> PyUIFrameObject) 2023-08-31 22:32:58 -04:00
John McCardle 50d926fe37 Aug 30/31 updates. Tinkering with shared_ptr. Working towards exposing UI objects to Python UI. Color object updated for shared_ptr structure that will be repeated for the rest of the UI objects. Still a lot of open questions, but committing here to get back on track after a few hours wasted trying to solve this problem too generally via templates. 2023-08-31 13:51:56 -04:00
John McCardle 795701c986 Cleanup: less curly braces in destructor 2023-08-30 14:50:27 -04:00
John McCardle 884a49a63a Switching UIFrame to sf::Color* for outline and fill members. Haven't tested with Python integration, but I wrote the methods to take a crack at it 2023-08-30 14:38:49 -04:00
John McCardle c4d5a497d4 Color container type for Python working. I still need to implement UIFrame using it. 2023-08-28 05:44:26 -04:00
John McCardle ba97aebf3e Showing FPS on title bar (GameEngine) 2023-08-27 19:58:15 -04:00
John McCardle ac0ec4bb71 In-work: Python segfaults when adding new objects to module 2023-08-25 21:57:42 -04:00
John McCardle a455c44b34 Debugging & build with debug symbols scripts 2023-08-25 21:56:27 -04:00
John McCardle 96e78e6150 Prepwork: marked the spot for adding more types to the Python module 2023-08-21 20:27:47 -04:00
John McCardle 0dd86056a8 Cleanup: remove python embedding test file 2023-08-12 20:06:16 -04:00
John McCardle 26cb410b8e Cleanup: Remove UITestScene. I believe test functionality will be better expressed as Python scripts 2023-08-12 19:48:29 -04:00
John McCardle d09fc87499 Cleanup: remove Item class/component. This may be added back later, but it's not in the EngJam 2023 plan and is being removed as a noisy, underdeveloped concept. 2023-08-12 15:37:46 -04:00
John McCardle b022dfa6e8 Cleanup: remove VectorShape class (it'll return, someday...) 2023-08-12 15:07:48 -04:00
John McCardle 232ce34d54 Cleanup: remove references to DrawSprite API method (debug method to draw on SFML window for a single frame) 2023-08-12 10:57:53 -04:00
John McCardle c1c17bab69 Basic, buggy movement purely from Python API 2023-07-17 22:08:06 -04:00
John McCardle e85861cbb2 I've worked keybinding functionality into Python, but there are some workarounds and notes (See the Jankfile) 2023-07-17 16:15:35 -04:00
John McCardle d6446e18ea Tinkering with input
I want to move keyboard input defs to the Python API. I laid the groundwork for it today.

From the JANKFILE:

- working on API endpoint `_registerInputAction`.

it will add "_py" as a suffix to the action string and register it along with other scene actions.

- Adding public Scene methods. These are on the base class with default of return `false`.

`bool Scene::registerActionInjected(int code, std::string name)` and `unregisterActionInjected`

the PythonScene (and other scenes that support injected user input) can override this method, check existing registrations, and return `true` when succeeding.

Also, upgraded to C++20 (g++ `c++2a`), mostly because I want to use map::contains.
2023-07-13 23:01:09 -04:00
John McCardle d3826804a0 (Minor) It's CO*M*P4300 2023-07-08 20:00:30 -04:00
John McCardle b4c49c4619 Giving myself credit for LGJ2023 tech demo features 2023-07-08 19:47:06 -04:00
John McCardle 76ac236be3 Linux Game Jam 2023 mini-contribution 2023-07-08 19:42:47 -04:00
John McCardle 97793fb26b Clean up console output for 7DRL submission 2023-03-12 00:32:27 -05:00
John McCardle b3134f0890 Basic hallways 2023-03-11 23:34:34 -05:00
John McCardle dfcc39dd43 toggleable camera following that allows for pan action 2023-03-11 21:54:54 -05:00
John McCardle 29ac89b489 bugfix: use float instead of int for modMenu/listMenus API calls, as this was corrupting the coordinates of sprites on uimenus 2023-03-11 17:15:06 -05:00
John McCardle b4daac6e0c Camera following functionality, first pass 2023-03-11 16:11:10 -05:00
John McCardle 3fd60d76ea Making empty space transparent to fix FOV, more generous FOV algorithm 2023-03-10 21:42:50 -05:00
John McCardle 99fa92f8ba Field of view, discovered tiles, opaque fog of war rendering 2023-03-10 19:39:44 -05:00
John McCardle 9441f357df 'entity only' grid update, saves lots of throughput on larger grids 2023-03-10 12:50:49 -05:00
John McCardle 34feb226e4 collision 2023-03-10 11:35:46 -05:00
John McCardle 486a1cd17c Keyboard control 2023-03-10 09:21:56 -05:00