ui_editor's People
ui_editor's Issues
change structure of the managers
main manager: ui_editor_manager or something
- this does all the wrapping, locks everything in place, presents some form of API, etc.
- all the logging and functionality is also within this
then, there's the extant UI class to do the actual physical UI for the mod, as is
then, there will be a "layout_parser" object.
- this will be in charge of taking the raw hexadecimal table provided from reading the table, going through it, and turning it into a single UIC class (the root) with all of the relevant children
- the layout parser is triggered when a new UIC file is being created or decoded, and provides whatever quick functionality is needed therein
- the layout parser will have internal versioning - for the different UIC types, for the different games, etc
then there will be each individual UIC object
- raw UIC, UIC_Template, UIC_State, etc.
- consider making simple fields into a UIC object as well - ie., make a default object that has a few methods that can be used for "uid" or "tooltip_text" or "offsets", or whatever other simple fields. should work for single values as well as tables
jesus fucking christ I hate Lua inheritance
figure out inheritance for baseclass to all the chilun classes
fix scrollbar location
the "After" fields for lists and stuff are a special type - "LayoutEngine". Decode!
from dungeon of toemare:
<LayoutEngine
type="HorizontalList"
spacing="0.00,0.00"
matchfontsizes="false"
itemsperrow="1"
sizetocontent="true"
autocalc_rows="false"
secondary_margins="0.00,0.00"
max_length="0"
allow_overlap="false"
allow_scale_items_down="false"
reverse_order="false"
min_size="0"
margins="0.00,0.00"
skew_angle="0"
equal_spacing_size="0"/>```
resolve header names for objects
- use "name" when available
- use "UI-ID" when available and name isn't
- use the typename+index for things without UI-ID or name (ie. "ComponentMouse1")
edit new for Container & Field
re: #34
consider future needs
- should the parser/decipher functions be on the actual classes proper?
Prototype live-editing (edit the image path in button_cycle or w/e)
properly change the .state field!
Decipher LayoutEngine
work on remaining fields
the "after" shits from Cpecific's parser, a few small things here and there
resolve field table display
consider looping all :new() calls through BaseClass
ie.
function class:new(...)
local o = BaseClass:new(...)
setmetatable(o, self)
return o
end
ONLY DO THIS CONTAINED SO IT DOESN'T KERPLODE ERRYTHING
incorporate the num text within headers
Move all parsing to individual classes (leave actual chunk-decipher methods inside of the parser)
rigorous error checking (verify types as it goes, seek, etc)
refactor parser:decipher()
start with deciphering the root, then call individual decipher functions (ie parser:decipher_components())
do BaseClass w/o inheritance
have all the methods that will just be copy-pasta'd into another file
table-type fields don't display propa
resolve a better way to do add_data and fields
right now, add_data assumes an obj is being passed, with a :get_key() method, then adds a new index to self.data
with {key=obj:get_key(),value=obj}
. This isn't super hot - it's not a first-class type, for instance, so you can't tell what that {key,value} table is through a loop and what not.
This should probably just be self.data[#self.data+1] = obj
, on minimal inspection, and then read obj elsewhere using tostring(obj) to determine the type and what not
incorporate a "hex view" for details
give each UIED class a different header tooltip
don't make a header if there are no objects in that collection (ie. the ComponentMouse Sth thing)
make sure important fields are cleared on instantiated objects
ie.
function component:new()
local o = {}
setmetatable(o, self)
o.data = {} ------ <-- VERY IMPORTANT
return o
end
resolve list box issues
bit of an overhang (fucking hell)
put all classes onto a shared base with necessary methods (get_key(), add_data(), etc)
reduce the space of the testing grounds / increase the details screen much morely
what the fucking shit is causing this infinite loop
try to completely remove collections? idfk.
perform mkdir in Lua (for live-editing/reading)
change how fields are added in the UI
- add a new dummy UIC for every single header, that comes right after the header and contains all of the fields within
- whenever the header is clicked, just set that individual dummy visible/invisible
load specified ui file
get the expandable headers to actually work (close/open)
move :display() methods all into the ui_panel object
make the different sections size *based on the CurrentStateImage dimensions*, not the full panel dimensions
get headers and regular text lines working
headers are expandable/closer, using the expandable_row_header thingy
- they'll have the text of the name of the section (ie. "Root", "States (3)", "[state name here]")
- each will have an open/close button, and an expand all button to expand every child header of that header
regular text lines are just rows of text with the name of the field ("offset", "width", etc.,) followed by the value. each row of text can have a tooltip, yay
- dummy row for each, set interactive, tt set on this
- two blips of text set on the row, one on the left, one on the right
add Float as a decipher-chunk type
make the details panel full size; have the buttons only underneath the testing grounds
decipher ComponentFunctionAnimation
"new" and "expand children" buttons on expandable headers
new only where relevant!
do BaseClass w/ inheritance
I would really like to not need to edit every single file any time these methods are edited
Decipher colour hex codes
translate the RGBA values into something that's relatively legible
localize container names
- "component_images" to "Component Images" with a tt of whatever
add a "Container" type along with "Field" type
Containers are just tables with added methods - they might be a container of states, or a container of images, or a container of Fields.
Containers start with a expandable_row header, and they display the name of the type included as well as the number of those (so it might say Children (4)). They have the data for each contained object within as well. They have the methods for opening/closing the display UI, and they have the methods for displaying the content.
TODO - figure out some good way to do tables like "Offsets" using the container type (or if i even should!)
localise basically everything, really
wrap strings in quotes
resolve error with containers in containers (UI panel is shitting)
save/get UIC rows quickly somehow
they're all fields, so - have a :get_uic() method on fields, and a :set_visible() method on fields. when a header is pressed, loop through that object's children and set them visible? have full objects have a :get_uic() and :set_visible() method as well, which closes their header and changes the state and hides all of its children.
so:
- root, when closed, sets every single child header invisible.
- child headers being closed will set every internal field invisible, and close each header (hiding their children)
- cont. all the way down
edit new() for classes
ie.
function obj:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
make table fields prettier
fix width of the list box (mind the scrollbar, dummy!)
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.