The  Was Dismissed Officially!
 Was Dismissed Officially!  
 
 Was Dismissed Officially!
 Was Dismissed Officially!  
  Well, you got to agree that it was not a good name for such a module. It is now known as the ToggleGroup class!
 Well, you got to agree that it was not a good name for such a module. It is now known as the ToggleGroup class!  
  Why did I change its name and structure!?
 Why did I change its name and structure!? You see, I wanted to let you manage several groups of buttons you could toggle at any time so disposable classes were a good choice. A module is a single Module class instance so you could not make several copies of it. Classes can be multiplied as many times as you ever need to.
 You see, I wanted to let you manage several groups of buttons you could toggle at any time so disposable classes were a good choice. A module is a single Module class instance so you could not make several copies of it. Classes can be multiplied as many times as you ever need to. 
Visually there is no change at all
 except that the
  except that the  interface now works smoothly. The buttons and the menu containing the group will always know where did you click last time. Even if you suddenly start using the keyboard or the gamepad, it will update the focus just as expected.
 interface now works smoothly. The buttons and the menu containing the group will always know where did you click last time. Even if you suddenly start using the keyboard or the gamepad, it will update the focus just as expected. 
You got to admit that your menus will surely look a lot better than before.
 
  Or do you plan to keep using those ugly menus where you need to use the window's default squarish cursor that everybody hates?
 Or do you plan to keep using those ugly menus where you need to use the window's default squarish cursor that everybody hates? You don't believe me!? Then go ask Steam users and they will tell you how much they dislike games with some default RTP interface.
 You don't believe me!? Then go ask Steam users and they will tell you how much they dislike games with some default RTP interface. 
Here is the latest version of my Toggle Button "Test" Menu.
Code:
# * Toggle Button Menu for HiddenChest
#   Scripter : Kyonides Arkanthes
#   2020-05-09
module ButtonData
  TITLE = "Scene Settings"
  BACKDROP = 'recycle texture'
  ICONS = %w{toggle1 toggle2 toggle3 toggle4}
  LABELS = ['Find Treasures', 'Kick Asses', 'Play Minigames',
            'Contract Covid-19', 'Hug Corona-chan', 'Escape']
end
class ToggleButtons
  def initialize(states)
    Settings.click_timer = 10 #Graphics.frame_rate / 3
    @manager = ToggleGroup.new
    @timer = 0
    @buttons = []
    @labels = []
    @total = ButtonData::LABELS.size
    @total.times do |n|
      cy = 44 + n * 32
      sprite = ToggleButton.new
      sprite.manager = @manager
      sprite.set_xy(8, cy)
      sprite.frame = RPG::Cache.icon(ButtonData::ICONS[0])
      sprite.bitmap_on = RPG::Cache.icon(ButtonData::ICONS[1])
      sprite.bitmap_off = RPG::Cache.icon(ButtonData::ICONS[2])
      sprite.button = RPG::Cache.icon(ButtonData::ICONS[3])
      sprite.state = states[n]
      @buttons << sprite
      sprite = Sprite.new
      sprite.set_xy(36, cy)
      sprite.bitmap = bit = Bitmap.new(160, 28)
      bit.draw_text(0, 0, bit.width, 28, ButtonData::LABELS[n])
      @labels << sprite
    end
    @manager.buttons = @buttons
    @buttons[5].block = true
  end
  def update
    @buttons.each{|button| button.update }
    if Input.trigger?(Input::UP)
      Audio.play_cursor
      @manager.index = (@manager.index - 1) % @total
      return
    elsif Input.trigger?(Input::DOWN)
      Audio.play_cursor
      @manager.index = (@manager.index + 1) % @total
    end
  end
  def dispose
    @labels.each{|b| b.dispose }
    @labels.clear
    @manager.dispose
  end
  def states() @buttons.map(&:state) end
end
class MenuScene
  def main
    @bg = Sprite.new
    @bg.bitmap = RPG::Cache.title(ButtonData::BACKDROP)
    @title = Sprite.new
    @title.set_xy(Graphics.width / 2 - 120, 8)
    @title.bitmap = bit = Bitmap.new(240, 32)
    bit.draw_text(0, 0, 240, 32, ButtonData::TITLE, 1)
    states = [true, false, true, false, true, false]
    @buttonset = ToggleButtons.new(states)
    states.clear
    Graphics.transition
    main_loop while $scene == self
    Graphics.freeze
    @buttonset.dispose
    @title.dispose
    @bg.dispose
  end
  def main_loop
    Graphics.update
    Input.update
    update
  end
  def update
    @buttonset.update
    if Input.trigger?(Input::B)
      Audio.play_cancel
      @buttonset.states
      $scene = Scene_Title.new
      return
    elsif Input.trigger?(Input::KeyP)
      Audio.play_ok
      Graphics.save_screenshot
      return
    end
  end
endNow I am lazy  and prefer to fetch some
 and prefer to fetch some  
 
 and prefer to fetch some
 and prefer to fetch some  
 So I am leaving now!  
 
 
 By the way, Windows users, you are out of luck!  
 
 
	 
 
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
![[Image: SP1-Scripter.png]](https://www.save-point.org/images/userbars/SP1-Scripter.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Poet.png]](https://www.save-point.org/images/userbars/SP1-Poet.png)
![[Image: SP1-PixelArtist.png]](https://www.save-point.org/images/userbars/SP1-PixelArtist.png)
![[Image: SP1-Reporter.png]](https://i.postimg.cc/GmxWbHyL/SP1-Reporter.png)
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
	
	
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
![[Image: SP1-Scripter.png]](https://www.save-point.org/images/userbars/SP1-Scripter.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Poet.png]](https://www.save-point.org/images/userbars/SP1-Poet.png)
![[Image: SP1-PixelArtist.png]](https://www.save-point.org/images/userbars/SP1-PixelArtist.png)
![[Image: SP1-Reporter.png]](https://i.postimg.cc/GmxWbHyL/SP1-Reporter.png)
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE

 
 
 HiddenChest RGSS Player Executable
 HiddenChest RGSS Player Executable
 

 
 
 