chadvandy / twuieditor Goto Github PK
View Code? Open in Web Editor NEWEditor for in-game UI for the Total War series. In progress.
Editor for in-game UI for the Total War series. In progress.
Attributes, Elements, Properties, all mean the same thing in a bunch of different contexts. DAMN.
Expected properties and elements are the big change between versions, as well as the anticipated name of each.
I can potentially use attributes, keep them all to the same class structure and just add in attributes for [Version(Start,End)] or [Version(Start)].
It would be nice to not have them be built directly into code, but I'm not sure the best way to handle that structure. Making them clear code data files isn't a big issue, as long as there is support for "anonymous/unknown" types during the decoding process.
Read the Twui file on open and parse it for the file version, the hierarchy, and then the components and their internal fields
add topbar menu and status bar and other vitals to the ShellView as is
move "main" commands into ShellViewModel
ScreenCollection in Shell, for dockable windows
Not a big issue for now, but may scale very poorly through time
Handle them with attributes that have a "Name", a "Type", an "Input"(?), and a "Version".
Interrogate each element's internal properties to get all of the ones that are valid for the currently loaded Version, and try to find the Name in the XElement as an XAttribute, pull in the value as the type specified to the field here.
Each component "attribute" just needs to have a name and a value, with the value of variable type defined by the C# Attribute.
TwuiContentsViewModel - master handler to hold all of the currently opened twui files, the tabs, the XML view, the properties, the hierarchy, etc.
ie., allow the PropertiesPanel to take the state info of "currently-selected component" from multiple sources
A parser that will just hold a collection of subelements or a collection of attributes, or both, if we don't know what type the current parsed XML element is
Scrollable list of the attributes underneath a collapsible header category, with support to go down into subelements.
IE., highlight a component, see its id, offset, docking position, etc., and have a collapsible header to go into its states, images, etc.
Support for editing based on the types of each attribute - docking is a series of buttons, offset is an x/y coord, priority is an unsigned int, etc.
Support for "reference" GUIDs - clicking on "currentstate" GUID will let you scroll immediately to that state.
https://github.com/Carlos487/awesome-wpf
UI library: https://github.com/Kinnara/ModernWpf
FontAwesome
PrismLibrary for framework / DI / etc. https://github.com/PrismLibrary/Prism
CaliburnMicro? https://github.com/Caliburn-Micro/Caliburn.Micro
IF it's not a complete pain in the ass.
May require some simple conversion; maybe it's actually an XML file but stripped of the extension; maybe it's going to require a lot of hard work to move over and is just not worth it, at which point I'll just not do it
Project - Entry
-> App.xaml
-> Other main resources
Views
ViewModels
Models
Utilities
Schema[s]
Should they change automatically, as things are changed in the properties? Or should there be an "apply changes" button?
Latter would allow some verification, which will help out quite a lot.
open files, get file dialog, hold pointers to files, save and create files, etc.
Top of listview should have a nice header informing the user what exact component and element we're looking at (ie., we're looking at the root, and we're in its "newstate" state.)
Collapsible headers for subelements
Should they be held in a single field, like the "Properties" list? Or should they be specific fields for each element?
How to handle the "list" vs "instance" elements?
IE., -> list of individual states, -> singular element w/ attributes.
How should the C# Attribute be setup?
TwuiElementAttribute(Name, DataModelType, bIsList, bRequired, uintVersionAdded, uintVersionRemoved)
Work out a dock manager system to handle various Visual Studio esque micro-windows
File -> Open Twui
Display XML contents in one tab
Display the treeview of the TWUI in a side view
Display properties of each element, based on treeview selection, in another side view
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.