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.

Silent Steps CMS - Fully animeted menu system

SilentSteps Menu System
Version: 1.0

Introduction

Hi everyone, first of all, i'm from argentina, and i dont speak english very well, i hope everyone can understand a word of what i say':|
This is my first post, so i hope i do this right-_-

Well, i made a menu system and i like to share it with you. (this is my first script so dont expect much;) )

Heres is a screen of it




Anyway, if you know a little about rgss you can obtain this



Script

Heres the code


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

# ** SilentMenu

# Version: 1.0

# Thanks to Rudy Guillan, Sayonara-P, TDS, Le?n y Soramaro. 

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

# CMS fully animated, transparent windows, map background, transition

# between scenes and game completion window.

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

 

 

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

# ** Window_Completado

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

#  Esta es la ventana que muestra el porcentaje completo del juego.

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

 

 

class Window_Completado < Window_Base

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

  # * Inicializacion de objetos

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

 def initialize

  super(0, 0, 160, 64)

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

  refresh

 end

 

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

  # * Refresco

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

   def refresh

    self.contents.clear

    self.contents.font.name = "Tahoma"

    self.contents.font.size = 14

    self.contents.font.color = system_color

    self.contents.draw_text(0, 0, 80, 32, "Completado ")

    self.contents.font.color = normal_color

    #================#Define aqui la variable#================#

    self.contents.draw_text(106, 0, 60, 32, $game_variables[10].to_s + "%")

    #================#Por defecto es la N. 10#================#

  end

end

 

 

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

# ** Window_Oro

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

#  Esta ventana muestra el oro del grupo.

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

 

class Window_Oro < Window_Base

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

  # * Inicializacion de objetos

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

  def initialize

    super(0, 0, 160, 64)

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

    refresh

  end

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

  # * Actualizacion

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

  def refresh

    self.contents.clear

    cx = contents.text_size($data_system.words.gold).width

    self.contents.font.color = normal_color

    self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)

    self.contents.font.color = system_color

    self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)

  end

end

 

 

 

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

# ** Window_Localizaci?n

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

#  Esta es la ventana que muestra el nombre del mapa

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

 

class Window_Localizacion< Window_Base

  

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

  # * Inicializacion de objetos

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

 def initialize

  super(0, 0, 480, 64)

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

   self.contents.font.name = "Tahoma"

   self.contents.font.size = 18

   refresh

 end

 

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

  # * Actualizacion

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

 def refresh

   self.contents.clear

   data = load_data("Data/MapInfos.rxdata")

   self.contents.font.color = system_color

   self.contents.draw_text(0, 0, 248, 32, "Localizaci?n:")

   self.contents.font.color = normal_color

   self.contents.draw_text(90, 0, 208, 32, data[$game_map.map_id].name, 2)

 end

 

end

 

 

 

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

# ** Window_MenuStatus

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

#  Esta es la ventana que muestra a los miembros del grupo.

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

 

class Window_MenuStatus < Window_Selectable

  

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

  # * Inicializacion de objetos

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

  def initialize

    super(0, 0, 480, 296)

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

    refresh

    self.active = false

    self.index = -1

  end

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

  # * Actualizacion

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

  def refresh

    self.contents.font.name = "Tahoma"

    self.contents.font.size = 18

    self.contents.clear

    @item_max = $game_party.actors.size

    for i in 0...$game_party.actors.size

      x = 64

      y = i * 64

      actor = $game_party.actors[i]

      draw_actor_graphic(actor, 32, y + 60)

      draw_actor_name(actor, x, y)

      draw_actor_class(actor, x + 144, y)

      draw_actor_level(actor, x, y + 16)

      draw_actor_state(actor, x + 90, y + 16)

      draw_actor_exp(actor, x, y + 32)

      draw_actor_hp(actor, 32+230, y+16)

      draw_actor_sp(actor, 32+230, y+32)

    end

  end

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

  # * Renovacion del rectangulo de cursor

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

  def update_cursor_rect

    if @index < 0

      self.cursor_rect.empty

    else

      self.cursor_rect.set(0, @index * 64, self.width - 32, 64) 

    end

  end

end

 

 

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

# ** Window_Ayuda

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

