Comments (2)
Currently, the HasRoomCacheCollection
of ItemsContainerPatcher
only caches a small set of values that indicate if an item of size X_Y will fit in the container.
This likely will expand into a new class that stores this data as well as any other ItemContainer data that is useful to cache and have mods consult through a new public class in SMLHelper.
from smlhelper.
Current suggested interface features:
int MaxPossibleSingleSlots(ItemsContainer container);
int FreeSingleSlotsCount(ItemsContainer container);
bool HasRoomForItemSize(IItemsContainer container, int sizeX, int sizeY);
bool HasRoomForItemSize(IItemsContainer container, Vector2int sizeVector, out bool cached);
bool ContainerEmpty(IItemsContainer container);
bool ContainerFull(IItemsContainer container);
string MainHoverText(IItemsContainer container);
string ExtraHoverText(IItemsContainer container);
If we keep a dictionary that links containers to free slots we can extrapolate:
- Is the container full (free slots 0 or alternatively used slots == sizeX*sizeY)?
- Can an item of size (X,Y) fit inside the container?
- Expose information to mods for tooltips, etc.
Alternatively we can keep two or more caches:
- bool cache for HasRoom
- int cache for free slots
- Anything else that comes up
I do not yet know for sure if we need to change anything about the Harmony patch. It depends on how the helper method ends up looking.
from smlhelper.
Related Issues (20)
- Auto Language File Created If using Feature
- StoryGoal Custom Events do not receive name of triggering goal HOT 1
- ModID extra info not showing correctly. HOT 2
- Options Menu intermittent exception
- If an mod item is setting the SetUnlock but the techtype that unlocks it is unlocked by default then it should unlock by default. HOT 1
- The Nautilus tutorial for modules has incorrect code
- Module gadgets don't work HOT 3
- Coordinated spawn system fails to spawns a custom prefab created using CloneTemplate with the "classIdToClone" overload HOT 1
- Additive Prefab Templates
- Cannot add Crafting node: YeetKnife as it is being added to Root that contains Tab nodes. VanillaWorkbench, ModdedWorkbench HOT 7
- Way to access prefab ID, name, description, and sprite from the PrefabInfo or CustomPrefab HOT 2
- “Quick references” documentation page on layers & tags
- Allow creating ColorPickers without using the hardcoded sliders HOT 6
- Exception during Nautilus initialization HOT 3
- Config buttons always go to the bottom of the config
- FinishLoadingEvent fires too early for BZ
- Weird values for floats in mod menu HOT 1
- Game freezes/crashes on exit when using an external asset bundle HOT 5
- Ignore exceptions thrown by methods registered with SaveUtils.RegisterOnSaveEvent HOT 1
- SaveUtils.RegisterOnFinishLoadingEvent does not work for BZ
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smlhelper.