da ich schon wieder eine viel zu lange Zeit hier nichts mehr geschrieben habe (oder wohl eher, weil ich sonst nichts besseres zu tun habe...), werde ich über den bisherigen Fortschritt beim Umstieg auf C# und .NET berichten:
in letzter Zeit habe ich einiges an Zeit finden können, mich weiter mit dem Umstieg zu beschäftigen
so konnte ich nicht nur sehr viel Python Code in C# Code umwandeln, sondern habe auch schon den ersten Python-Code aus C#-Code heraus ausgeführt, mich mit der notwendigen ContentPipelineExtension beschäftigt und auch herausfinden können, dass ich Rendertargets (bzw. RenderTarget2D) benötigen werde
all das war dann doch nicht wirklich schwierig, auch wenn ich bei den Rendertargets nicht einfach den bisherigen Python-Code übernehmen kann
in Python hatte man Surfaces, die man sich nach belieben erzeugen und dann wild durcheinander verwenden konnte
um ein RenderTarget2D verwenden (bezeichnen) zu können, muss man dem entsprechenden GraphicsDevice erst mitteilen, dass man dieses verwenden möchte
das dürfte allerdings auch nicht zu zu großen Problemen führen, da ich beispielsweise in der einen Draw-Methode die Draw-Methoden der Elemete aufrufen könnte, die sich in ein Rendertarget zeichnen (mit festlegen des Rendertargets beim GraphicsDevice) und danach, nachdem das Rendertarget wieder angepasst wurde, die Rendertargets der Unterelemente zum Zeichnen abrufen
problematisch ist bisher noch, dass ich den meisten Code, den ich geschrieben habe, noch nicht zur Ausführung gebracht habe und damit nicht auszuschließen ist, dass ich irgendwelche Fehler gemacht habe
wobei: wenn man bedenkt, dass ich das gemacht habe, dann sind Fehler doch eigentlich schon von vornherein ausgeschlossen! *hust*
aber natürlich werde ich dem Problem mit Unittests entgegentreten, sobald ich das Klassendesign so angepasst habe, dass es dies zulässt ;D
aber mal Spaß bei Seite: ich hatte tatsächlich bei der Entwicklung des VariablesManager sowas wie Unittests verwendet, allerdings hatte ich den Code dafür entsorgt, als ich ihn "nicht mehr brauchte"... =/ (aber da sich daran ja nichts weiter verändert hat, wird das ja schon alles funktionieren
irgendwann hatte ich mir mal die Überlegung gemacht, dass ich in Python eigentlich sehr wie mit statisch typisierten Sprachen (der Typ eine Variablen ist grundsätzlich bekannt) und daher "nicht richtig" damit arbeite, doch dank der Umstellung auf C# ist mir klar geworden, dass es doch ein wenig mehr war, als ich dachte (es beginnt bei Sachen, wie, dass ich Script-Objekte und Namen von Skripten (Strings) teilweise gleich behandle und der Höhepunkt dürften die "Ingame-Variablen" sein, deren Typisierung ich bisher ignoriert hatte, in C# aber wohl notwendig werden dürfte)
durch die Umstellung habe ich allerdings auch einiges an Code finden können, von dem ich mich fragen musste, warum dieser überhaupt da ist
einige Funktionen wurden beispielsweise von keiner anderen Stelle im Code aufgerufen und konnten einfach ausgelassen werden
und damit ich auch noch mit ein paar Zahlen um mich werfen kann:
bisher habe ich ~ 2000 Zeilen C#-Code für das Spiel und nochmal ~ 500 Zeilen für die bisherige ContentPipelineExtension und es werden noch einige hundert Zeilen dazu kommen
allerdings muss ich auch dazu sagen, dass ich aufgrund meiner Handhabung der Eingaben ein Switch-Block alleine schon ~ 300 Zeilen verbraucht, von dem ich effektiv max. 30 wirklich benötigen würde (würde ich nur die Tasten behandeln, die ich im Spiel derzeit verwende)
und um einen gewissen Vergleich aufzubauen:
das Pythonprojekt hat ~ 3000 Zeilen Code
direkt kann man die beiden Zahlen nicht miteinander vergleichen, da der C# Code aufgrund der Formatierung grundsätzlich ein wenig mehr Platz in Anspruch nimmt (die geschweiften Klammern von Blöcken beanspruchen jeweils 1 Zeile -> 2 zusätzliche Zeilen je Methode, Klasse, Schleife, Bedingung, ...)
und natürlich sagt die Anzahl der Zeilen eigentlich gar nichts aus, aber so hat man zumindest das Gefühl eine Information über sein Spiel gegeben zu haben
womit ich mich im Zusammenhang mit dem Spiel evtl. noch beschäftigen werde sind Dinge, wie die Übersetzung des Python-Codes zur Kompilierzeit (derzeit wird der Code einfach nur unverarbeitet in eine andere Datei verpackt) oder vielleicht auch mit diversen Filtern, wie beispielsweise für die Skalierung (hq3x/hq4x), für Scan Lines o. ä.
allerdings steht jetzt erstmal das zur Anzeige bringen von Spielinhalt im Vordergrund und nicht solche Spielereien...