#  Esta es la ventana que muestra la ayuda sobre cada comando.

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

 

class Window_Ayuda < Window_Base  

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

  # * Inicializacion de objetos

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

def initialize 

 super(0, 0, 480, 64)

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

 self.contents.font.name = "Tahoma"  

 self.contents.font.size = 18

end

 

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

  # * Actualizacion

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

def update(help_text) 

  self.contents.clear 

  self.contents.draw_text(0, 0, 440, 32, help_text) 

end

 

end 

 

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

# ** Scene_Menu

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

#  Esta es la escena del menu.

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

 

class Scene_Menu

  

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

  # * Inicializacion de objetos

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

def initialize(menu_index = 0)

   @menu_index = menu_index 

 end

  

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

  # * Metodo principal

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

def main

  @spriteset = Spriteset_Map.new

  viewport = Viewport.new(0, 0, 640, 480)

  viewport.tone = Tone.new(0, 0, 0,166)

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

  # * Llamado a las ventanas del menu

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

  @window_Completado = Window_Completado.new

  @window_Completado.back_opacity = 130

  @window_Completado.x = 480 + 160

  @window_Completado.y = 392

  @window_Oro = Window_Oro.new

  @window_Oro.back_opacity = 130

  @window_Oro.x = 480 + 160 

  @window_Oro.y = 30

  @window_Localizacion = Window_Localizacion.new

  @window_Localizacion.back_opacity = 130

  @window_Localizacion.y = 392 + 190 

  @status_window = Window_MenuStatus.new

  @status_window.back_opacity = 130

  @status_window.x = -480

  @status_window.y = 95

  @window_Ayuda = Window_Ayuda.new

  @window_Ayuda.back_opacity = 130

  @window_Ayuda.y = -80

  @window_Ayuda.update(" ")

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

  # * Creaci?n de la ventana de comandos

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

  s1 = $data_system.words.item

  s2 = $data_system.words.skill

  s3 = $data_system.words.equip

  s4 = "Estado"

  s5 = "Guardar"

  s6 = "Salir"

  @command_window = Window_Command.new(160, [s1,s2,s3,s4,s5,s6]) 

  @command_window.x = 480 + 160

  @command_window.y = 95

  @command_window.height = 296

  @command_window.index = @menu_index 

  @command_window.back_opacity = 130

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

  # * Transici?n

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

  Graphics.transition(8, "Graphics/Transitions/004-Blind04")

  loop do

   Graphics.update

   Input.update

   update 

   if $scene != self

    break

   end

 end 

 

  Graphics.freeze

  @spriteset.dispose

  viewport.dispose

  @window_Oro.dispose

  @window_Completado.dispose

  @window_Localizacion.dispose

  @status_window.dispose 

  @command_window.dispose 

  @window_Ayuda.dispose 

end

 

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

  # * Animacio?n de Entrada

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

  def animacion_entrada

 

  @command_window.x -= 10 if @command_window.x > 480    

  @window_Completado.x -= 10 if @window_Completado.x > 480    

  @window_Localizacion.y -= 10 if @window_Localizacion.y > 392

  @window_Oro.x -= 10 if @window_Oro.x > 480    

  @status_window.x += 20 if @status_window.x < 0

  @window_Ayuda.y += 10 if @window_Ayuda.y < 30

  

  end

 

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

  # * Animaci?n de Salida

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

  def animacion_salida

 

  @command_window.x += 10 if @command_window.x < 640    

  @window_Completado.x += 10 if @window_Completado.x < 640   

  @window_Localizacion.y += 10 if @window_Localizacion.y < 480

  @window_Oro.x += 10 if @window_Oro.x < 640    

  @status_window.x -= 20 if @status_window.x > -480

  @window_Ayuda.y -= 10 if @window_Ayuda.y > -64

  

  if @status_window.x <= -480

    $scene = Scene_Map.new

    $game_map.autoplay   

    return

  end

  

  

  end

  

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

  # * Actualizacion de Frames

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

 

  def update

    

    if @intro == nil

     animacion_entrada

   end

   

  if @salida == true     

    animacion_salida

    @intro = false

  end

   

    

    @status_window.update

    @window_Localizacion.update

    @window_Oro.update

    @window_Completado.update

    @command_window.update

 

 

