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