Пример #1
0
  /** main loop - periodically copy location data into Lua and evaluate zone positions */
  private void mainloop() {
    try {
      while (!end) {
        try {
          if (gps.getLatitude() != player.position.latitude
              || gps.getLongitude() != player.position.longitude
              || gps.getAltitude() != player.position.altitude) {
            player.refreshLocation();
          }
          cartridge.tick();
        } catch (Exception e) {
          stacktrace(e);
        }

        try {
          Thread.sleep(1000);
        } catch (InterruptedException e) {
        }
      }
      if (log != null) log.close();
    } catch (Throwable t) {
      ui.end();
      stacktrace(t);
    } finally {
      instance = null;
      state = null;
      if (eventRunner != null) eventRunner.kill();
      eventRunner = null;
    }
  }
Пример #2
0
  /** thread's run() method that does all the work in the right order */
  public void run() {
    try {
      if (log != null)
        log.println(
            "-------------------\ncartridge "
                + gwcfile.name
                + " started (openWIG r"
                + VERSION
                + ")\n-------------------");
      prepareState();

      if (doRestore) restoreGame();
      else newGame();

      loglevel = LOG_PROP;

      ui.debugMsg("Starting game...\n");
      ui.start();

      player.refreshLocation();
      cartridge.callEvent(doRestore ? "OnRestore" : "OnStart", null);
      ui.refresh();
      eventRunner.unpause();

      mainloop();
    } catch (IOException e) {
      ui.showError("Could not load cartridge: " + e.getMessage());
    } catch (Throwable t) {
      stacktrace(t);
    } finally {
      ui.end();
    }
  }
Пример #3
0
  /** prepares Lua state and some bookkeeping */
  protected void prepareState() throws IOException {
    ui.debugMsg("Creating state...\n");
    state = new LuaState(System.out);

    /*write("Registering base libs...\n");
    BaseLib.register(state);
    MathLib.register(state);
    StringLib.register(state);
    CoroutineLib.register(state);
    OsLib.register(state);*/

    ui.debugMsg("Building javafunc map...\n");
    savegame.buildJavafuncMap(state.getEnvironment());

    ui.debugMsg("Loading stdlib...");
    InputStream stdlib = getClass().getResourceAsStream("/cz/matejcik/openwig/stdlib.lbc");
    LuaClosure closure = LuaPrototype.loadByteCode(stdlib, state.getEnvironment());
    ui.debugMsg("calling...\n");
    state.call(closure, null, null, null);
    stdlib.close();
    stdlib = null;

    ui.debugMsg("Registering WIG libs...\n");
    WherigoLib.register(state);

    ui.debugMsg("Building event queue...\n");
    eventRunner = new BackgroundRunner(true);
    eventRunner.setQueueListener(
        new Runnable() {
          public void run() {
            ui.refresh();
          }
        });
  }