84 lines
3.0 KiB
Markdown
84 lines
3.0 KiB
Markdown
# Frequently Asked Questions
|
|
|
|
## General
|
|
|
|
### What is Basalt?
|
|
Basalt is a UI framework for CC:Tweaked that helps you create user interfaces easily and efficiently. It provides pre-built components, event handling, and advanced features like animations and themes.
|
|
|
|
### Why should I use Basalt instead of direct terminal manipulation?
|
|
Basalt handles many complex aspects automatically:
|
|
- Event management
|
|
- Screen rendering
|
|
- Component positioning
|
|
- State management
|
|
- Layout organization
|
|
|
|
## Installation
|
|
|
|
### How do I install Basalt?
|
|
```lua
|
|
wget run https://raw.githubusercontent.com/Pyroxenium/Basalt2/main/install.lua
|
|
```
|
|
|
|
### Can I customize my installation?
|
|
Yes! The installer allows you to:
|
|
- Choose between Release/Dev versions
|
|
- Select specific components
|
|
- Include LuaLS definitions
|
|
- Enable minification
|
|
|
|
## Common Issues
|
|
|
|
### Why isn't my UI updating?
|
|
Remember to call `basalt.run()` at the end of your program. Without it, your UI won't start.
|
|
|
|
### Why are my elements not visible?
|
|
Check:
|
|
1. Element positions are within parent bounds
|
|
2. Parent container is large enough
|
|
3. Element's `visible` property is true
|
|
4. Z-index conflicts with other elements
|
|
|
|
### How do I handle screen resizes?
|
|
Use dynamic positioning with strings, or use functions:
|
|
```lua
|
|
element:setPosition("{parent.width - 5}", 5) -- 5 from right edge
|
|
element:setSize("{parent.width - 10}", 5) -- 5 padding on each side
|
|
element:setPosition(function(self) -- Another example, but as function call
|
|
return self:getParent() - 5
|
|
end, 5)
|
|
```
|
|
|
|
## Development
|
|
|
|
### How do I add custom plugins?
|
|
Create a new plugin in the plugins directory. See [pluginExample](https://github.com/Pyroxenium/Basalt2/blob/main/examples/pluginExample.lua) for a example on how to create plugins
|
|
|
|
### Where can I find more examples?
|
|
- Check the examples directory in the repository
|
|
- Visit our [GitHub](https://github.com/Pyroxenium/Basalt2)
|
|
- Join our [Discord](https://discord.gg/yNNnmBVBpE)
|
|
|
|
### How do I contribute?
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Submit a pull request
|
|
4. Join our Discord for discussion
|
|
|
|
## Performance
|
|
|
|
### How can I optimize my Basalt application?
|
|
Basalt does already a lot of optimization:
|
|
- The render loop only runs when something visually changed (color, position, size,..) which means it only runs once, even if Basalt gets spammed with events (timer events or mouse events).
|
|
- The event system is highly optimized:
|
|
- Events are only registered for elements that actually use them
|
|
- Events bubble up through the element hierarchy efficiently
|
|
- Event handlers are stored in a flat structure for quick access
|
|
- Events are automatically cleaned up when elements are removed
|
|
- Parent containers only receive events their children actually use
|
|
|
|
Additional tips for optimization:
|
|
- Group elements in Frames to reduce render calls
|
|
- Use `setVisible(false)` instead of removing elements you'll need again
|
|
- In case you need a LOT of elements you can use addDelayed{Element}, for example addDelayedButton instead of addButton
|