public void launchMissile() throws InterruptedException { // create launcher destructor missile createMissile(); // sleep for launch time; sleep(Utils.LAUNCH_DURATION); if (toDestroy != null && toDestroy.isAlive() && !toDestroy.getIsHidden()) { // Throw event fireLaunchMissileEvent(currentMissile.getMissileId()); // Start missile and wait until he will finish to be able // to shoot anther one currentMissile.start(); currentMissile.join(); } else { if (toDestroy.getIsHidden()) { fireLauncherIsHiddenEvent(toDestroy.getLauncherId()); } else { fireLauncherNotExist(toDestroy.getLauncherId()); } } }