closes#60, closes#5, closes#68
The major functionality added here was proper use of types in the module, by importing after finalization.
commit 5009fa0fb9
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Apr 7 22:44:15 2024 -0400
PyFont - use the new standard method for instancing
commit a19781b56a
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Apr 7 15:21:17 2024 -0400
Many hours of pain & research behind this small commit. Safe object building by not messing with types before interpreter is fully initialized
commit 159658521c
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 31 21:41:45 2024 -0400
Font mostly working, just a few weird bugs with the types of the default items added to the module
closes#13
Deferring class standardization for the UI.h overhaul.
commit 5edebdd643
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 31 14:21:07 2024 -0400
PyVector init should be pretty reliable now
commit c13e185289
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 31 13:51:29 2024 -0400
PyColor fix - Init corrections
commit 8871f6be6e
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 30 22:51:55 2024 -0400
Parse arguments: no args & Vector object args work, tuples and bare numerics still do not
commit 1c12e8719c
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 30 22:32:28 2024 -0400
Not bad for a quick first salvo, but I cannot figure out why init isn't cooperating.
closes#11
Check the abandoned feature branch for PyLinkedColor, a time-expensive but now abandoned feature to link a color value to a UIDrawable.
There are some TODOs left in the PyColor class, but that can go under cleanup. I'm way over time on this, so I'm taking a small victory :)
commit 572aa52605
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 30 21:18:26 2024 -0400
More color table updates
commit 01706bd59d
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 30 21:13:31 2024 -0400
Color wrapup... Cutting PyLinkedColor to simplify my cursedly mortal, finite existence
commit 3991ac13d6
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 28 23:50:50 2024 -0400
Still having segfaults with LinkedColor and captions (specifically outline color, but that might not be the actual cause). PyColor shaping back up in simplified form.
commit 06e24a1b27
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 28 20:53:49 2024 -0400
LinkedColor now reflecting changes to the linked color value. Needs set method + RGBA / color properties
commit 41509dfe96
Author: John McCardle <mccardle.john@gmail.com>
Date: Wed Mar 27 21:10:03 2024 -0400
Addressing issues with PyColor by splitting behavior off into PyLinkedColor
commit 13a4ddf41b
Author: John McCardle <mccardle.john@gmail.com>
Date: Tue Mar 26 23:02:00 2024 -0400
Build runs again. PyColor objects are being instantiated, with bugs and no test of color changing
commit 1601fc7fab
Author: John McCardle <mccardle.john@gmail.com>
Date: Mon Mar 25 20:48:08 2024 -0400
Still doesn't compile, but now the issue is in UI.h overcoupling. Progress!
commit 13672c8fdb
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 24 21:19:37 2024 -0400
Dabbling around this morning; still not building
commit 79090b553f
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 24 08:36:06 2024 -0400
Unsaved changes from last night
commit 2cac6f03c6
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 23 23:07:10 2024 -0400
untested PyColor base implementation
commit 3728e5fcc8
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 23 23:06:36 2024 -0400
Color naming prototype
closes#18
commit b114ec3085
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 21 22:22:35 2024 -0400
cleaning up for merge
commit d7228172c4
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 21 21:39:15 2024 -0400
Messy, but monumental: PyTexture::pyObject works
this also coincidentally fixes a weird bug I encountered while
(mis?)using tp_alloc: by using PyType_GenericAlloc, I avoid the segfault
that tp_alloc sometimes causes. See the horrible UIDrawable retrieval
macro that I use in UI.h for a workaround that can probably be replaced
with this technique
commit 2cf8f94310
Author: John McCardle <mccardle.john@gmail.com>
Date: Wed Mar 20 21:16:52 2024 -0400
Radical new example pattern for exposing a C++ class to Python
commit 84a8886da2
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 17 16:29:33 2024 -0400
Fixed render issue with UIGrid / PyTexture: wasn't positioning or scaling properly after fetching sprite
commit 20f80c4114
Author: John McCardle <mccardle.john@gmail.com>
Date: Sun Mar 17 16:23:52 2024 -0400
Fixed sprite indexing error in PyTexture; needs non-square sprite tests, but feeling confident!
commit afd4ff1925
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 16 21:53:24 2024 -0400
good progress, we're building again. Issue with Grid (tile sprite) textures and I think the sprite indexes are being calculated wrong (x and y transposed?)
commit bfd33102d1
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 16 14:52:35 2024 -0400
Squashed basically all the compile bugs in UISprite, but UIEntity and UIGrid use textures as well, so they need to be fixed too before the project will build again
commit 47d0e34a17
Author: John McCardle <mccardle.john@gmail.com>
Date: Sat Mar 16 11:31:39 2024 -0400
Initial PyTexture class
no testing done.
should enable rectangular (non-square) textures
"sprite" method; let's just overwrite sprites with texture coords
Hoping to replace awful code like:
`self->data->sprite.sprite.setTextureRect(self->data->sprite.itex->spriteCoordinates(val));`
with something like:
`self->data->sprite = self->data->texture->sprite(val);`
closes#4
commit 8f060dc87b
Author: John McCardle <mccardle.john@gmail.com>
Date: Fri Mar 15 22:20:03 2024 -0400
Removing std::cout debugging statements
commit c9d5251c71
Author: John McCardle <mccardle.john@gmail.com>
Date: Fri Mar 15 20:00:57 2024 -0400
In-place map modification worked
commit 0a8f67e391
Author: John McCardle <mccardle.john@gmail.com>
Date: Thu Mar 14 23:13:13 2024 -0400
Stress test is failing: By removing a timer to a function (from inside that function?) I can immediately cause a segfault.
commit 05d9f6a882
Author: John McCardle <mccardle.john@gmail.com>
Date: Tue Mar 12 22:27:12 2024 -0400
wow, good test of Key and Click Callable classes. Cleanup, squash, and merge after I give it a lookover in daylight, though.
commit 972768eb26
Author: John McCardle <mccardle.john@gmail.com>
Date: Tue Mar 12 21:02:48 2024 -0400
inital PyCallable work; isolate very well behaved usage of PyObject references behind RAII
Massive new set of behaviors:
* Move, resize*, zoom, and pan mcrfpy.Grid instances from Python. Note:
there's a rendering error with resizing, which will have to wait for
after 7DRL.
* Add, remove, and create mcrfpy.Entity instances from Python. The
fields can be edited to change position and sprite. They can be removed
from a grid and/or added to another. the Entity class is closely related
to the EntityCollection class, the Python interface to UIGrid's
std::vector of UIEntities.
* mcrfpy.GridPoint and mcrfyp.GridPointState objects. The GridPoint
class allows access to the "physical" parts of a grid. The
GridPointState class allows access to an entity's knowledge of it. Grids
and Entities have an "at" method that takes a tuple (x,y) and returns
one of these objects.
__repr__ and many other nice things are notably absent - many TODOs were
added to the codebase today. They can get picked up after 7DRL.
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