Seite 2 von 3

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 17:22
von trommlbomml2
Das ist natürlich ein triftiger Grund! Dann werde ich mir VS2008 installieren. Hat jemand eine Meinung zum Thema Views neu machen mit SFML?

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 19:51
von rainer
SFML...verstehe ja von dem anderen auch nichts :lol:

Wenn's funktioniert :) und wenn Puste nichts dagegen hat (falls Malle oder sonst wer zu ihm durchkam....ansonsten entscheiden wir das halt selbst :roll: )

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 22:17
von Anonymissimus
Was den Aufbau unsres Gui-Frameworks betrifft hab ich leider auch keine Ahnung.
Ich könnte dir höchstens mal nen Branch machen zum rumwerken. Das muss dann Puste entscheiden.
Und wenn was mit VS ohne Warnungen kompiliert dann hat das, naja, nicht unbedingt allzuviel zu bedeuten, da es ein schlechter Kompiler ist.

Re: MFC-Dialoge

Verfasst: Sonntag 13. April 2014, 13:36
von trommlbomml2
Mit dem Branch wäre ich sehr zufrieden. Ansonsten arbeite ich erstmal nur lokal.
Und wenn was mit VS ohne Warnungen kompiliert dann hat das, naja, nicht unbedingt allzuviel zu bedeuten, da es ein schlechter Kompiler ist.
Na, das war jetzt aber nicht gerade eine qualifizierende Aussage :-). Ich habe den Code kompiliert und startbar bekommen, das hat soweit geklappt. Nur beim Beenden hatte ich ein paar Debug-Asserts wegen fehlerhafter Speicherverwaltung.

Re: MFC-Dialoge

Verfasst: Sonntag 13. April 2014, 15:29
von Anonymissimus
trommlbomml2 hat geschrieben:fehlerhafter Speicherverwaltung.
Sowas ist leider inakzeptabel. Da haben wir schon genug Probleme mit. (Das mein ich u.A. damit dass es nicht viel zu bedeuten hat wenn was kompilierbar ist...)

Re: MFC-Dialoge

Verfasst: Sonntag 13. April 2014, 17:17
von trommlbomml2
Ich glaube nicht dass das an der compilerversion liegt sondern am selbstgeschriebenen code. Das könnte ich mir auch mal anschauen. Aber wie gesagt 2008 ist schon OK.

Re: MFC-Dialoge

Verfasst: Dienstag 15. April 2014, 20:22
von Malle
puste hat zurückgemailt:
Sir Pustekuchen hat geschrieben:1: Für jede GUI gibt es eine eigene Klasse, welche von CView abgeleitet ist. Diese Klassen sind alle bei der CMainFrame (komplettes Fenster) registriert. Es wird abhängig von einer bestimmten View immer eine Klasse sichtbar geschaltet. Darum kümmert sich die CMultiSplitterView Klasse, welcher verschiedene Views zugeordnet werden. Wenn ich die Frage also richtig verstehe, handelt es sich immer noch um das gleiche Hauptfenster, die einzelnen Views sind aber unterschiedlich. Man kann sich das am besten mit Tabs im Browser vorstellen. Es gibt ein Browserfenster (MainFrame) und viele einzelne Seiten (CViews), welche man einzeln in den Vordergrund holt.

2: Die Positionen sind immer gleich. Wir haben keine Animationen drin, so dass ein Planet oder ein Schiff z.B. von links nach rechts wandert. Von daher sollte es sich immer um feste Postionen handeln.

Re: MFC-Dialoge

Verfasst: Mittwoch 16. April 2014, 06:59
von trommlbomml2
Sehr gut, dann habe ich das ja richtig verstanden. Genau das, was ich wissen wollte.

Dann sollte ich mal schleunigst zusehen, eine Lösung vorschlagen zu können.

Re: MFC-Dialoge

Verfasst: Mittwoch 16. April 2014, 21:01
von Anonymissimus
Ich hab einen neuen branch planet_animation für dich gepusht. Um ihn zu verwenden dürfte das hier funktionieren
http://stackoverflow.com/questions/1783 ... ote-branch

Du könntest aber auch ein pull request verwenden.

Re: MFC-Dialoge

