Skip to content

Make milestone list scrollable to support more milestones#203

Open
veger wants to merge 3 commits intoShadowTheAge:masterfrom
veger:scrollable-milestone-view
Open

Make milestone list scrollable to support more milestones#203
veger wants to merge 3 commits intoShadowTheAge:masterfrom
veger:scrollable-milestone-view

Conversation

@veger
Copy link
Contributor

@veger veger commented Feb 2, 2023

By embedding the milestone elements in a (virtual) scroll list, it will be possible to scroll them, which lifts the restriction of only allowing 60 milestones.

Edit: Fixed the original (probably) reason for this limitation: ulong can only hold 64 bits, and the Analyser uses bits to keep track of the dependencies of the milestones (and other objects). By replacing ulong with the custom build Bits class, this limitation is lifted.

Background: when playing extensive mod packs with lots of new/unknown technologies it is often hard to determine the research path to take. I find it convenient to add a lot (all) technologies to the milestone list, so YAFC shows which technologies I should research to unlock some item/recipe.

@veger veger force-pushed the scrollable-milestone-view branch 2 times, most recently from 182bd64 to 70a0b0a Compare February 18, 2023 13:36
Introduces a Bits class that is able to handle a dynamic amount of bits,
instead of the 64 bits stored in the ulong.
@veger veger force-pushed the scrollable-milestone-view branch from 70a0b0a to 3030b7b Compare February 18, 2023 13:37
shpaass added a commit to shpaass/yafc-ce that referenced this pull request Feb 7, 2024
By embedding the milestone elements in a (virtual) scroll list, it will
be possible to scroll them, which lifts the restriction of only allowing
60 milestones.

Background: when playing extensive mod packs with lots of new/unknown
technologies it is often hard to determine the research path to take. I
find it convenient to add a lot (all) technologies to the milestone
list, so YAFC shows which technologies I should research to unlock some
item/recipe.

This PR also fixes the original (probable) reason for this limitation:
`ulong` can only hold 64 bits, and the Analyser uses bits to keep track
of the dependencies of the milestones (and other objects). By replacing
`ulong` with the custom build `Bits` class, this limitation is lifted.

To be more confident that I did not break things, I first added a
(simple) test suite for milestones. Then applied the changes and with
minimal changed (had to use the `Bits` class now) the test suite still
runs properly.
Additionally, I made these changes more than a year ago
(ShadowTheAge#203) and have been playing
with loads/all (!) technologies of Pyanodons added to the milestones
without issues:


![image](https://github.com/have-fun-was-taken/yafc-ce/assets/171827/da44dfe4-f804-49bf-afbf-2c39baddfd43)

Note that these (open) PRs are _very_ convenient combined with this
feature:
* ShadowTheAge#168
* ShadowTheAge#204
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant