Commit Graph

34 Commits

Author SHA1 Message Date
John McCardle b114ec3085 cleaning up for merge 2024-03-21 22:22:35 -04:00
John McCardle d7228172c4 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
2024-03-21 21:39:15 -04:00
John McCardle 2cf8f94310 Radical new example pattern for exposing a C++ class to Python 2024-03-20 21:16:52 -04:00
John McCardle 84a8886da2 Fixed render issue with UIGrid / PyTexture: wasn't positioning or scaling properly after fetching sprite 2024-03-17 16:29:33 -04:00
John McCardle 20f80c4114 Fixed sprite indexing error in PyTexture; needs non-square sprite tests, but feeling confident! 2024-03-17 16:23:52 -04:00
John McCardle afd4ff1925 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?) 2024-03-16 21:53:24 -04:00
John McCardle bfd33102d1 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 2024-03-16 14:52:35 -04:00
John McCardle 47d0e34a17 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);`
2024-03-16 11:31:39 -04:00
John McCardle cdaf309272 Squashed commit of the following: [raii_pyobjects]
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
2024-03-15 22:20:37 -04:00
John McCardle 2c3c1449ee chore: changing comments to reflect TODOs conversion to issues 2024-03-12 21:03:39 -04:00
John McCardle 8739da8463 Easy cleanup: delete files from the old Entity & UI system that were replaced in EngJam 2023 & 7DRL 2024 2024-03-09 08:59:39 -05:00
John McCardle 45f07b7226 Crypt of Sokoban: incomplete 7DRL game and engine stress-test 2024-03-08 22:26:40 -05:00
John McCardle 9eb9562b9f default debug action fixes: UITestScene now uses the same grave hotkey to start REPL 2024-03-08 22:25:48 -05:00
John McCardle 5ada446360 Window scaling functionality 2024-03-08 16:55:58 -05:00
John McCardle 8e1552eec5 Bounds checking on Grid point access, and correct the formula. Caused segfault on non-square grid size (and was transposing coordinates!) 2024-03-08 14:08:49 -05:00
John McCardle aa7f2ba605 Segfault fixes. Switching scenes broke some assumptions. All PyObject calls from userspace now handle (discard) exceptions and return values. 2024-03-08 12:09:09 -05:00
John McCardle e8240cb380 Exit functionality via game engine, because sys.exit was making a mess 2024-03-08 10:17:26 -05:00
John McCardle db548c9183 Scene switching safety 2024-03-07 13:30:08 -05:00
John McCardle 4b31864b2f Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
John McCardle 343669df1e nice-ifying UIFrame __init__ and making debug a bit easier 2024-03-07 11:19:46 -05:00
John McCardle d417bdc8a3 Whoops, some issues with deleting timers. 2024-03-07 09:49:24 -05:00
John McCardle ccd79fc551 quick & dirty timer functionality 2024-03-07 08:59:26 -05:00
John McCardle 9d728ee902 Keyboard initial functionality commit 2024-03-07 08:13:37 -05:00
John McCardle 9587218b28 Mouse input prototype 2024-03-06 21:12:26 -05:00
John McCardle 6a1edfe182 remove more cruft files 2024-03-06 21:10:31 -05:00
John McCardle 145012074c Remove cruft from API. New style objects are now the only objects 2024-03-06 11:04:50 -05:00
John McCardle 30cfa5ca71 Scene switching API 2024-03-06 10:50:19 -05:00
John McCardle 6de3f0e8cf 7DRL 2024 Day 4 updates - UIGrid / mcrfpy.Grid
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.
2024-03-05 22:37:50 -05:00
John McCardle 08772111de some fixes; instantiating PyUIGrid / mcrfpy.Grid safely now. Many issues remain 2024-03-05 07:42:49 -05:00
John McCardle 4dd4f74120 WIP / UIGrid and related elements added in one giant leap. see TODO / BUGFIX in several places for incomplete functionality. 2024-03-04 23:12:08 -05:00
John McCardle 197211fa76 pre-7DRL 2024 commit: got UIGrid to render. Needs entities, sprite tests, and python API 2024-03-02 00:42:21 -05:00
John McCardle 198ed337e3 Windows build 2024-02-25 15:38:38 -05:00
John McCardle 07b597d6f2 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 22:48:39 -05:00
John McCardle d0d2eae762 Initial Commit / Linux Combined Proof of Concept example 2023-02-23 19:37:13 -05:00