Changeset View
Changeset View
Standalone View
Standalone View
source/simulation2/components/CCmpAIManager.cpp
Show First 20 Lines • Show All 739 Lines • ▼ Show 20 Lines | void Deserialize(std::istream& stream, u32 numAis) | ||||
ENSURE(m_CommandsComputed); // deserializing while we're still actively computing would be bad | ENSURE(m_CommandsComputed); // deserializing while we're still actively computing would be bad | ||||
CStdDeserializer deserializer(*m_ScriptInterface, stream); | CStdDeserializer deserializer(*m_ScriptInterface, stream); | ||||
std::string rngString; | std::string rngString; | ||||
std::stringstream rngStream; | std::stringstream rngStream; | ||||
deserializer.StringASCII("rng", rngString, 0, 32); | deserializer.StringASCII("rng", rngString, 0, 32); | ||||
rngStream << rngString; | rngStream << rngString; | ||||
rngStream >> m_RNG; | |||||
deserializer.NumberU32_Unbounded("turn", m_TurnNum); | deserializer.NumberU32_Unbounded("turn", m_TurnNum); | ||||
deserializer.Bool("useSharedScript", m_HasSharedComponent); | deserializer.Bool("useSharedScript", m_HasSharedComponent); | ||||
if (m_HasSharedComponent) | if (m_HasSharedComponent) | ||||
{ | { | ||||
TryLoadSharedComponent(); | TryLoadSharedComponent(); | ||||
JS::RootedValue sharedData(cx); | JS::RootedValue sharedData(cx); | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | void Deserialize(std::istream& stream, u32 numAis) | ||||
SerializeMap<SerializeString, SerializeU16_Unbounded>()(deserializer, "pathfinding pass classes", m_PathfindingPassClasses); | SerializeMap<SerializeString, SerializeU16_Unbounded>()(deserializer, "pathfinding pass classes", m_PathfindingPassClasses); | ||||
u16 mapW, mapH; | u16 mapW, mapH; | ||||
deserializer.NumberU16_Unbounded("pathfinder grid w", mapW); | deserializer.NumberU16_Unbounded("pathfinder grid w", mapW); | ||||
deserializer.NumberU16_Unbounded("pathfinder grid h", mapH); | deserializer.NumberU16_Unbounded("pathfinder grid h", mapH); | ||||
m_PassabilityMap = Grid<NavcellData>(mapW, mapH); | m_PassabilityMap = Grid<NavcellData>(mapW, mapH); | ||||
deserializer.RawBytes("pathfinder grid data", (u8*)m_PassabilityMap.m_Data, mapW*mapH*sizeof(NavcellData)); | deserializer.RawBytes("pathfinder grid data", (u8*)m_PassabilityMap.m_Data, mapW*mapH*sizeof(NavcellData)); | ||||
m_LongPathfinder.Reload(&m_PassabilityMap); | m_LongPathfinder.Reload(&m_PassabilityMap); | ||||
m_HierarchicalPathfinder.Recompute(&m_PassabilityMap, m_NonPathfindingPassClasses, m_PathfindingPassClasses); | m_HierarchicalPathfinder.Recompute(&m_PassabilityMap, m_NonPathfindingPassClasses, m_PathfindingPassClasses); | ||||
// Keep it last so it is not affected by calling random functions | |||||
rngStream >> m_RNG; | |||||
bb: It seems this would allow calling random functions on deserialize (wouldn't harm, but doing it… | |||||
} | } | ||||
int getPlayerSize() | int getPlayerSize() | ||||
{ | { | ||||
return m_Players.size(); | return m_Players.size(); | ||||
} | } | ||||
void RegisterSerializablePrototype(std::wstring name, JS::HandleValue proto) | void RegisterSerializablePrototype(std::wstring name, JS::HandleValue proto) | ||||
▲ Show 20 Lines • Show All 377 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
It seems this would allow calling random functions on deserialize (wouldn't harm, but doing it would be 100% stupid anyway).