Class: GamePlay::Base

Inherits:
Object show all
Includes:
DisplayMessage, Input
Defined in:
docs/4_Systems_000_General_2_GamePlay__Base.rb,
docs/4_Systems_004_Message.rb

Overview

The base class of every GamePlay scene interface

Add some usefull functions like message display and scene switch and perform the most of the task for you.

Generic Process of a GamePlay::Base
  1. initialize
    1.1 Create the message box (if called by super(false) or super())
  2. main
  2.1 main_begin
    2.1.1 create_graphics
    2.1.2 Graphics.transition (fade in)
  2.2 loop { update }
  2.3 main_end
    2.3.1 Graphics.freeze (fade out)
    2.3.2 dispose : grep all the /viewport/ ivar and dispose them
  3. update (in GamePlay::BaseCleanUpdate)
    3.1 update message
    3.2 update inputs (if not locked by message)
    3.3 update mouse (if not locked by inputs)
    3.4 update graphics (always)

This class is inherited by GamePlay::BaseCleanUpdate

You usually will define your Scene the following way : “‘ruby

class Scene < BaseCleanUpdate
  # Create a new scene
  # @param args [Array] input arguments (do something better than *args)
  def initialize(*args)
    super() # <= the () force super to be called without argument because by `super` alone use the method arguments!
    # Initialize only the logic here (instance variable used for the state or data used by the UI)
  end

  # Called when input can be updated (put your input related code inside)
  # @return [Boolean] if the update can continue
  def update_inputs
    # ...
    return true
  end

  # Called when mouse can be updated (put your mouse related code inside, optional)
  # @param moved [Boolean] boolean telling if the mouse moved
  # @return [Boolean] if the update can continue
  def update_mouse(moved)
    return unless moved
    # ...
    return true
  end

  # Called each frame after message update and eventual mouse/input update
  # @return [Boolean] if the update can continue
  def update_graphics
    # ...
    return true
  end

  private

  # Create all the UI and thing related to graphics (super create the viewport)
  def create_graphics
    create_viewport # Necessary to make the scene work properly
    # ...
  end

  # (optional) Create the viewport (called by create_graphics from Base)
  def create_viewport
    super # < if you still use main with default settings, otherwise don't call super
    @sub_viewport = Viewport.create(...) # < Sub viewport for other stuff
  end
end

“‘

Note : You don’t have to define the dispose function with this. All the viewport that are stored inside ivar will be

automatically disposed if the variable name contains viewport.

Author:

  • Nuri Yuri

Constant Summary collapse

DEFAULT_TRANSITION =

Default fade type used to switch between interfaces

Returns:

  • (Symbol)

    :transition (for Graphics.freeze/transition), :fade_bk (for fade through black)

:transition
DEFAULT_TRANSITION_PARAMETER =

Parameters of the transition

Returns:

  • (Integer, Array)

    (usually the number of frame for the transition)

16

Constants included from Input

Input::ALIAS_KEYS, Input::AXIS_MAPPING, Input::AXIS_SENSITIVITY, Input::DEAD_ZONE, Input::Keyboard, Input::Keys, Input::NON_TRIGGER_ZONE, Input::REPEAT_COOLDOWN, Input::REPEAT_SPACE

Constants included from DisplayMessage

DisplayMessage::MESSAGE_ERROR, DisplayMessage::MESSAGE_PROCESS_ERROR

Instance Attribute Summary collapse

Attributes included from DisplayMessage

#message_window

Instance Method Summary collapse

Methods included from Input

dir4, dir8, get_text, joy_axis_position, press?, register_events, released?, repeat?, swap_states, trigger?

Methods included from DisplayMessage

#can_display_message_be_called?, #close_message_window, #display_message, #display_message_and_wait, #message_class, #message_processing?, #message_visible, #message_visible=

Constructor Details

#initialize(no_message = false, message_z = 20_000, *message_viewport_args) ⇒ Base

rubocop: disable Style/OptionalBooleanParameter Create a new GamePlay scene

Parameters:

  • no_message (Boolean) (defaults to: false)

    if the scene is created wihout the message management

  • message_z (Integer) (defaults to: 20_000)

    the z superiority of the message

  • message_viewport_args (Array)

    if empty : [:main, message_z] will be used.



102
103
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 102

def initialize(no_message = false, message_z = 20_000, *message_viewport_args)
end

Instance Attribute Details

#__last_sceneBase (readonly)

The scene that called this scene (usefull when this scene needs to return to the last scene)

Returns:



90
91
92
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 90

def __last_scene
  @__last_scene
end

#__result_processProc?

The process that is called when the call_scene method returns

Returns:

  • (Proc, nil)


93
94
95
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 93

def __result_process
  @__result_process
end

#runningBoolean

If the current scene is still running

Returns:

  • (Boolean)


96
97
98
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 96

def running
  @running
end

#viewportViewport? (readonly)

The viewport in which the scene is shown

Returns:



87
88
89
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 87

def viewport
  @viewport
end

Instance Method Details

#add_disposable(*args)

Add a disposable object to the “object_to_dispose” array

Parameters:



114
115
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 114

def add_disposable(*args)
end

#call_scene(name, *args, fade_out_params: nil, fade_in_params: nil, **kwarg, &result_process) ⇒ Boolean

Call an other scene

Parameters:

  • name (Class)

    the scene to call

  • args (Array)

    the parameter of the initialize method of the scene to call

  • fade_out_params (Array, nil) (defaults to: nil)

    params to send to the fade_out function (when this scene hides to call the next scene)

  • fade_in_params (Array, nil) (defaults to: nil)

    params to send to the fade_in function (when this scene comes back)

Returns:

  • (Boolean)

    if this scene can still run



133
134
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 133

def call_scene(name, *args, fade_out_params: nil, fade_in_params: nil, **kwarg, &result_process)
end

#dispose

Note:

@viewport and @message_window will be disposed.

Dispose the scene graphics.



110
111
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 110

def dispose
end

#find_parent(klass, fallback = self)

Find a parent scene

Parameters:

  • klass (Class<GamePlay::Base>)

    criteria passed to .is_a?()

  • fallback (GamePlay::Base) (defaults to: self)

    result if the scene was not found



150
151
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 150

def find_parent(klass, fallback = self)
end

#main

The GamePlay entry point (Must not be overridden).



117
118
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 117

def main
end

#return_to_scene(name, *args) ⇒ Boolean

Note:

This scene will stop running

Return to an other scene, create the scene if args.size > 0

Parameters:

  • name (Class)

    the scene to return to

  • args (Array)

    the parameter of the initialize method of the scene to call

Returns:

  • (Boolean)

    if the scene has successfully returned to the desired scene



140
141
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 140

def return_to_scene(name, *args)
end

#snap_to_bitmapTexture

Note:

You have to dispose the bitmap you got from this function

Take a snapshot of the scene

Returns:



145
146
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 145

def snap_to_bitmap
end

#updateBoolean

Scene update process

Returns:

  • (Boolean)

    if the scene should continue the update process or abort it (message/animation etc…)



106
107
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 106

def update
end

#visibleBoolean

Tell if the scene is visible

Returns:

  • (Boolean)


125
126
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 125

def visible
end

#visible=(value)

Change the viewport visibility of the scene

Parameters:

  • value (Boolean)


121
122
# File 'docs/4_Systems_000_General_2_GamePlay__Base.rb', line 121

def visible=(value)
end