-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Typechecker; typecheck data entries #357
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Ruin0x11
added
enhancement
New feature or request
data
Concerns adding new content
refactoring
This requires refactoring existing code
labels
Sep 11, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
data
Concerns adding new content
enhancement
New feature or request
refactoring
This requires refactoring existing code
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose of this PR
Related issues
#61. Closes #110. Closes #305.
Description
_ordering
field, and makesdata[...]:iter()
sorted by default.feat.params
instead of placing them directly on the object.Eventually I also want:
But this will do for now. I will have to start thinking about releasing something soon, or it's never going to get done...
Related to that thought, after this feature is implemented these are the things that I still want to implement before releasing the first alpha.
ILocation
/pool
and map object references, implementation ofISerializable
using GUIDs for class type identification, fast failure if attempting to serialize a non-serializable class instance, fixing the known entity reference bugs (Serializing class instances can mutate their state in damaging ways #320, Rewrite the entire serialization code to be better suited to OpenNefia's design #135, Character references are unintentionally saved onto activity instances #348).IItemPotionAspect
don't work #338, Bugs with updating the screen in the middle of scrolling #355).That's it. After all of that is done, I will resign myself to shipping the first official alpha release, knowing full well that it will still be plainly broken and unfinished in various ways (no riding, for example).
The unimplemented features and refactorings for things like #179 at this point will have to follow after the first release happens. I don't think the code is in such a bad state that it would merit throwing away large parts of it, only improving on a couple of bad design decisions I made before aspects and
base.data_ext
were added and moving things around so they're better organized. A lot of the confusion with things like event parameter tables can be solved with more documentation, but given that there would be no consumers of such documentation at present, it's hard for me to be motivated enough to write it all... hence the need for a release of some kind.I don't think I should feel shame in giving something back to the world that I've spent a lot of time on, even if it won't be fully completable and won't have save/mod API compatibility between alpha versions.