Verfasst: Donnerstag 17. April 2014, 21:48
von Anonymissimus
trommlbomml2:
Warte mal noch, bevor du VS2008 installierst usw. Es könnte sein, dass wir bald auch mit 2010+ erstellen können (siehe http://www.forum.birth-of-the-empires.d ... 820#p33820)
Falls ich danach ne Bestätigung von dir kriege, dass es tatsächlich auch mit 2012 oder so geht, wär das besonders toll.

Re: MFC-Dialoge

Verfasst: Freitag 18. April 2014, 16:31
von trommlbomml2
Das kann ich dann ja einfach ausprobieren ;).

Ansonsten habe ich mir mal etwas genauer angeschaut, wie man diese Technik in BotE einbauen kann und muss sagen es ist gar nicht so einfach wie gedacht:

Es werden am Anfang des Spiels alle Views instanziiert und in einer std::map nach Id gespeichert und entsprechend nach Spielzustand ausgetauscht. Auf jeden Fall eine gute Idee, soweit ich MFC verstanden habe. Problem dabei ist, dass das Rendering mit SFML so angedacht war, dass für alle aktiven Views das Custom-Rendering mit SFML angestoßen wird, falls sie dieses implementieren. Dazu müsste der View aber wissen, ob er gerade aktiv ist. Soweit ich das sehe, ist das so direkt nicht herauszufinden, weil ein View einfach ab und zu neu gezeichnet wird. Idealerweise stelle ich mir das so vor, vielleicht könnt ihr mir ein bisschen helfen:

1) Jeder View, der mit SFML rendern soll (wäre jetzt erstmal nur der PlanetBottomView) implementiert OnCustomRender(), welches man in einer Basisklasse aller Views unterbringt.
2) Der HauptDialog startet einen Timer, der 30 mal pro Sekunde einen Handler aufruft, bei dem bei allen aktiven Views OnCustomRender() aufgerufen.

Soweit denke ich kein Problem zu implementieren, nur baue ich da ziemlich an den Eingeweiden von BotE rum und soweit ich das verstanden habe, kennt sich hier auch keiner weiter doll aus. Trotzdem wäre eure Meinung hilfreich.

Frohe Ostern übrigens :D

Re: MFC-Dialoge

Verfasst: Freitag 18. April 2014, 20:04
von Anonymissimus
Hört sich so an, als könnte man jedem view einen boolmember geben, der true/false geschaltet wird and der Stelle wo die views umgeschaltet werden ? Dann weiß ein view ob er aktiv ist.

Re: MFC-Dialoge

Verfasst: Samstag 19. April 2014, 15:45
von trommlbomml2
Genau. Aber um das Konzept nicht zu brechen, sollte jeder View einfach wissen, wenn er Zeichnen soll, in dem er eine extra Methode aufruft. MFC entscheidet ja auch, wann OnDraw() aufgerufen wird. Ich versuche mich mal daran, da ich einen Branch habe, ist das ganze kein Problem. an den Branch müsste ich doch auch mit clone und dann checkout branchname hinkommen...

Re: MFC-Dialoge

Verfasst: Samstag 19. April 2014, 20:59
von Anonymissimus
Ja.
Allerdings weise ich mal auf commit dfae1b4c63931ae4b993bf2202cb40d3836e377a hin, welches BotE kompilierbar machen sollte mit VS2010+. Besser ein eigenes pull request erstellen.

Re: MFC-Dialoge

Verfasst: Dienstag 22. April 2014, 05:16
von CBot
Ich hab vor recht langer Zeit in einem anderen Projekt mal OpenGL in MFC-Views erfolgreich eingebettet. Falls das irgendwie weiterhilft, koennte ich das mal herauskramen. Meine sehr dunkle Erinnerung sagt mir, dass es da eine Schwierigkeit mit BotE gab, sonst haetten wir das wahrscheinlich schon integriert (Animationen und 3D waren damals schon erwuenscht), ich weiss allerdings nicht mehr, was genau das war. Aber vielleicht taeusche ich mich da auch.

Ich hatte auch mal einen DirectX-basierten Prototypen begonnen. Allerdings haette der umfangreichere Rewrites erfordert; damit war das Projekt eigentlich von vornherein doomed.