mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
Add: script specific Randomizer instances
This commit is contained in:
parent
6abad681bd
commit
c5ff61c5f2
@ -88,24 +88,24 @@
|
||||
abs( 21): 21
|
||||
|
||||
--AIBase--
|
||||
Rand(): -54346916
|
||||
Rand(): -937374575
|
||||
Rand(): 823953997
|
||||
Rand(): -2062310602
|
||||
Rand(): -1780331126
|
||||
Rand(): -397928569
|
||||
RandRange(0): 0
|
||||
RandRange(0): 0
|
||||
RandRange(0): 0
|
||||
RandRange(1): 0
|
||||
RandRange(1): 0
|
||||
RandRange(1): 0
|
||||
RandRange(2): 1
|
||||
RandRange(2): 1
|
||||
RandRange(2): 1
|
||||
RandRange(1000000): 966676
|
||||
RandRange(1000000): 289525
|
||||
RandRange(1000000): 170283
|
||||
Chance(1, 2): false
|
||||
RandRange(2): 0
|
||||
RandRange(2): 0
|
||||
RandRange(2): 0
|
||||
RandRange(1000000): 666804
|
||||
RandRange(1000000): 624059
|
||||
RandRange(1000000): 697029
|
||||
Chance(1, 2): true
|
||||
Chance(1, 2): false
|
||||
Chance(1, 2): true
|
||||
|
||||
--List--
|
||||
IsEmpty(): true
|
||||
@ -420,144 +420,144 @@
|
||||
1098 => 46116
|
||||
1099 => 46158
|
||||
Randomize ListDump:
|
||||
1 => -200078348
|
||||
2 => -29799264
|
||||
1000 => 1630721656
|
||||
1001 => 959306175
|
||||
1002 => 1527421791
|
||||
1003 => 1259692483
|
||||
1004 => -1289244298
|
||||
1005 => -1572996668
|
||||
1006 => -2069479746
|
||||
1007 => -1819131606
|
||||
1008 => -1007163964
|
||||
1009 => -1185394870
|
||||
1010 => -1471365065
|
||||
1011 => 364354366
|
||||
1012 => -1478084253
|
||||
1013 => 405281367
|
||||
1014 => -11170062
|
||||
1015 => 156767750
|
||||
1016 => 1288924796
|
||||
1017 => 1796884876
|
||||
1018 => -1947073702
|
||||
1019 => -1999614238
|
||||
1020 => -231292809
|
||||
1021 => 966621566
|
||||
1022 => -606766557
|
||||
1023 => -1138727825
|
||||
1024 => -749544262
|
||||
1025 => 2004771271
|
||||
1026 => 686734186
|
||||
1027 => 923274744
|
||||
1028 => -1672035149
|
||||
1029 => -1642064950
|
||||
1030 => 1363389551
|
||||
1031 => -559500928
|
||||
1032 => 1656196991
|
||||
1033 => 1655354425
|
||||
1034 => -1027156689
|
||||
1035 => 1952644328
|
||||
1036 => 1217870217
|
||||
1037 => 242274100
|
||||
1038 => 201816080
|
||||
1039 => 2127464758
|
||||
1040 => 446043650
|
||||
1041 => -319728455
|
||||
1042 => 204701002
|
||||
1043 => -571265398
|
||||
1044 => -1422217131
|
||||
1045 => -391208397
|
||||
1046 => -1822628371
|
||||
1047 => -1499755350
|
||||
1048 => -1422137641
|
||||
1049 => 1621693134
|
||||
1051 => -1428728134
|
||||
1052 => -147587573
|
||||
1053 => 681719500
|
||||
1054 => 1172011190
|
||||
1055 => -1834344882
|
||||
1056 => 1157634586
|
||||
1057 => 1902133676
|
||||
1058 => -1967780161
|
||||
1059 => -1618025531
|
||||
1060 => -810220453
|
||||
1061 => 1582854921
|
||||
1062 => -410004643
|
||||
1063 => 1159917159
|
||||
1064 => -1377804984
|
||||
1065 => -738843914
|
||||
1066 => -1578756103
|
||||
1067 => -464090986
|
||||
1068 => 1711504679
|
||||
1069 => 545330655
|
||||
1070 => 379462570
|
||||
1071 => 514511099
|
||||
1072 => -1813251176
|
||||
1073 => 1424958266
|
||||
1074 => -825255131
|
||||
1075 => 539054595
|
||||
1076 => -1764192010
|
||||
1077 => -1243277769
|
||||
1078 => 2017874281
|
||||
1079 => -1972353607
|
||||
1080 => 1879761467
|
||||
1081 => 1638986560
|
||||
1082 => -1832287507
|
||||
1083 => -492411882
|
||||
1084 => 658940812
|
||||
1085 => -1044199400
|
||||
1086 => 1586504918
|
||||
1087 => -125492611
|
||||
1088 => -1562883174
|
||||
1089 => -1013778441
|
||||
1090 => 1560228607
|
||||
1091 => -550265689
|
||||
1092 => 524767105
|
||||
1093 => -713387661
|
||||
1094 => 1425927738
|
||||
1095 => 942653932
|
||||
1096 => 1233220698
|
||||
1097 => 1313602368
|
||||
1098 => -140318584
|
||||
1099 => 1199179892
|
||||
1 => 688298322
|
||||
2 => -1709546982
|
||||
1000 => 1701392078
|
||||
1001 => -1630848421
|
||||
1002 => -886500935
|
||||
1003 => -196324972
|
||||
1004 => -436037402
|
||||
1005 => -520341784
|
||||
1006 => -1485224804
|
||||
1007 => -311036236
|
||||
1008 => -1503442439
|
||||
1009 => -110945695
|
||||
1010 => -82825175
|
||||
1011 => 46859773
|
||||
1012 => -1199223018
|
||||
1013 => -1190555925
|
||||
1014 => 326384434
|
||||
1015 => 1486817960
|
||||
1016 => -1411425597
|
||||
1017 => -508426854
|
||||
1018 => 820019294
|
||||
1019 => 710762995
|
||||
1020 => -760867032
|
||||
1021 => -709611146
|
||||
1022 => 732190215
|
||||
1023 => 236336673
|
||||
1024 => 740596257
|
||||
1025 => 1135321785
|
||||
1026 => 2067474156
|
||||
1027 => -1395683607
|
||||
1028 => -240528699
|
||||
1029 => 928616892
|
||||
1030 => 1712486685
|
||||
1031 => 1994118287
|
||||
1032 => 1333321243
|
||||
1033 => 194124284
|
||||
1034 => 615083294
|
||||
1035 => 628086450
|
||||
1036 => 498957825
|
||||
1037 => 1359697121
|
||||
1038 => 1888433963
|
||||
1039 => 941623020
|
||||
1040 => -1925663292
|
||||
1041 => -771540264
|
||||
1042 => -1058341359
|
||||
1043 => 182127597
|
||||
1044 => 646955927
|
||||
1045 => -1424621714
|
||||
1046 => 623062612
|
||||
1047 => -1986955586
|
||||
1048 => -1268826980
|
||||
1049 => -456776220
|
||||
1051 => -1112555329
|
||||
1052 => -1532134052
|
||||
1053 => 1960404034
|
||||
1054 => 1573325453
|
||||
1055 => -316619303
|
||||
1056 => 699712177
|
||||
1057 => 863274966
|
||||
1058 => 1728276475
|
||||
1059 => -246695889
|
||||
1060 => 1919485436
|
||||
1061 => 111273464
|
||||
1062 => 125435213
|
||||
1063 => 155132602
|
||||
1064 => -171674076
|
||||
1065 => 655046914
|
||||
1066 => 1577399562
|
||||
1067 => 1028818150
|
||||
1068 => 447058239
|
||||
1069 => -1057920269
|
||||
1070 => -1326215323
|
||||
1071 => -198688588
|
||||
1072 => 1523643051
|
||||
1073 => 231373233
|
||||
1074 => 1121759962
|
||||
1075 => 1449439846
|
||||
1076 => -1615270753
|
||||
1077 => -1509293864
|
||||
1078 => 2116903943
|
||||
1079 => 672822173
|
||||
1080 => -969573911
|
||||
1081 => 1589904755
|
||||
1082 => 1148782015
|
||||
1083 => 663503316
|
||||
1084 => 933352745
|
||||
1085 => 577717039
|
||||
1086 => 402172048
|
||||
1087 => 1812250453
|
||||
1088 => 667300501
|
||||
1089 => -1838825777
|
||||
1090 => -856474776
|
||||
1091 => 420696035
|
||||
1092 => 2131427774
|
||||
1093 => -435303548
|
||||
1094 => -160883878
|
||||
1095 => 1969629634
|
||||
1096 => -555794155
|
||||
1097 => -835119691
|
||||
1098 => -1460907909
|
||||
1099 => -1146924084
|
||||
KeepTop(10):
|
||||
1 => -200078348
|
||||
2 => -29799264
|
||||
1000 => 1630721656
|
||||
1001 => 959306175
|
||||
1002 => 1527421791
|
||||
1003 => 1259692483
|
||||
1004 => -1289244298
|
||||
1005 => -1572996668
|
||||
1006 => -2069479746
|
||||
1007 => -1819131606
|
||||
1 => 688298322
|
||||
2 => -1709546982
|
||||
1000 => 1701392078
|
||||
1001 => -1630848421
|
||||
1002 => -886500935
|
||||
1003 => -196324972
|
||||
1004 => -436037402
|
||||
1005 => -520341784
|
||||
1006 => -1485224804
|
||||
1007 => -311036236
|
||||
KeepBottom(8):
|
||||
1000 => 1630721656
|
||||
1001 => 959306175
|
||||
1002 => 1527421791
|
||||
1003 => 1259692483
|
||||
1004 => -1289244298
|
||||
1005 => -1572996668
|
||||
1006 => -2069479746
|
||||
1007 => -1819131606
|
||||
1000 => 1701392078
|
||||
1001 => -1630848421
|
||||
1002 => -886500935
|
||||
1003 => -196324972
|
||||
1004 => -436037402
|
||||
1005 => -520341784
|
||||
1006 => -1485224804
|
||||
1007 => -311036236
|
||||
RemoveBottom(2):
|
||||
1000 => 1630721656
|
||||
1001 => 959306175
|
||||
1002 => 1527421791
|
||||
1003 => 1259692483
|
||||
1004 => -1289244298
|
||||
1005 => -1572996668
|
||||
1000 => 1701392078
|
||||
1001 => -1630848421
|
||||
1002 => -886500935
|
||||
1003 => -196324972
|
||||
1004 => -436037402
|
||||
1005 => -520341784
|
||||
RemoveTop(2):
|
||||
1002 => 1527421791
|
||||
1003 => 1259692483
|
||||
1004 => -1289244298
|
||||
1005 => -1572996668
|
||||
1002 => -886500935
|
||||
1003 => -196324972
|
||||
1004 => -436037402
|
||||
1005 => -520341784
|
||||
RemoveList({1003, 1004}):
|
||||
1002 => 1527421791
|
||||
1005 => -1572996668
|
||||
1002 => -886500935
|
||||
1005 => -520341784
|
||||
KeepList({1003, 1004, 1005}):
|
||||
1005 => -1572996668
|
||||
1005 => -520341784
|
||||
AddList({1005, 4000, 4001, 4002}):
|
||||
1005 => 1005
|
||||
4000 => 8000
|
||||
|
@ -96,6 +96,7 @@ static void _GenerateWorld()
|
||||
_random.SetSeed(_settings_game.game_creation.generation_seed);
|
||||
SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
|
||||
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0);
|
||||
ScriptObject::InitializeRandomizers();
|
||||
|
||||
BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP);
|
||||
|
||||
|
@ -251,6 +251,8 @@ static void InitializeWindowsAndCaches()
|
||||
UpdateAllVirtCoords();
|
||||
ResetViewportAfterLoadGame();
|
||||
|
||||
ScriptObject::InitializeRandomizers();
|
||||
|
||||
for (Company *c : Company::Iterate()) {
|
||||
/* For each company, verify (while loading a scenario) that the inauguration date is the current year and set it
|
||||
* accordingly if it is not the case. No need to set it on companies that are not been used already,
|
||||
|
@ -312,9 +312,18 @@ bool ScriptObject::DoCommandProcessResult(const CommandCost &res, Script_Suspend
|
||||
NOT_REACHED();
|
||||
}
|
||||
|
||||
Randomizer &ScriptObject::GetRandomizer()
|
||||
|
||||
/* static */ Randomizer ScriptObject::random_states[OWNER_END];
|
||||
|
||||
Randomizer &ScriptObject::GetRandomizer(Owner owner)
|
||||
{
|
||||
/* We pick _random if we are in SP (so when saved, we do the same over and over)
|
||||
* but we pick _interactive_random if we are a network_server or network-client. */
|
||||
return _networking ? _interactive_random : _random;
|
||||
return ScriptObject::random_states[owner];
|
||||
}
|
||||
|
||||
void ScriptObject::InitializeRandomizers()
|
||||
{
|
||||
Randomizer random = _random;
|
||||
for (Owner owner = OWNER_BEGIN; owner < OWNER_END; owner++) {
|
||||
ScriptObject::GetRandomizer(owner).SetSeed(random.Next());
|
||||
}
|
||||
}
|
||||
|
@ -76,8 +76,15 @@ public:
|
||||
|
||||
/**
|
||||
* Get a reference of the randomizer that brings this script random values.
|
||||
* @param owner The owner/script to get the randomizer for. This defaults to ScriptObject::GetRootCompany()
|
||||
*/
|
||||
static Randomizer &GetRandomizer();
|
||||
static Randomizer &GetRandomizer(Owner owner = ScriptObject::GetRootCompany());
|
||||
|
||||
/**
|
||||
* Initialize/reset the script random states. The state of the scripts are
|
||||
* based on the current _random seed, but _random does not get changed.
|
||||
*/
|
||||
static void InitializeRandomizers();
|
||||
|
||||
protected:
|
||||
template<Commands TCmd, typename T> struct ScriptDoCommandHelper;
|
||||
@ -279,6 +286,7 @@ private:
|
||||
static std::tuple<bool, bool, bool> DoCommandPrep();
|
||||
static bool DoCommandProcessResult(const CommandCost &res, Script_SuspendCallbackProc *callback, bool estimate_only);
|
||||
static CommandCallbackData *GetDoCommandCallback();
|
||||
static Randomizer random_states[OWNER_END]; ///< Random states for each of the scripts (game script uses OWNER_DEITY)
|
||||
};
|
||||
|
||||
namespace ScriptObjectInternal {
|
||||
|
Loading…
Reference in New Issue
Block a user