Announcement

Collapse
No announcement yet.

Title Help

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Title Help

    Does anyone know how to make it so, you can't press any buttons until the title screen is done lading. Like, my title screen moves and such, sorta like Kingdom Hearts 2's title screen, so is there a way I can make it so, no matter what button you press none will do anything until its fully loaded. When I hit enter in the begining of my title, once it's done loading some parts turn black and un-transparent I have no idea why but..it does. So, thanks in advance.

    #2
    Re: Title Help

    I've found out how to wait for inputs until the title animation ends. If you haven't made changes to your Scene_Title script, replace it by this one entirely, or else you can copy only the parts that was modified/added.

    Code:
    #==============================================================================
    # ** Scene_Title
    #------------------------------------------------------------------------------
    #  This class performs title screen processing.
    #==============================================================================
    
    class Scene_Title
      #--------------------------------------------------------------------------
      # * Main Processing
      #--------------------------------------------------------------------------
      def main
        # If battle test
        if $BTEST
          battle_test
          return
        end
        # Load database
        $data_actors        = load_data("Data/Actors.rxdata")
        $data_classes       = load_data("Data/Classes.rxdata")
        $data_skills        = load_data("Data/Skills.rxdata")
        $data_items         = load_data("Data/Items.rxdata")
        $data_weapons       = load_data("Data/Weapons.rxdata")
        $data_armors        = load_data("Data/Armors.rxdata")
        $data_enemies       = load_data("Data/Enemies.rxdata")
        $data_troops        = load_data("Data/Troops.rxdata")
        $data_states        = load_data("Data/States.rxdata")
        $data_animations    = load_data("Data/Animations.rxdata")
        $data_tilesets      = load_data("Data/Tilesets.rxdata")
        $data_common_events = load_data("Data/CommonEvents.rxdata")
        $data_system        = load_data("Data/System.rxdata")
        # Make system object
        $game_system = Game_System.new
        # Make title graphic
        @sprite = Sprite.new
        @sprite.bitmap = RPG::Cache.title($data_system.title_name)
        # Play title BGM
        $game_system.bgm_play($data_system.title_bgm)
        # Stop playing ME and BGS
        Audio.me_stop
        Audio.bgs_stop
        # Execute transition
        Graphics.transition
        # Make Title timer (0 = ready to start, -1 = stopped)
        @title_timer = 0
        # Main loop
        loop do
          # If timer reached its value, set command window for player
          if @title_timer >= 200
            # Make command window
            s1 = "New Game"
            s2 = "Continue"
            s3 = "Shutdown"
            @command_window = Window_Command.new(192, [s1, s2, s3])
            @command_window.back_opacity = 160
            @command_window.x = 320 - @command_window.width / 2
            @command_window.y = 288
            # Continue enabled determinant
            # Check if at least one save file exists
            # If enabled, make @continue_enabled true; if disabled, make it false
            @continue_enabled = false
            for i in 0..3
              if FileTest.exist?("Save#{i+1}.rxdata")
                @continue_enabled = true
              end
            end
            # If continue is enabled, move cursor to "Continue"
            # If disabled, display "Continue" text in gray
            if @continue_enabled
              @command_window.index = 1
            else
              @command_window.disable_item(1)
            end
            @title_timer = -1
          else
            if @title_timer != -1 then @title_timer += 1 end
          end
          
          # Update game screen
          Graphics.update
          # Update input information
          Input.update
          # Frame update
          update
          # Abort loop if screen is changed
          if $scene != self
            break
          end
        end
        # Prepare for transition
        Graphics.freeze
        # Dispose of command window
        @command_window.dispose
        # Dispose of title graphic
        @sprite.bitmap.dispose
        @sprite.dispose
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        # If timer was stopped, allow update on command window
        if @title_timer == -1
          # Update command window
          @command_window.update
          # If C button was pressed
          if Input.trigger?(Input::C)
            # Branch by command window cursor position
            case @command_window.index
            when 0  # New game
              command_new_game
            when 1  # Continue
              command_continue
            when 2  # Shutdown
              command_shutdown
            end
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Command: New Game
      #--------------------------------------------------------------------------
      def command_new_game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Stop BGM
        Audio.bgm_stop
        # Reset frame count for measuring play time
        Graphics.frame_count = 0
        # Make each type of game object
        $game_temp          = Game_Temp.new
        $game_system        = Game_System.new
        $game_switches      = Game_Switches.new
        $game_variables     = Game_Variables.new
        $game_self_switches = Game_SelfSwitches.new
        $game_screen        = Game_Screen.new
        $game_actors        = Game_Actors.new
        $game_party         = Game_Party.new
        $game_troop         = Game_Troop.new
        $game_map           = Game_Map.new
        $game_player        = Game_Player.new
        # Set up initial party
        $game_party.setup_starting_members
        # Set up initial map position
        $game_map.setup($data_system.start_map_id)
        # Move player to initial position
        $game_player.moveto($data_system.start_x, $data_system.start_y)
        # Refresh player
        $game_player.refresh
        # Run automatic change for BGM and BGS set with map
        $game_map.autoplay
        # Update map (run parallel process event)
        $game_map.update
        # Switch to map screen
        $scene = Scene_Map.new
      end
      #--------------------------------------------------------------------------
      # * Command: Continue
      #--------------------------------------------------------------------------
      def command_continue
        # If continue is disabled
        unless @continue_enabled
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to load screen
        $scene = Scene_Load.new
      end
      #--------------------------------------------------------------------------
      # * Command: Shutdown
      #--------------------------------------------------------------------------
      def command_shutdown
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Fade out BGM, BGS, and ME
        Audio.bgm_fade(800)
        Audio.bgs_fade(800)
        Audio.me_fade(800)
        # Shutdown
        $scene = nil
      end
      #--------------------------------------------------------------------------
      # * Battle Test
      #--------------------------------------------------------------------------
      def battle_test
        # Load database (for battle test)
        $data_actors        = load_data("Data/BT_Actors.rxdata")
        $data_classes       = load_data("Data/BT_Classes.rxdata")
        $data_skills        = load_data("Data/BT_Skills.rxdata")
        $data_items         = load_data("Data/BT_Items.rxdata")
        $data_weapons       = load_data("Data/BT_Weapons.rxdata")
        $data_armors        = load_data("Data/BT_Armors.rxdata")
        $data_enemies       = load_data("Data/BT_Enemies.rxdata")
        $data_troops        = load_data("Data/BT_Troops.rxdata")
        $data_states        = load_data("Data/BT_States.rxdata")
        $data_animations    = load_data("Data/BT_Animations.rxdata")
        $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
        $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
        $data_system        = load_data("Data/BT_System.rxdata")
        # Reset frame count for measuring play time
        Graphics.frame_count = 0
        # Make each game object
        $game_temp          = Game_Temp.new
        $game_system        = Game_System.new
        $game_switches      = Game_Switches.new
        $game_variables     = Game_Variables.new
        $game_self_switches = Game_SelfSwitches.new
        $game_screen        = Game_Screen.new
        $game_actors        = Game_Actors.new
        $game_party         = Game_Party.new
        $game_troop         = Game_Troop.new
        $game_map           = Game_Map.new
        $game_player        = Game_Player.new
        # Set up party for battle test
        $game_party.setup_battle_test_members
        # Set troop ID, can escape flag, and battleback
        $game_temp.battle_troop_id = $data_system.test_troop_id
        $game_temp.battle_can_escape = true
        $game_map.battleback_name = $data_system.battleback_name
        # Play battle start SE
        $game_system.se_play($data_system.battle_start_se)
        # Play battle BGM
        $game_system.bgm_play($game_system.battle_bgm)
        # Switch to battle screen
        $scene = Scene_Battle.new
      end
    end
    Explanation:
    The idea is to add a timer for the command window. So your graphics, music and sounds will all update in the loop, but not the command window with the choices New game, Continue... Once the timer reaches the desired value (the time needed for your title animation) the command window is created and added with the other updates in the loop.

    So basically what I did was creating an instance variable called @title_timer (line 44). Then I cut all the command window code that was in the main method. In the "loop do" of the main method (line 46), I added a "if" condition and pasted all the command window code. This condition is where you set the timer value (line 48: if @title_timer >= 200). In scripts updates are in 1/40 seconds. If your animation lasts 5 seconds, then the value would be 200 for the condition. So the condition structure is:

    If timer has reached the value that you set here
    do command window code
    stop the timer (value –1)
    else
    increment timer by 1 if timer is not stopped
    end

    The other change in the script is the update method (line 100). The update method is used to update the command window at every loop in the main method, but now it must update only when the timer has reached its value. When the timer reaches its value, I make it stop by setting it to minus 1. So I simply added a condition at line 102 where the timer must be stopped in order to update the command window.

    if @title_timer == -1
    update command window
    end


    Originally posted by RUEIK View Post
    When I hit enter in the begining of my title, once it's done loading some parts turn black and un-transparent I have no idea why but..it does. So, thanks in advance.
    I’m not sure what’s going on here, it depends on what you use for your graphics. If some parts are not transparent, check the blending, opacity, the order in which you place your graphics. Some graphics, like images, can have higher priority than others… but I can’t tell the exact problem.

    Comment


      #3
      Re: Title Help

      Thanks! It works, and as for the black screen happening I fixed that too. Thanks again.

      Comment

      Working...
      X