case @command_window.index 

  when 0 

    @window_Ayuda.update("Observa y administra los objetos que tiene tu grupo.")

  when 1

    @window_Ayuda.update("Observa las habilidades de cada uno de tus personajes.")

  when 2

    @window_Ayuda.update("Observa y administra el equipamiento de cada personaje.")

  when 3

    @window_Ayuda.update("Obten informaci?n detallada sobre personaje.") 

  when 4

    @window_Ayuda.update("Guarda tu partida actual para continuar mas tarde.") 

  when 5

    @window_Ayuda.update("Abre el menu de fin del juego y selecciona una opcion.") 

end  

 

 

    if @command_window.active

      update_command

      return

    end

    if @status_window.active

      update_status

      return

    end

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

end# fin del update

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

 

 

def update_command

if Input.trigger?(Input::C) 

case @command_window.index 

  when 0 

   $game_system.se_play($data_system.decision_se)

   $scene = Scene_Item.new

  when 1

      $game_system.se_play($data_system.decision_se)

      @command_window.active = false

      @status_window.active = true

      @status_window.index = 0

  when 2

      $game_system.se_play($data_system.decision_se)

      @command_window.active = false

      @status_window.active = true

      @status_window.index = 0

  when 3

      $game_system.se_play($data_system.decision_se)

      @command_window.active = false

      @status_window.active = true

      @status_window.index = 0

  when 4

      if $game_system.save_disabled

          $game_system.se_play($data_system.buzzer_se)

        return

      end

      $game_system.se_play($data_system.decision_se)

    $scene = Scene_Save.new

  when 5  

      $game_system.se_play($data_system.decision_se)

      $scene = Scene_End.new

  end  

 end 

 

 if Input.trigger?(Input::B) 

  $game_system.se_play($data_system.cancel_se)

  @salida = true

  return

end

end

#==#Fin de la Scene#==#

end

#==#Fin de la Scene#==#

Instructions

Just put it above Main and run the game^_^
To add a number to the game completion window, make a variable operation and put the number to the variable numer 10.

FAQ

None yet.

Compatibility

It should work with everything, if you find any problem, please post it.

Credits and Thanks

I'm not asking for credits, but you cant say you made the script:-/

Author's Notes

Please tell what you think about it:thumb:


Terms and Conditions
You can freely use this menu system:yes:

Goodbye and goodluck:)
 
Sure.

Here's a translated version.


Code:
#==============================================================================
# ** SilentMenu
# Version: 1.0
# Gracias a Rudy Guillan, Sayonara-P, TDS, Le?n y Soramaro. 
#------------------------------------------------------------------------------
# CMS totalmente animado, ventanas transparentes, mapa de fondo, transici?n
# entre escenas y ventana de Completado.
#==============================================================================


#==============================================================================
# ** Window_Completado
#------------------------------------------------------------------------------
#  Esta es la ventana que muestra el porcentaje completo del juego.
#==============================================================================

class Window_Completado < Window_Base
  #--------------------------------------------------------------------------
  # * Inicializacion de objetos
  #--------------------------------------------------------------------------
 def initialize
  super(0, 0, 160, 64)
  self.contents = Bitmap.new(width - 32, height - 32)
  refresh
 end

  #--------------------------------------------------------------------------
  # * Refresco
  #--------------------------------------------------------------------------  
   def refresh
    self.contents.clear
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 14
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 80, 32, "Complete ")
    self.contents.font.color = normal_color
    #================#Define aqui la variable#================#
    self.contents.draw_text(106, 0, 60, 32, $game_variables[10].to_s + "%")
    #================#Por defecto es la N. 10#================#
  end
end


#==============================================================================
# ** Window_Oro
#------------------------------------------------------------------------------
#  Esta ventana muestra el oro del grupo.
#==============================================================================

class Window_Oro < Window_Base
  #--------------------------------------------------------------------------
  # * Inicializacion de objetos
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Actualizacion
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
  end
end



#==============================================================================
# ** Window_Localizaci?n
#------------------------------------------------------------------------------
#  Esta es la ventana que muestra el nombre del mapa
#==============================================================================

