Heyho Commu
Mein Chef meinte ich solle unbedingt in die WPF entwicklung ein wenig einsteigen. Da mir kein gutes Projekt eingefallen ist, dachte ich mir, ich erstelle einen Offline GUI Editor für Arma3
Ich weiß es gibt bereits so ein Tool und einige werden sicher flamen.
Doch hört mich an: is mir egal
Ich schreibe das Tool in dem Gewissen das es vielen Leuten schwer fällt sich in diese Dialog Geschichte einzuarbeiten. Ich bin mir selber noch nicht ganz sicher ob ich die Rsc`s bzw. Tonics Tags (Life_RscText) mit einbinde, derzeit funktionieren nur die allgemeinen BI Tags.
Ich hab auch nicht vor alle Elemente einzubinden, sondern lediglich die gängigen.
Liste der Elemente
-RscText
-RscStructuredText
-RscPicturebox
-RscProgressBar
-RscEdit
-RscCombo
-RscListBox
-RscButton
-RscFrame
-RscSlider
-RscTextCheckBox
-RscButtonMenu
-RscControlsGroup
-RscMapControl
Andere Elemente wie RscGUI (oder ähnlich) werde ich nicht einbinden da die Backgrounds einfach per RscText eingebunden werden können.
Funktionsumfang
-Einlesen jeglicher .HPP files die einer bestimmten Struktur folgen und die lediglich ein Tag vor den eigentlichen BI defines besitzen
-Bearbeiten der Elemente per Drag & Drop sowie Mausklicken und ziehen
-Abspeichern dieser Files im Safezone Stil
Die Oberfläche (UI oder auch GUI)
Da ich ein Back-End Entwickler bin, sehen meine UI`s immer recht Schlicht und einfach aus. Ich bitte da einfach drüber weg zu sehen.
Die GUI ist direkt darauf ausgelegt wie Arma alle Elemente per Drag & Drop zu auf die Oberfläche zu ziehen. Zusätzlich kann man wie bei Arma die Elemente verändern mit den zugehörigen Tasten die angezeigt werden (siehe 2. Bild links in Rot).
_________________________________________________________________________________________________________________________________________
_________________________________________________________________________________________________________________________________________
Updates
#Update 1
-Autosave brachte es zum absturz nachdem man eine File geladen hatte.
-einige Elemente ließen sich nur verschieben wenn nur diese alleine im Panel saßen.
-Einige SelectionColors wurden als SelectionColorBackground gelesen.
#Update 2
-Einige Clicks wollten nicht das tun wofür sie bestimmt waren.
-Hintergrundbilder sind nun neu gemacht, damit die GUIS wie ingame aussehen.
-Überarbeitung der Drag&Drop Funktionen
-Überarbeitung der SelectionColors (BG, Focus, Disabled...)
#Update 3
-Action events wie "ButtonClick" etc. werden gelesen, verarbeitet und wieder einspeichert.
Folgende Events werden unterstützt:
->action (für button clicks zbsp.)
->onLBSelChanged
->onLBDblClick
->keyDown
->onCheckedChanged
->onButtonClick
Weitere gewünscht? Bitte mit direkter Bezeichnung und eventuell einem Link (Syntax etc.) bescheid geben.
-Automatische Konvertierung von ColorArrays
-Elemente nun direkt Klickbar, Attribute werden beim Klick direkt angezeigt und in der Hierarchie markiert für besseren Überblick
-Background Elemente werden auch wieder als solche gespeichert
-Checkboxes die gelesen wurden, sind nun RscTextCheckboxes -> Text kann direkt eingetragen werden ohne zusätzlichen RscText (der muss manuell entfernt werden)
-Fehler im parser behoben, Koordinaten sollten besser gesetzt werden
ErrorLog Dateien wurde nun erstellt. Es wäre toll wenn diese Daten zu mir zurück kommen würden (insofern man sich nicht daran stört).
Danach kann ich recht schnell eine Lösung finden und diese freigeben.
#Update 4
-Verbesserungen im bereich der Positionen für sowie Höhe und Breite.
-Performance Fehler behoben
-Änderungen der Standard Eigenschaften für
- RscTextCheckbox -> Bordercolor = 255,255,255,255 (wers lesen kann und weiß was es is is klar im Vorteil
)
Sowie BackgroundColor = 0,0,0,0
#Update 5
-Geschwindigkeitserhöhung beim auslesen der Files
-Erste Funktionen zum adaptieren der AL Files
#Update 6
-Beim verschieben der Elemente wurden die Positionen nicht richtig erkannt.
-Erkennung von Actions (siehe update 3) wurde verbessert -> case sensitive...
#Update 7
-Auslesen und speichern jeder Art von .HPP Dialog File -> Voraussetzungen siehe unten!
-Erkennung von Actions (siehe update 3) wurde verbessert -> case sensitive...
#Zusatz Wunschfunktion ->
@sebi1106 brachte den Wunsch ein, seine eigenen Backgroundbilder zu nutzen.
Kein Poblem->
- Downloaded die frische Version
- Im Verzeichnis ist nun ein Ordner mit dem Namen Backgrounds
- Legt eure Background-Dateien einfach hinein
- Startet den Editor
Unterstützte Fileformate -> .png , .jpg sowie .jpeg
#Update 8
-Undefinierte Elemente werden auch als solche angezeigt (classes die keinen Bezug zu BI defines haben aber die Struktur x-y-w-h etc. einhalten)
- Dabei ist jedoch zu beachten das diese Elemente kaum bis keine Attribute besitzen. Demnach können Positionen Höhe sowie Breite eingestellt werden. Sie werden wieder als solche gespeichert als was sie eingebettet worden sind.
#Zusatz Wunschfunktion ->
@Risk hat mich drauf gebracht die "Wie-konnte-ich-dies-nur-vergessen" Funktionen einzubauen -> OnLoad/OnUnLoad der Gui Config.
Klick auf GUI config, sind diese in der Textbox vorhanden. Wenn ungewünscht wird beim speichern einfach ein Standard (missionnamespace variable) gesetzt.
#Update 9
-Bilder direkt einlesen lassen sodass Sie im Hintergrund (einschließlich Transparenz) betrachtet werden können
-Einlesen/Speichern der Files verbessert
-Fullscreen Modus eingesetzt
-Einige AL Erweiterungen eingebaut besseres auslesen etc.
#Wie kann ich nun die Bilder in die Controls laden lassen
Folgende Controls lassen dies zu:
-RscPicture (wer hätts gedacht...)
-Small Text
-Structured Text
-Buttons (Keine Menu Buttons)
Die Dateien zum einlesen müsst ihr den Ordner "Textures" legen der im Ordner der Applikation angelegt wird.
Ebenfalls wichtig! Bilder die ihr einladen wollt, müssen folgende Formate besitzen:
-*png
-*jpg
-*jpeg
Demnach können keine .paa Dateien eingelesen werden
#Sollte mir jemand erklären können wie ich die .paa Dateien per batch zur png zurück umwandle ohne weiter große Eingaben, gern her damit#
Anforderungen von dort oben erfüllt? Dann müsst ihr nur als Text den Pfad auswählen in dem das Bild liegt.
Bsp.:
test.jpg liegt direkt im Ordner Textures
Pfad = Textures\test.jpg
testings.png liegt im Unterordner Bilder von Textures
Pfad = Textures\Bilder\testings.png
Ich hoffe ich konnte euch damit ein Stück glücklicher machen
#Update 10
-Events können nun im Editor gepflanzt werden (Element auswählen und auf Add Events to.. Button klicken)
-Schriftgröße kann nun im editor eingesehen werden (standart 0.4 ~~~ BITTE PRÜFEN OB ZU GROß!!!!)
-Einige Änderungen beim einlesen von Dateien
- Auskommentierte Zeilen oder Passagen ( /* ..... */ ) werden nicht mehr eingelesen und somit nicht mehr abgespeichert
- Bei onload und onunload wurden ständig neue Semikolons hinzugefügt, dass niemand was gesagt hat wundert mich ^^#
- Beim auslesen der files wurde jeder Name eines Controls einfach überschrieben #Fixed
- Buttons im Fullsize Modus die erst geladen werden, hatten falsche Breite wie Höhe
-Files mit zwei Dialogen...
- Beim einlesen von einer Fiel die 2 Dialoge enthält wird gefragt welche der beiden man angezeigt haben möchte! ABER:
- Vergesst dabei nicht, dass die Datei dennoch dieselbe ist! Speichert also euren fortschritt in eine Seperate Datei ab!
-Soweit mir bekannt, sind nun fast alle AL Dialoge problemlos lesbar... freut euch... war keine schöne Arbeit -.-' ihr könnt auch mal spenden für meine Arbeit
Grade ernsthaft am Überlegen ob ich nicht einfach einen Update mit einbeziehe sodass jeder nur per klick updated...
_________________________________________________________________________________________________________________________________________
_________________________________________________________________________________________________________________________________________
Sollte etwas nicht klappen, bitte ich darum mir hier bescheid zu geben (PN).
Ich übernehme keine Verantwortung wenn ihr eure Dialoge zerstört weil ihr dieses Tool nutzt um andere Files auszulesen.
_________________________________________________________________________________________________________________________________________
_________________________________________________________________________________________________________________________________________
Auslesen von nicht BI defines basierten HPP Dialoge
Voraussetzungen:
- -Die Files müssen in .hhp geschrieben sein
- -Sie müssen einer bestimmten Logik folgen (idc -> ?Text -> CoordX -> CoordY -> ...), sollte dies nicht der Fall sein, wird automatisch versucht diese File mit dieser Logik auszustatten.
- -Jede Class (bsp. RscText) muss die normalen BI Defines im Namen stecken haben.
Bsp. -> Life_RscText oder auch HYP_RscButton genau wie MRT_RscFrame - Es muss je eine -> class controls sowie class controlsBackground vorhanden sein (ohne ginge theoretisch auch, dann wird allerdings jede Control als Background gelesen)
Jede Konvertierte File wird wieder mit denselben Tags gespeichert die sie zuvor ausgelesen hat.
Automatische Konvertierung einiger Daten:
Vor der Änderung | Nach der Änderung |
x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); | x = 0.09625 * safezoneW + safezoneX; |
x = 0.26; y = 0.645; w = 0.275; h = 0.03; |
x = 0.26 * safezoneW + safezoneX; y = 0.645 * safezoneH + safezoneY; w = 0.275 * safezoneW; h = 0.03 * safezoneH; |
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])"... | ColorBackground[] = {0.380392,0.698039,0.882352,0.698039}; |
Außerdem kann es bei einigen Files dazu kommen dass mehrere GUIS übereinander liegen. Dies ist nicht nachvollziehbar und kann nicht geändert werden. Ergo, speichert diese Files nicht ab, sie werden nicht im Spiel angezeigt werden können.
_________________________________________________________________________________________________________________________________________
_________________________________________________________________________________________________________________________________________
Ich nehme natürlich gerne Kritik bzw. Feedback entgegen, also zögert nicht. Ebenfalls gehe ich auf Vorschläge ein.
~Shinji