Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

HBGames

Popup Window Version: 1.21
By: Regi


Introduction

This pop-up window displays a small line of text. It will disappear after a customizable time and won't inhibit movement, unlike Window_Message. Useful for small messages like "world map location unlocked" or "obtained item x [quantity]!"

Features
  • automatically adjusts window size to text and centers
  • disappears after a customizable time, and does not inhibit movement
  • can display items, icons, and quantity

Screenshots


shameless project plug~

Demo

none.

Script

Code:
#==============================================================================

# Popup Window by Regi

#------------------------------------------------------------------------------

# Version: 1.21  |  Last Updated: 12/30/11

#------------------------------------------------------------------------------

#  This pop-up window displays a small line of text. It will disappear after

#  a customizable time and won't inhibit movement, unlike Window_Message.

#------------------------------------------------------------------------------

#  Syntax: popup(text, item, value)

#==============================================================================

 

class Window_Popup < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(0, 200, 320, 64)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.visible = false

    self.z = 9998

#=============================================================================

# START CUSTOMIZATION

#=============================================================================

    self.back_opacity = 180                   # windowskin opacity

    self.contents.font.name = "Verdana"       # font name

    self.contents.font.color = normal_color   # font color

    self.contents.font.size = 22              # font size

  end

  

  #--------------------------------------------------------------------------

  # * Predefined text

  #--------------------------------------------------------------------------

  def get_text(index)

    return case index

    # Define shortcuts for displaying text

      when 0 then 'this is a popup window'

      when 1 then 'Journal entry added'

      when 2 then 'Acquired'

    end

#=============================================================================

# END CUSTOMIZATION

#=============================================================================

  end

  

  #--------------------------------------------------------------------------

  # * Draw popup text

  #--------------------------------------------------------------------------

  def refresh_popup_text(text, item, value)

    self.contents.clear

    # Get text

    if text.is_a?(String)

      string1 = text

    elsif text.is_a?(Integer)

      string1 = get_text(text)

    end

    if item.nil?

      string2 = ''

    else

      string2 = item.name + (value > 0 ? ' x ' + value.to_s : '')

    end

    # Adjust width (fit window to text)

    w1 = self.contents.text_size(string1).width

    w2 = self.contents.text_size(string2).width + (item.nil? ? 0 : 32)

    width = w1 + w2

    self.width = width + 40

    # Adjust x position (center window)

    self.x = (640 - self.width) / 2

    # Draw text

    self.contents = Bitmap.new(self.width - 32, height - 32)

    self.contents.draw_text(4, 0, w1, 32, string1)

    unless item.nil?

      # Draw icon and item value

      bitmap = RPG::Cache.icon(item.icon_name)

      self.contents.blt(w1 + 4, 4, bitmap, Rect.new(0, 0, 24, 24))

      self.contents.draw_text(w1 + 32, 0, w2, 32, string2)

    end

  end

  

  def refresh

    super

  end

  

end

 

#==============================================================================

# ** Scene Map

#==============================================================================

class Scene_Map

  

  attr_accessor :popup_window

  attr_accessor :popup_count

  

  alias reg_popup_main main

  def main

    # Create window

    @popup_window = Window_Popup.new

    @popup_count = -1

    # Normal Scene_Map processing

    reg_popup_main

    # Dispose of window

    @popup_window.dispose

  end

  

  alias reg_popup_update update

  def update

    reg_popup_update

    # Update counter

    if @popup_count >= 0

      @popup_count -= 1

    end

    if @popup_count == 0

      @popup_window.visible = false

    end

  end

end

 

#==============================================================================

# ** Interpreter (new command)

#==============================================================================

class Interpreter

  def popup(text = '', item = nil, value = 0)

    $scene.popup_window.refresh_popup_text(text, item, value)

    $scene.popup_window.visible = true

    $scene.popup_count = 80

  end

end

Auto-item popup add-on:
Code:
  #--------------------------------------------------------------------------

  # * Change Items

  #--------------------------------------------------------------------------

  def command_126

    # Get value to operate

    value = operate_value(@parameters[1], @parameters[2], @parameters[3])

    # Increase / decrease items

    $game_party.gain_item(@parameters[0], value)

    # Popup Window

    text = (value > 0 ? 'Acquired' : 'Lost')

    popup(text, $data_items[@parameters[0]], value)

    # Continue

    return true

  end

Instructions

To use the auto-item popup add-on, insert the scriptlet above line 126 in the main script. This will create a window that says "Acquired item" or "Lost item" whenever you used the Change Items command.

To create a popup window, use the following syntax through Call Script:
popup(text, item, value)

text = string you wish to display (in "quotations") or an integer for a predefined string
item = (optional): use $data_items[ID], replacing ID with the database item id.
value = (optional): the quantity of items. If set to 0, will not appear.

Example call:
popup("Journal entry added")
-> see above screenshot
popup(2, $data_items[1], 3)
-> "Acquired ID1 x 3"

To customize windowskin opacity, font name, color, size, and predefined text, go to line 23 and edit!

FAQ

none.

Compatibility

Should be compatible with most scripts, except for any that utilize "class Window_Popup".

Credits and Thanks

Thanks to BlueScope for feedback and helping to fix the width issue.

Author's Notes

fun fact: this is Regi's first script :!: (not including minor edits and scriptlets) inspired by the automatic "obtained item" window from MotW.

Terms and Conditions

Free for commercial and/or noncommercial use with credit! (If the former, a link to said game would be splendid.) Please do not redistribute to other forums without permission.

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top