Ticket #3440: t3440_simplify_and_empty_JS_Interface_v1.patch

File t3440_simplify_and_empty_JS_Interface_v1.patch, 3.9 KB (added by elexis, 9 years ago)

Moves StartVisualReplay from JSInterface_VisualReplay.cpp to VisualReplay.cpp, so that this file contains all the logic. Also uses early return and eliminates a variable in AutostartVisualReplay.

  • source/ps/GameSetup/GameSetup.cpp

    bool AutostartVisualReplay(const std::st  
    14831483    g_Game->StartVisualReplay(replayFile);
    14841484
    14851485    // TODO: Non progressive load can fail - need a decent way to handle this
    14861486    LDR_NonprogressiveLoad();
    14871487
    1488     PSRETURN ret = g_Game->ReallyStartGame();
    1489     ENSURE(ret == PSRETURN_OK);
     1488    ENSURE(g_Game->ReallyStartGame() == PSRETURN_OK);
    14901489
    14911490    ScriptInterface& scriptInterface = g_Game->GetSimulation2()->GetScriptInterface();
    14921491
    14931492    InitPs(true, L"page_session.xml", &scriptInterface, JS::UndefinedHandleValue);
    14941493    return true;
  • source/ps/VisualReplay.cpp

     
    2020#include "VisualReplay.h"
    2121#include "graphics/GameView.h"
    2222#include "gui/GUIManager.h"
    2323#include "lib/allocators/shared_ptr.h"
    2424#include "lib/utf8.h"
     25#include "network/NetClient.h"
     26#include "network/NetServer.h"
    2527#include "ps/CLogger.h"
    2628#include "ps/Filesystem.h"
    2729#include "ps/Game.h"
    2830#include "ps/Pyrogenesis.h"
    2931#include "ps/Replay.h"
    const bool debugParser = false;  
    4244OsPath VisualReplay::GetDirectoryName()
    4345{
    4446    return OsPath(psLogDir() / L"sim_log");
    4547}
    4648
     49void VisualReplay::StartVisualReplay(CStrW directory)
     50{
     51    ENSURE(!g_NetServer);
     52    ENSURE(!g_NetClient);
     53    ENSURE(!g_Game);
     54
     55    const OsPath replayFile = VisualReplay::GetDirectoryName() / directory / L"commands.txt";
     56
     57    if (!FileExists(replayFile))
     58        return;
     59
     60    g_Game = new CGame(false, false);
     61
     62    // TODO: support unicode when OsString() is implemented for windows
     63    g_Game->StartVisualReplay(utf8_from_wstring(replayFile.string()));
     64}
     65
    4766JS::Value VisualReplay::GetReplays(ScriptInterface& scriptInterface)
    4867{
    4968    TIMER(L"GetReplays");
    5069    JSContext* cx = scriptInterface.GetContext();
    5170    JSAutoRequest rq(cx);
  • source/ps/VisualReplay.h

    namespace VisualReplay  
    3535 * @return OsPath the absolute file path
    3636 */
    3737OsPath GetDirectoryName();
    3838
    3939/**
     40 * Replays the commands.txt file in the given replay visually.
     41 */
     42void StartVisualReplay(CStrW directory);
     43
     44/**
    4045 * Get a list of replays to display in the GUI.
    4146 *
    4247 * @param scriptInterface the ScriptInterface in which to create the return data.
    4348 * @return array of objects containing replay data
    4449 */
  • source/ps/scripting/JSInterface_VisualReplay.cpp

     
    1515 * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>.
    1616 */
    1717
    1818#include "precompiled.h"
    1919
    20 #include "network/NetClient.h"
    21 #include "network/NetServer.h"
    22 #include "ps/Filesystem.h"
    23 #include "ps/Game.h"
    2420#include "ps/VisualReplay.h"
    2521#include "ps/scripting/JSInterface_VisualReplay.h"
    2622
    2723void JSI_VisualReplay::StartVisualReplay(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), CStrW directory)
    2824{
    29     ENSURE(!g_NetServer);
    30     ENSURE(!g_NetClient);
    31     ENSURE(!g_Game);
    32 
    33     const OsPath replayFile = VisualReplay::GetDirectoryName() / directory / L"commands.txt";
    34     if (FileExists(replayFile))
    35     {
    36         g_Game = new CGame(false, false);
    37         // TODO: support unicode when OsString() is implemented for windows
    38         g_Game->StartVisualReplay(utf8_from_wstring(replayFile.string()));
    39     }
     25    VisualReplay::StartVisualReplay(directory);
    4026}
    4127
    4228bool JSI_VisualReplay::DeleteReplay(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), CStrW replayFile)
    4329{
    4430    return VisualReplay::DeleteReplay(replayFile);