Fix replay cache performance (broken by ea250b3d25
). Also remove a TODO fixed by fca844eef6
.
Reviewed by elexis. This was SVN commit r19875.
This commit is contained in:
parent
d5a15384cc
commit
5c6f3505e8
@ -57,8 +57,12 @@ function startReplay()
|
||||
*/
|
||||
function reallyStartVisualReplay(replayDirectory)
|
||||
{
|
||||
// TODO: enhancement: restore filter settings and selected replay when returning from the summary screen.
|
||||
Engine.StartVisualReplay(replayDirectory);
|
||||
if (!Engine.StartVisualReplay(replayDirectory))
|
||||
{
|
||||
warn('Replay "' + escapeText(Engine.GetReplayDirectoryName(replayDirectory)) + '" not found! Please click on reload cache.');
|
||||
return;
|
||||
}
|
||||
|
||||
Engine.SwitchGuiPage("page_loading.xml", {
|
||||
"attribs": Engine.GetReplayAttributes(replayDirectory),
|
||||
"isNetworked": false,
|
||||
|
@ -390,7 +390,12 @@ function startReplay()
|
||||
if (Engine.HasXmppClient())
|
||||
Engine.StopXmppClient();
|
||||
|
||||
Engine.StartVisualReplay(g_GameData.gui.replayDirectory);
|
||||
if (!Engine.StartVisualReplay(g_GameData.gui.replayDirectory))
|
||||
{
|
||||
warn("Replay file not found!");
|
||||
return;
|
||||
}
|
||||
|
||||
Engine.SwitchGuiPage("page_loading.xml", {
|
||||
"attribs": Engine.GetReplayAttributes(g_GameData.gui.replayDirectory),
|
||||
"isNetworked": false,
|
||||
|
@ -49,7 +49,7 @@ OsPath VisualReplay::GetDirectoryName()
|
||||
return OsPath(paths.UserData() / "replays" / engine_version);
|
||||
}
|
||||
|
||||
void VisualReplay::StartVisualReplay(const OsPath& directory)
|
||||
bool VisualReplay::StartVisualReplay(const OsPath& directory)
|
||||
{
|
||||
ENSURE(!g_NetServer);
|
||||
ENSURE(!g_NetClient);
|
||||
@ -58,10 +58,10 @@ void VisualReplay::StartVisualReplay(const OsPath& directory)
|
||||
const OsPath replayFile = VisualReplay::GetDirectoryName() / directory / L"commands.txt";
|
||||
|
||||
if (!FileExists(replayFile))
|
||||
return;
|
||||
return false;
|
||||
|
||||
g_Game = new CGame(false, false);
|
||||
g_Game->StartVisualReplay(replayFile);
|
||||
return g_Game->StartVisualReplay(replayFile);
|
||||
}
|
||||
|
||||
bool VisualReplay::ReadCacheFile(ScriptInterface& scriptInterface, JS::MutableHandleObject cachedReplaysObject)
|
||||
@ -154,8 +154,6 @@ JS::HandleObject VisualReplay::ReloadReplayCache(ScriptInterface& scriptInterfac
|
||||
break;
|
||||
|
||||
const OsPath replayFile = GetDirectoryName() / directory / L"commands.txt";
|
||||
if (!FileExists(replayFile))
|
||||
continue;
|
||||
|
||||
bool isNew = true;
|
||||
replayCacheMap::iterator it = fileList.find(directory);
|
||||
@ -163,6 +161,8 @@ JS::HandleObject VisualReplay::ReloadReplayCache(ScriptInterface& scriptInterfac
|
||||
{
|
||||
if (compareFiles)
|
||||
{
|
||||
if (!FileExists(replayFile))
|
||||
continue;
|
||||
CFileInfo fileInfo;
|
||||
GetFileInfo(replayFile, &fileInfo);
|
||||
if (fileInfo.Size() == it->second.second)
|
||||
@ -177,6 +177,8 @@ JS::HandleObject VisualReplay::ReloadReplayCache(ScriptInterface& scriptInterfac
|
||||
JS::RootedValue replayData(cx, LoadReplayData(scriptInterface, directory));
|
||||
if (replayData.isNull())
|
||||
{
|
||||
if (!FileExists(replayFile))
|
||||
continue;
|
||||
CFileInfo fileInfo;
|
||||
GetFileInfo(replayFile, &fileInfo);
|
||||
scriptInterface.Eval("({})", &replayData);
|
||||
|
@ -39,7 +39,7 @@ OsPath GetDirectoryName();
|
||||
/**
|
||||
* Replays the commands.txt file in the given subdirectory visually.
|
||||
*/
|
||||
void StartVisualReplay(const OsPath& directory);
|
||||
bool StartVisualReplay(const OsPath& directory);
|
||||
|
||||
/**
|
||||
* Reads the replay Cache file and parses it into a jsObject
|
||||
|
@ -23,9 +23,9 @@
|
||||
#include "ps/Profile.h"
|
||||
#include "ps/VisualReplay.h"
|
||||
|
||||
void JSI_VisualReplay::StartVisualReplay(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const CStrW& directory)
|
||||
bool JSI_VisualReplay::StartVisualReplay(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const CStrW& directory)
|
||||
{
|
||||
VisualReplay::StartVisualReplay(directory);
|
||||
return VisualReplay::StartVisualReplay(directory);
|
||||
}
|
||||
|
||||
bool JSI_VisualReplay::DeleteReplay(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const CStrW& replayFile)
|
||||
@ -67,7 +67,7 @@ void JSI_VisualReplay::RegisterScriptFunctions(ScriptInterface& scriptInterface)
|
||||
{
|
||||
scriptInterface.RegisterFunction<JS::Value, bool, &GetReplays>("GetReplays");
|
||||
scriptInterface.RegisterFunction<bool, CStrW, &DeleteReplay>("DeleteReplay");
|
||||
scriptInterface.RegisterFunction<void, CStrW, &StartVisualReplay>("StartVisualReplay");
|
||||
scriptInterface.RegisterFunction<bool, CStrW, &StartVisualReplay>("StartVisualReplay");
|
||||
scriptInterface.RegisterFunction<JS::Value, CStrW, &GetReplayAttributes>("GetReplayAttributes");
|
||||
scriptInterface.RegisterFunction<JS::Value, CStrW, &GetReplayMetadata>("GetReplayMetadata");
|
||||
scriptInterface.RegisterFunction<bool, CStrW, &HasReplayMetadata>("HasReplayMetadata");
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
namespace JSI_VisualReplay
|
||||
{
|
||||
void StartVisualReplay(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directory);
|
||||
bool StartVisualReplay(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directory);
|
||||
bool DeleteReplay(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& replayFile);
|
||||
JS::Value GetReplays(ScriptInterface::CxPrivate* pCxPrivate, bool compareFiles);
|
||||
JS::Value GetReplayAttributes(ScriptInterface::CxPrivate* pCxPrivate, const CStrW& directoryName);
|
||||
|
Loading…
Reference in New Issue
Block a user