class Window_Localizacion< Window_Base
  
  #--------------------------------------------------------------------------
  # * Inicializacion de objetos
  #--------------------------------------------------------------------------
 def initialize
  super(0, 0, 480, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = "Tahoma"
   self.contents.font.size = 18
   refresh
 end
 
  #--------------------------------------------------------------------------
  # * Actualizacion
  #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   data = load_data("Data/MapInfos.rxdata")
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, 248, 32, "Location:")
   self.contents.font.color = normal_color
   self.contents.draw_text(90, 0, 208, 32, data[$game_map.map_id].name, 2)
 end

end



#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  Esta es la ventana que muestra a los miembros del grupo.
#==============================================================================

class Window_MenuStatus < Window_Selectable
  
  #--------------------------------------------------------------------------
  # * Inicializacion de objetos
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 480, 296)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Actualizacion
  #--------------------------------------------------------------------------
  def refresh
    self.contents.font.name = "Tahoma"
    self.contents.font.size = 18
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 64
      y = i * 64
      actor = $game_party.actors[i]
      draw_actor_graphic(actor, 32, y + 60)
      draw_actor_name(actor, x, y)
      draw_actor_class(actor, x + 144, y)
      draw_actor_level(actor, x, y + 16)
      draw_actor_state(actor, x + 90, y + 16)
      draw_actor_exp(actor, x, y + 32)
      draw_actor_hp(actor, 32+230, y+16)
      draw_actor_sp(actor, 32+230, y+32)
    end
  end
  #--------------------------------------------------------------------------
  # * Renovacion del rectangulo de cursor
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 64, self.width - 32, 64) 
    end
  end
end


#==============================================================================
# ** Window_Ayuda
#------------------------------------------------------------------------------
#  Esta es la ventana que muestra la ayuda sobre cada comando.
#==============================================================================

class Window_Ayuda < Window_Base  
  #--------------------------------------------------------------------------
  # * Inicializacion de objetos
  #--------------------------------------------------------------------------  
def initialize 
 super(0, 0, 480, 64)
 self.contents = Bitmap.new(width-32, height-32)
 self.contents.font.name = "Tahoma"  
 self.contents.font.size = 18
end

  #--------------------------------------------------------------------------
  # * Actualizacion
  #--------------------------------------------------------------------------
def update(help_text) 
  self.contents.clear 
  self.contents.draw_text(0, 0, 440, 32, help_text) 
end

end 

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta es la escena del menu.
#==============================================================================

class Scene_Menu
  
  #--------------------------------------------------------------------------
  # * Inicializacion de objetos
  #--------------------------------------------------------------------------  
def initialize(menu_index = 0)
   @menu_index = menu_index 
 end
  
  #--------------------------------------------------------------------------
  # * Metodo principal
  #--------------------------------------------------------------------------  
def main
    @sprite = Spriteset_Map.new
    
  viewport = Viewport.new(0, 0, 640, 480)
  viewport.tone = Tone.new(0, 0, 0,166)
  #--------------------------------------------------------------------------
  # * Llamado a las ventanas del menu
  #--------------------------------------------------------------------------  
  @window_Completado = Window_Completado.new
  @window_Completado.back_opacity = 130
  @window_Completado.x = 480 + 160
  @window_Completado.y = 392
  @window_Oro = Window_Oro.new
  @window_Oro.back_opacity = 130
  @window_Oro.x = 480 + 160 
  @window_Oro.y = 30
  @window_Localizacion = Window_Localizacion.new
  @window_Localizacion.back_opacity = 130
  @window_Localizacion.y = 392 + 190 
  @status_window = Window_MenuStatus.new
  @status_window.back_opacity = 130
  @status_window.x = -480
  @status_window.y = 95
  @window_Ayuda = Window_Ayuda.new
  @window_Ayuda.back_opacity = 130
  @window_Ayuda.y = -80
  @window_Ayuda.update(" ")
  #--------------------------------------------------------------------------
  # * Creaci?n de la ventana de comandos
  #--------------------------------------------------------------------------  
  s1 = $data_system.words.item
  s2 = $data_system.words.skill
  s3 = $data_system.words.equip
  s4 = "Status"
  s5 = "Save"
  s6 = "End Game"
  @command_window = Window_Command.new(160, [s1,s2,s3,s4,s5,s6]) 
  @command_window.x = 480 + 160
  @command_window.y = 95
  @command_window.height = 296
  @command_window.index = @menu_index 
  @command_window.back_opacity = 130
  #--------------------------------------------------------------------------
  # * Transici?n
  #--------------------------------------------------------------------------  
  Graphics.transition(8, "Graphics/Transitions/004-Blind04")
  loop do
   Graphics.update
   Input.update
   update 
   if $scene != self
    break
   end
 end 
 
  Graphics.freeze
  viewport.dispose
  @window_Oro.dispose
  @window_Completado.dispose
  @window_Localizacion.dispose
  @status_window.dispose 
  @command_window.dispose 
  @window_Ayuda.dispose
  @sprite.dispose
  


