Ejemplo n.º 1
0
  private void init() {
    initInput();
    initCharacters();

    soundPlayer = new SoundPlayer();
    if (soundPlayer.getSoundSystem() == null) soundPlayer = new NoSoundPlayer();

    soundPlayer.startTitleMusic();

    try {
      emptyCursor =
          Toolkit.getDefaultToolkit()
              .createCustomCursor(
                  new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB), new Point(0, 0), "empty");
    } catch (RuntimeException e) {
      e.printStackTrace();
    }
    setFocusTraversalKeysEnabled(false);
    requestFocus();

    // hide cursor, since we're drawing our own one
    setCursor(emptyCursor);
  }
Ejemplo n.º 2
0
  public void handleAction(int id) {
    switch (id) {
      case TitleMenu.RETURN_TO_TITLESCREEN:
        clearMenus();
        level = null;
        TitleMenu menu = new TitleMenu(GAME_WIDTH, GAME_HEIGHT);
        addMenu(menu);
        this.nextMusicInterval = 0;
        soundPlayer.stopBackgroundMusic();
        soundPlayer.startTitleMusic();
        break;

      case TitleMenu.START_GAME_ID:
        clearMenus();
        isMultiplayer = false;
        chat.clear();

        localId = 0;
        MojamComponent.localTeam = Team.Team1;
        synchronizer = new TurnSynchronizer(this, null, 0, 1);
        synchronizer.setStarted(true);

        createLevel(TitleMenu.level, TitleMenu.defaultGameMode);
        soundPlayer.stopBackgroundMusic();
        break;

      case TitleMenu.SELECT_LEVEL_ID:
        addMenu(new LevelSelect(false));
        break;

      case TitleMenu.SELECT_HOST_LEVEL_ID:
        addMenu(new LevelSelect(true));
        break;
        /*
         * case TitleMenu.UPDATE_LEVELS:
         * GuiMenu menu = menuStack.pop();
         * if (menu instanceof LevelSelect) { addMenu(new
         * LevelSelect(((LevelSelect) menu).bHosting)); } else { addMenu(new
         * LevelSelect(false)); } }
         */
      case TitleMenu.HOST_GAME_ID:
        addMenu(new HostingWaitMenu());
        isMultiplayer = true;
        isServer = true;
        chat.clear();
        try {
          if (isServer) {
            localId = 0;
            MojamComponent.localTeam = Team.Team1;
            serverSocket = new ServerSocket(Options.getAsInteger(Options.MP_PORT, 3000));
            serverSocket.setSoTimeout(1000);

            hostThread =
                new Thread() {

                  @Override
                  public void run() {
                    boolean fail = true;
                    try {
                      while (!isInterrupted()) {
                        Socket socket = null;
                        try {
                          socket = serverSocket.accept();
                        } catch (SocketTimeoutException e) {
                        }
                        if (socket == null) {
                          System.out.println("Waiting for player to connect");
                          continue;
                        }
                        fail = false;
                        packetLink = new NetworkPacketLink(socket);
                        createServerState = 1;
                        break;
                      }
                    } catch (Exception e) {
                      e.printStackTrace();
                    }
                    if (fail) {
                      try {
                        serverSocket.close();
                      } catch (IOException e) {
                      }
                    }
                  };
                };
            hostThread.start();
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
        break;

      case TitleMenu.JOIN_GAME_ID:
        addMenu(new JoinGameMenu());
        break;

      case TitleMenu.CANCEL_JOIN_ID:
        popMenu();
        if (hostThread != null) {
          hostThread.interrupt();
          hostThread = null;
        }
        break;

      case TitleMenu.PERFORM_JOIN_ID:
        menuStack.clear();
        isMultiplayer = true;
        isServer = false;
        chat.clear();

        String[] data = TitleMenu.ip.trim().split(":");
        String ip = data[0];
        Integer port =
            (data.length > 1)
                ? Integer.parseInt(data[1])
                : Options.getAsInteger(Options.MP_PORT, 3000);

        try {
          localId = 1;
          MojamComponent.localTeam = Team.Team2;
          packetLink = new ClientSidePacketLink(ip, port);
          synchronizer = new TurnSynchronizer(this, packetLink, localId, 2);
          packetLink.setPacketListener(this);
        } catch (Exception e) {
          e.printStackTrace();
          // System.exit(1);
          addMenu(new TitleMenu(GAME_WIDTH, GAME_HEIGHT));
        }
        break;

      case TitleMenu.HOW_TO_PLAY:
        addMenu(new HowToPlayMenu(level != null));
        break;

      case TitleMenu.OPTIONS_ID:
        addMenu(new OptionsMenu(level != null));
        break;

      case TitleMenu.SELECT_DIFFICULTY_ID:
        addMenu(new DifficultySelect(false));
        break;

      case TitleMenu.SELECT_DIFFICULTY_HOSTING_ID:
        addMenu(new DifficultySelect(true));
        break;

      case TitleMenu.KEY_BINDINGS_ID:
        addMenu(new KeyBindingsMenu(keys, inputHandler));
        break;

      case TitleMenu.LEVEL_EDITOR_ID:
        addMenu(new LevelEditorMenu());
        break;

      case TitleMenu.EXIT_GAME_ID:
        System.exit(0);
        break;

      case TitleMenu.RETURN_ID:
        synchronizer.addCommand(new PauseCommand(false));
        keys.tick();
        break;

      case TitleMenu.BACK_ID:
        popMenu();
        break;

      case TitleMenu.CREDITS_ID:
        addMenu(new CreditsScreen(GAME_WIDTH, GAME_HEIGHT));
        break;

      case TitleMenu.CHARACTER_ID:
        addMenu(new CharacterSelectionMenu());
        break;
    }
  }