Beiträge: 561
Themen: 91
Registriert seit: Mar 2005
Bewertung:
0
16-10-2011, Sunday-22:34:26
Vielleicht bin ich ja zu blöd, aber:
1. eine koord_t kann ich im gesamten Quellcode nicht finden. Ich hab lediglich die Variablendefinition unter settings_economy_stats_t::init und eine Übergabe unter settings_t::parse_simuconf gefunden. Was dann aber weiter passiert=grosse ???
2. Leider beantwortet das auch meine Frage nicht! Eine Gewichtung findet im Normalfall im Prozent oder Promillebereich statt. Daher kann ich mit einem Wert von 2999 nichts anfangen.
Gruss
"Erst wenn der letzte Baum gerodet, der letzte Fluss vergiftet, der letzte Fisch gefangen, werdet Ihr feststellen, daß man Geld nicht essen kann!"
Weissagung der Cree
Beiträge: 484
Themen: 27
Registriert seit: Aug 2007
Bewertung:
0
16-10-2011, Sunday-22:43:22
Lol, jetzt bin ich fast genauso schlau wie vorher :tongue:. Inzwischen fürchte ich immer mehr, dass ich auch dann nicht viel mit dem Code werde anfangen können, wenn ich das Wikibook über C++ durch habe.
In einen Prozentwert lässt sich die Formel wohl nicht umwandeln.
Join the herd - become a brony!
Beiträge: 561
Themen: 91
Registriert seit: Mar 2005
Bewertung:
0
17-10-2011, Monday-00:01:11
@ 3+4i
Och, immer feste üben - irgendwann klappts. Beim zweiten Wert könnte ich mir vorstellen, dass es sich um longInt-Wert handelt. Dann müsste man diesen durch 100 teilen und mal den Prozenten nehmen, die man einsetzen will.
"Erst wenn der letzte Baum gerodet, der letzte Fluss vergiftet, der letzte Fisch gefangen, werdet Ihr feststellen, daß man Geld nicht essen kann!"
Weissagung der Cree
Beiträge: 7.536
Themen: 249
Registriert seit: Apr 2013
Bewertung:
27
17-10-2011, Monday-00:05:43
Simutrans benutzt zum Glück relativ wenig und meist auch nur vernüftig dokumentiertes C++; sonst hätte ich 2004 auch gleich das Handtuch geworfen. Die std:: sachen find ich eher (bsch) und den reichlichen Gebrauch von templates z.B. bei grund_t::find<...>() ist auch nicht mein Ding.
Ind koord.h findet sich die Routine: weight_by_distance(). Die berechnet aus dem Level und der Entfernung ein Gewicht für die Auswahl des Ziels.
Alle potentiellen Ziele werde so berechnet und in ein Array mit gewichten Leveln einsortiert. Aus Level 3 wird 300, um auch Luft nach unten zu haben. In Entfernung 10 wird daraus vielleicht 4127 und int 1000 Kästchen Entfernung 7. Danach werden die Levels in derm Array aufaddiert und ergeben zusamenn z.B. 904357. Dann wird eine Zahl zufällig ausgewählt, sagen wir 41728. Nun wird von Anfang das Haus gesucht, dessen summiertes Level kleiner-gleich dieser Zahl ist und dessen Nachfolger darüber liegt. Das geht sehr fix und ist nur dank templates mittlerweile etwas unübersichtlich geworden.