end

  #--------------------------------------------------------------------------
  # * Animacio?n de Entrada
  #--------------------------------------------------------------------------
  def animacion_entrada   
    
  @command_window.x -= 10 if @command_window.x > 480    
  @window_Completado.x -= 10 if @window_Completado.x > 480    
  @window_Localizacion.y -= 10 if @window_Localizacion.y > 392
  @window_Oro.x -= 10 if @window_Oro.x > 480    
  @status_window.x += 20 if @status_window.x < 0
  @window_Ayuda.y += 10 if @window_Ayuda.y < 30
  
  end

  #--------------------------------------------------------------------------
  # * Animaci?n de Salida
  #--------------------------------------------------------------------------
  def animacion_salida

  @command_window.x += 10 if @command_window.x < 640    
  @window_Completado.x += 10 if @window_Completado.x < 640   
  @window_Localizacion.y += 10 if @window_Localizacion.y < 480
  @window_Oro.x += 10 if @window_Oro.x < 640    
  @status_window.x -= 20 if @status_window.x > -480
  @window_Ayuda.y -= 10 if @window_Ayuda.y > -64
  
  if @status_window.x <= -480
    $scene = Scene_Map.new
    $game_map.autoplay   
    return
  end
  
  
  end
  
  #--------------------------------------------------------------------------
  # * Actualizacion de Frames
  #--------------------------------------------------------------------------

  def update
    
    if @intro == nil
     animacion_entrada
   end
   
  if @salida == true     
    animacion_salida
    @intro = false
  end
   
    
    @status_window.update
    @window_Localizacion.update
    @window_Oro.update
    @window_Completado.update
    @command_window.update


case @command_window.index 
  when 0 
    @window_Ayuda.update("View and use current objects.")    
  when 1
    @window_Ayuda.update("View and use current character abilities.")    
  when 2
    @window_Ayuda.update("View and change current character equipment.")    
  when 3
    @window_Ayuda.update("View detailed information about current character.")     
  when 4
    @window_Ayuda.update("Save current file to continue on later")     
  when 5
    @window_Ayuda.update("Choose from the ending game options.")     
end  


    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
#-----------------------------------#    
end# fin del update
#-----------------------------------#


def update_command
if Input.trigger?(Input::C) 
case @command_window.index 
  when 0 
   $game_system.se_play($data_system.decision_se)
   $scene = Scene_Item.new
  when 1
      $game_system.se_play($data_system.decision_se)
      @command_window.active = false
      @status_window.active = true
      @status_window.index = 0
  when 2
      $game_system.se_play($data_system.decision_se)
      @command_window.active = false
      @status_window.active = true
      @status_window.index = 0
  when 3
      $game_system.se_play($data_system.decision_se)
      @command_window.active = false
      @status_window.active = true
      @status_window.index = 0
  when 4
      if $game_system.save_disabled
          $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
    $scene = Scene_Save.new
  when 5  
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_End.new
  end  
 end 

 if Input.trigger?(Input::B) 
  $game_system.se_play($data_system.cancel_se)
  @salida = true
  return
end
end
#==#Fin de la Scene#==#
end
#==#Fin de la Scene#==#


Hope you like it =D
 
Sorry to revive the dead thread -_-....but.....

How can I add an option to the menu that calls a script?  Cuz I want to add a Party option to the menu that calls a party swap script.

It would be nice if I could slip it in between two options, and if I could have it unavailable (grayed out) until a certain point in the game.  Maybe it could be switch based.
 

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