Ticket #658: rmstestfix

File rmstestfix, 4.7 KB (added by Philip Taylor, 13 years ago)
Line 
1diff -r d7d9470d2eec binaries/data/mods/public/maps/mapgen/painter.js
2--- a/binaries/data/mods/public/maps/mapgen/painter.js Fri Nov 05 22:06:38 2010 +0000
3+++ b/binaries/data/mods/public/maps/mapgen/painter.js Fri Nov 05 23:46:52 2010 +0000
4@@ -76,7 +76,7 @@
5 {
6 var ny = y+dy;
7
8- if (g_Map.validT(nx, ny) && g_Map.area[nx][ny] != area && !saw[nx][ny])
9+ if (g_Map.validT(nx, ny) && g_Map.area[nx][ny] && g_Map.area[nx][ny] != area && !saw[nx][ny])
10 {
11 saw[nx][ny] = 1;
12 dist[nx][ny] = 0;
13@@ -119,7 +119,7 @@
14 {
15 var ny = py+dy;
16
17- if (g_Map.validT(nx, ny) && g_Map.area[nx][ny] == area && !saw[nx][ny])
18+ if (g_Map.validT(nx, ny) && g_Map.area[nx][ny] && g_Map.area[nx][ny] == area && !saw[nx][ny])
19 {
20 saw[nx][ny] = 1;
21 dist[nx][ny] = d+1;
22@@ -165,7 +165,7 @@
23 {
24 if (g_Map.validT(x, y))
25 {
26- return g_Map.area[x][y] == area;
27+ return (g_Map.area[x][y] && g_Map.area[x][y] == area);
28 }
29 else
30 {
31diff -r d7d9470d2eec source/graphics/MapGenerator.cpp
32--- a/source/graphics/MapGenerator.cpp Fri Nov 05 22:06:38 2010 +0000
33+++ b/source/graphics/MapGenerator.cpp Fri Nov 05 23:46:52 2010 +0000
34@@ -19,6 +19,7 @@
35
36 #include "MapGenerator.h"
37
38+#include "lib/timer.h"
39 #include "ps/CLogger.h"
40
41 #define LOG_CATEGORY L"graphics"
42@@ -31,6 +32,8 @@
43
44 CScriptValRooted CMapGenerator::GenerateMap(const CStrW& scriptFile, const CScriptValRooted& settings)
45 {
46+ TIMER(L"GenerateMap");
47+
48 // Init map generator
49 jsval global = m_ScriptInterface.GetGlobalObject();
50
51diff -r d7d9470d2eec source/graphics/MapReader.cpp
52--- a/source/graphics/MapReader.cpp Fri Nov 05 22:06:38 2010 +0000
53+++ b/source/graphics/MapReader.cpp Fri Nov 05 23:46:52 2010 +0000
54@@ -1438,7 +1438,7 @@
55
56 #define GET_TERRAIN_PROPERTY(prop, out)\
57 if (!pSimulation2->GetScriptInterface().GetProperty(m_MapData.get(), #prop, out))\
58- LOGERROR(L"CMapReader::ParseTerrain() failed to get '" L#prop L"' property");\
59+ LOGERROR(L"CMapReader::ParseTerrain() failed to get '%hs' property", #prop);\
60
61 size_t size;
62 GET_TERRAIN_PROPERTY(size, size)
63@@ -1548,7 +1548,7 @@
64
65 #define GET_ENVIRONMENT_PROPERTY(val, prop, out)\
66 if (!pSimulation2->GetScriptInterface().GetProperty(val, #prop, out))\
67- LOGWARNING(L"CMapReader::ParseEnvironment() failed to get '" L#prop L"' property");\
68+ LOGWARNING(L"CMapReader::ParseEnvironment() failed to get '%hs' property", #prop);\
69
70 CScriptValRooted envObj;
71 GET_ENVIRONMENT_PROPERTY(m_MapData.get(), Environment, envObj)
72@@ -1627,7 +1627,7 @@
73
74 #define GET_CAMERA_PROPERTY(val, prop, out)\
75 if (!pSimulation2->GetScriptInterface().GetProperty(val, #prop, out))\
76- LOGWARNING(L"CMapReader::ParseCamera() failed to get '" L#prop L"' property");\
77+ LOGWARNING(L"CMapReader::ParseCamera() failed to get '%hs' property", #prop);\
78
79 CScriptValRooted cameraObj;
80 GET_CAMERA_PROPERTY(m_MapData.get(), Camera, cameraObj)
81diff -r d7d9470d2eec source/ps/GameSetup/GameSetup.cpp
82--- a/source/ps/GameSetup/GameSetup.cpp Fri Nov 05 22:06:38 2010 +0000
83+++ b/source/ps/GameSetup/GameSetup.cpp Fri Nov 05 23:46:52 2010 +0000
84@@ -881,9 +881,17 @@
85
86 ScriptInterface& scriptInterface = g_Game->GetSimulation2()->GetScriptInterface();
87 CScriptValRooted attrs;
88- scriptInterface.Eval("({})", attrs);
89- scriptInterface.SetProperty(attrs.get(), "mapType", std::string("scenario"), false);
90- scriptInterface.SetProperty(attrs.get(), "map", std::string(autostartMap), false);
91+ scriptInterface.Eval("({settings: { Size: 208, Seed: 0, BaseTerrain: 'grass1_spring', BaseHeight: 0, PlayerData: [{Civ:'hele'},{Civ:'hele'}], RevealMap: false, LockTeams: false, GameType: 'conquest' } })", attrs);
92+ if (args.Has("autostart-random"))
93+ {
94+ scriptInterface.SetProperty(attrs.get(), "script", std::string(autostartMap), false);
95+ scriptInterface.SetProperty(attrs.get(), "mapType", std::string("random"), false);
96+ }
97+ else
98+ {
99+ scriptInterface.SetProperty(attrs.get(), "map", std::string(autostartMap), false);
100+ scriptInterface.SetProperty(attrs.get(), "mapType", std::string("scenario"), false);
101+ }
102
103 CScriptValRooted mpInitData;
104 g_GUI->GetScriptInterface().Eval("({isNetworked:true, playerAssignments:{}})", mpInitData);
105diff -r d7d9470d2eec source/scriptinterface/ScriptConversions.cpp
106--- a/source/scriptinterface/ScriptConversions.cpp Fri Nov 05 22:06:38 2010 +0000
107+++ b/source/scriptinterface/ScriptConversions.cpp Fri Nov 05 23:46:52 2010 +0000
108@@ -71,6 +71,16 @@
109 return true;
110 }
111
112+template<> bool ScriptInterface::FromJSVal<u64>(JSContext* cx, jsval v, u64& out)
113+{
114+ uint32 ret;
115+ WARN_IF_NOT(JSVAL_IS_INT(v));
116+ if (!JS_ValueToECMAUint32(cx, v, &ret))
117+ return false;
118+ out = ret;
119+ return true;
120+}
121+
122 template<> bool ScriptInterface::FromJSVal<u32>(JSContext* cx, jsval v, u32& out)
123 {
124 uint32 ret;