Closed siredmar closed 5 years ago
Ich mein mich grob zu erinner, dass lagersaende
im animations Fortschritt gespeichert war.
richtungen
: Hier koennte vielleichtRotate
passen, aber die nimmt verschiedene Werte zwischen Objekten an, z.B. 0, 1, 6, 11, 36, 9, 16...
Könnte es sein, dass Rotate
schon mit Size[0]
und Size[1]
vormultipliziert ist, um bei der Bestimmung der Grafiken Berechnungen zu sparen?
Mein alter Code sagt:
uint16_t anim_num;
if (*(t->anim)) {
assert(t->anim_time != 0);
anim_num = SDL_GetTicks() % (t->anim_time * t->anim_count);
anim_num /= t->anim_time;
anim_num -= (x + pos_x);
anim_num %= t->anim_count;
anim_num *= t->anim_add;
} else {
anim_num = *t->anim_num;
}
SDL_Texture* tex = Banks::tb_buildings.fetchSDL_Texture2(
t->gfx
+ (((t->ori + ori) % 4) * t->rotate)
+ anim_num
+ t->tile_id
, ren);
Also is die Grafik gfx + (((tile_orientierung + betrachtungs_orientierung) % 4) * jenes_rotate_aus_haeuser) + animations_anzahl? + tile_id?
Ich bin mir leider nicht mehr ganz sicher was ich da damals fabriziert habe. :sweat:
edit: anim_time = AnimTime anim_count = AnimAnz anim_add = AnimAdd
Ach, dann ist also Rotate
die Anzahl an Grafiken pro Drehung und ob es eine oder vier Drehungen gibt, wird daraus gefolgert ob Rotate
null oder etwas anderes ist, oder wie läuft das dann?
Guck mal, was ich im „Försterhaus“ gefunden habe:
Maxlager: 10
LagAniFlg: 1
EndObj;
Das dürfte bedeuten, dass die unterschiedlichen Grafiken nicht für Bewegungen, sondern für den Lagerstand sind. Das wäre damit geklärt.
Hi! Ich versuche gerade die geparsten Daten im Code einzubauen. Quasi die alten Objekte Bebauung und Grafiken durch die aus dem COD zu ersetzen. Ich hab zumindest schon einen Stand, der die Inseln anzeigt, und nicht abstuerzt. Das ist schomal gut (siehe branch https://github.com/siredmar/mdcii-engine/tree/cod-parser-data) Aber ich hab noch einige Probleme mit den Ansichten der Teile und mit den Animationen. Seht selbst:
Die Animationen zappeln auch wild umher, das Bild scheint nicht statisch zu sein. D.h. die Animation scheint grundlegend nach wievor zu funktionieren, offenbar springt er nur falsche Indizes an.
Es gibt nun einige Unterschiede zwischen den Daten aus der COD und der Daten, die in bebauung.txt stehen (was ja nicht weiter verwunderlich ist) :-)
Was ich bereits mappen kann ist:
Id
<->Id
ani_schritte
<->AnimAnz
hoehe
<->Size[1]
breite
<->Size[0]
Wo ich mir noch schwer tue:
grundhoehe
<->Posoffs
(wobei, ich mir da nicht 100% sicher bin)lagerstaende
<->Haus_Prodtyp.Rohmenge
oderHaus_Prodtyp.Prodmenge
oderHaus_Prodtyp.Maxlager
(bin mir nicht 100% sicher, wird aber im Code noch nicht verwendet)kategorie
<->Kind
und Haus_Prodtyp.Kind. Hier wird unterschieden zwischen grundsaetzlichem Typ in Kind (z.B. Fels, Gebaeude, Wald, Bruecke, Turm, uvm.) und einer Verfeinerung fuer die Haeuser Haus_Prodtyp.Kind (z.B. Brunnen, Kontor, Hochschule, Jagdhaus, ...)Was ich nicht mappen kann:
bauhoehe
: nicht so schlimm, wird offenbar im Code nirgends verwendetrichtungen
: Hier koennte vielleichtRotate
passen, aber die nimmt verschiedene Werte zwischen Objekten an, z.B. 0, 1, 6, 11, 36, 9, 16...Kann mir da jemand weiterhelfen?