Ich versuche mal mich über Ostern in die Verschiebung der Minimap einzuarbeiten. Vielleicht geht das ja rein über Python, durch Übergabe geeigneter Parameter.
Ich versuche mal mich über Ostern in die Verschiebung der Minimap einzuarbeiten. Vielleicht geht das ja rein über Python, durch Übergabe geeigneter Parameter.
Ja, ich konnte fast alle Elemente um-platzieren, es fehlen nur noch die Minimap (ohne Ring) und die Infotexte auf der linken Seite (erscheinen beim Mouse-Over über ein Button).
Bei der Ctrl-I-Funktion ist aber noch alles beim alten, ich wollte zuerst die Grundfunktion zum Laufen bringen. Ich befürchte einfach, dass ich manche Formeln nicht ganz sauber eingesetzt habe, so dass es bei tieferen Auflösungen zu Darstellungsfehler führen könnte
Ich werde die Files heute posten, damit sich die py-Spezialisten damit befassen können.
Wenn alles rund läuft, kriegen die Grafiken noch den letzten Schliff (Schatten etc.) und dann kann die Testphase starten.
Okay hier die Files für das neue Interface
Folgende Probleme müssen noch gelöst werden:
1) Die Auflistung der Einheiten im Stack beginnt rechts unten (rotes Quadrat) und baut sich dann zeilenweise nach links und oben auf.
2) Diese Info-Texte müssen an einen anderen Ort verschoben werden, da dort die Icons für die angewählten Einheiten platziert sind.
3) Wenn man den Fortschrittsbalken der Stadt anklickt, taucht unten eine Icon-Liste der Waren auf, diese müsste nach oben über den Holzrand rutschen.
4) Die Minimap habe ich vorerst deaktiviert, diese müsste noch von links nach rechts unter den Kreis geschoben werden.
5) Damit die Einheiten im Stack überhaupt rechts erscheinen muss man zuerst noch den kleinen hellbraunen Pfeil (halb verdeckt unter dem Totenkopf-Button) aktivieren. Wo kann man definieren dass "PlotListUp" schon von Beginn an aktiviert ist? Dann könnte man den Pfeil entfernen.
Code:screen.setButtonGFC("PlotListUp", u"", "", xResolution - RIGHT_PLOT_LIST_EDGE + 2, yResolution - 2*LARGE_BUTTON_SIZE - 10, MEDIUM_BUTTON_SIZE, MEDIUM_BUTTON_SIZE, WidgetTypes.WIDGET_PLOT_LIST_SHIFT, 0, -1, ButtonStyles.BUTTON_STYLE_ARROW_UP ) screen.hide("PlotListUp")
P.S: Der Rundenbutton wird noch passender integriert, ich habe da schon Ideen im Hinterkopf
Diverse Bugs:
Achtung Spoiler:
Geändert von Fankman (01. April 2010 um 09:55 Uhr)
Hi Fankman, hi Ronnar,
ist da irgendetwas dabei, dass Änderungen in der DLL benötigt ?
Hört sich eigentlich durchgängig nach py an ?
Da kennt ihr (du und Ronnar) euch sicher deutlich besser aus als ich.
(Hab bisher nur python-Basics intus.)
Gruß raystuttgart
Teammitgleid dieses Projekt für Colonization:
[Mod] We The People
(Nachfolgerprojekt von Religion and Revolution)
Davor Teammitgleid dieses Projekt für Colonization:
[Mod] Religion and Revolution
Vor-Vorheriges Projekt für Colonization:
[ModMod] ray's Wunschliste
Und wiederum davor Teammitglied von:
[Mod] The Authentic Colonization (TAC)
Wenn du nur py-Basics hast, was habe ich dann erst?
Ich kann den py-Code nur halbwegs lesen, wegen meinen Pascal- und Basic-Kenntnisse von der Schulzeit her.
Okay die CvMainInterface.py ist auch wirklich die Hölle zum verstehen, irgendwie muss die Struktur und Aufbau dieser Datei unter Voll-Suff der Programmierer entstanden sein
Fankman, die Minimap lässt sich über screen.placeMinimap positionieren. Der für uns interessante Aufruf steht im Abschnitt else: # CITY SCREEN IS DOWN so ungefähr bei Zeile 2359.
Das Ding aber für alle Auflösungen richtig zu positionieren wird eine aufwändige Geschichte.
Ich versuche mich mal dran, aber heute wird das nichts mehr.
Ronnar und ich haben uns an der Minimap mächtig die Zähne ausgebissen, vor allem Ronnar hat viel Zeit aufgewendet um bei der Minimap schlauer zu werden, leider auch erfolglos.
Die ganze CvMainInterface.py ist übelst strukturiert, es gibt keine einheitliche Norm zur Positionierung der Elemente. Die Grafiken, Buttons, Texte etc. werden alle etwas anders positioniert und bei der Minimap schnalle ich das System gar nicht mehr. Wie Ronnar auch erfahren hat, bewirken Änderungen an der Minimap nur irgendwelche Verzerrungen und sonstige nicht vorhersehbare Auswirkungen
Ich würde also den Ball gerne weiter geben, Ray... koma...
Wie schon beschrieben geht es eigentlich nur um die Minmap, die anderen ToDo's sollten dann eine Kleinigkeit darstellen.
Die Positionierung funktioniert bei der Minimap nicht wie bei anderen Grafikelementen:Wie Ronnar auch erfahren hat, bewirken Änderungen an der Minimap nur irgendwelche Verzerrungen und sonstige nicht vorhersehbare Auswirkungen
screen.placeMinimap(x, y, a, b)
Beispiel: Wenn wir eine 50 x 40 px große Minimap beginnend beim Punkt (25, 20) positionieren wollen, müsste es also so aussehen:
screen.placeMinimap(25, 75, 20, 60)
Das hier sollte eigentlich funktionieren.
Danke koma, das hat tatsächlich funktioniert
Der Menürahmen kann ich nun beliebig verschieben.
Nun leider muss ich mir eingestehen dass meine Formel zur Platzierung der Elemente mehr Probleme macht, als ich angenommen habe.
Ich möchte die Elemente unabhängig von der Auflösung platzieren. Das heisst, ich gebe die Position prozentual zur Auflösung an.
z.B.:
ElementX = xResolution / 100 * 85
Nun führt das leider bei fast jeder anderen Auflösung als meine aktuelle, zu massiven Verzerrungen und Falsch-Verschiebungen der Elemente.
z.B: passt der Ring und die Minimap bei 1680x1050 genau zusammen, bei 1024x768 ist der Ring und die Map verschoben
Ich schätze also, dass man die Positionsangaben nicht so lösen darf, wie ich das vor hatte, oder?
Jeder Tipp ist Willkommen
Ich schätze also, dass man die Positionsangaben nicht so lösen darf, wie ich das vor hatte, oder?1. Fehler: Python rechnet mit ganzen Zahlen:z.B.:
ElementX = xResolution / 100 * 85
ElementX = xResolution / 100 * 85
ElementX = 1680px / 100 * 85 = 16px * 85 = 1360px
Das ist natürlich sehr ungenau, besser wäre so:
ElementX = xResolution * 85 / 100
ElementX = 1680px * 85 / 100 = 142800px / 100 = 1428px
2. Fehler: Du berechnest die Größe des Minimap-Ringes mit xResolution. Die Größe der Minimap wird aber über yResolution berechnet (such nach SADDLE_HEIGHT in der CvMainInterface.py). Für yResolution = 1050 beträgt SADDLE_HEIGHT = 325px. Das deckt sich ungefähr mit deinem (falsch berechneten) Wert für ElementX:
ElementX = 1360px, Größe d. Ringes = 1680px - 1360px = 320px. Minimap und Ring passen zusammen.
Bei z.B. 1024*768 funktioniert das dann nicht mehr (SADDLE_HEIGHT = 238px, Ring = 174px).
Ein fester Prozentsatz (85%) funktioniert also nur bei einem festen Seitenverhältnis (16:10). Damit das Ergebnis auch für andere Bildformate stimmt, mußt du yResolution berücksichtigen. Also z.B. so:
ElementX = xResolution - SADDLE_HEIGHT.
Geändert von koma13 (08. April 2010 um 11:37 Uhr)
3. Fehler: Frage gleich von Beginn an koma
Was du alles weisst *staun* , ich werde bei dir noch mal einen Python-Kurs besuchen
Das mit den ganzen Zahlen ist natürlich ein interessantes Argument und die daraus resultierende Ungenauigkeit ist ja massiv. Da muss ich wohl alle meine Positionierungen überarbeiten.
Aber im Grunde sollte das System mit der prozentualen Berechnung ja funktionieren, wenn ich einfach das Übel mit den ganzen Zahlen beachte und SADDLE_HEIGHT mit einbeziehe, oder?
Weil ohne eine klare Angabe mit (für mich verständliche) Zahlenwerte kann ich die Elemente nie passend auf der Bildfläche verteilen.
Aber erst mal ein grossen Danke, koma, damit komme ich bestimmt weiter
kein Bug, aber eine kleine Anmerkung zum Interface im Europahafen in 2.01:
Der Button zum Verkaufen eines Schiffes ist gefährlich platziert. Nämlich ersetzt er den "Ladung verkaufen"-Button, sobald das schiff Leer ist.
Außerdem sieht er so aus wie der größere Knopf rechts unten, mit dem Siedler oder Ausrüstung gekauft werden können.
Ein geistesabwesender Klick oder versehentlicher Doppelklick könnte also schwerwiegende Folgen haben.
Im Europahafen bin ich jetzt immer besonders konzentriert
[Babylon 5 : IFH] Danger and Opportunity (pausiert)
2. Webring-Story des Monats[Ja2 v1.13] Arulcanisches Tagebuch (abgeschlossen)
[CivCol] China. Was wäre, wenn... (abgeschlossen)
[CivCol] Die Franzosen am Sankt-Lorenz-Strom (abgeschlossen)
Und nochwas: In der schön gemachten Halle des Kontinentalkongresses hängen zwar Portraits der ihm angehörenden Persönlichkeiten, aber das wars auch schon.
Kleine Popups mit Namen und erhaltenem Bonus wären nett, oder zumindest Namensschilder unter den Bilderrahmen.
Ist nichts gravierendes, nur eine kleine Anregung.
[Babylon 5 : IFH] Danger and Opportunity (pausiert)
2. Webring-Story des Monats[Ja2 v1.13] Arulcanisches Tagebuch (abgeschlossen)
[CivCol] China. Was wäre, wenn... (abgeschlossen)
[CivCol] Die Franzosen am Sankt-Lorenz-Strom (abgeschlossen)