Inital Import of asterisk_gosu into launcher, non-functional.

This commit is contained in:
2022-06-03 22:58:26 -05:00
parent fc968ffe32
commit c0eac0104b
12 changed files with 682 additions and 43 deletions

View File

@@ -0,0 +1,117 @@
class W3DHub
class Asterisk
class States
class IRCProfileForm < CyberarmEngine::GuiState
def setup
@profile = @options[:editing]
theme W3DHub::THEME
background 0xcc_000000
stack(width: 1.0, height: 248, margin: 48, padding: 16) do
caption @game ? "Update IRC Profile" : "Add IRC Profile", width: 1.0, text_align: :center
stack(width: 1.0, height: 60) do
flow(width: 1.0, height: 1.0) do
stack(width: 0.6, height: 1.0) do
para "IRC Nickname:"
@irc_nickname = edit_line "#{@profile&.nickname}", width: 1.0
end
stack(width: 0.4, height: 1.0) do
para "IRC Password:"
@irc_password = edit_line "#{@profile ? Base64.strict_decode64(@profile.password) : ''}", width: 1.0#, type: :password
end
end
end
stack(width: 1.0, height: 60) do
flow(width: 1.0, height: 1.0) do
stack(width: 0.75, height: 1.0) do
para "IRC Server IP or Hostname:"
@irc_hostname = edit_line "#{@profile&.server_hostname}", width: 1.0
end
stack(width: 0.249, height: 1.0) do
para "IRC Port:"
@irc_port = edit_line "#{@profile&.server_port || '6667'}", width: 1.0
end
end
end
stack(width: 1.0, height: 60) do
para "IRC Bot Name:"
@irc_bot = edit_line "#{@profile&.server_bot}", width: 1.0
end
flow(width: 1.0, margin_top: 8) do
button "Cancel", width: 0.5, margin_right: 4 do
pop_state
end
@save_button = button "Save", width: 0.5, margin_left: 4, enabled: false do
pop_state
@options[:save_callback].call(
@profile,
@irc_nickname.value,
@irc_password.value,
@irc_hostname.value,
@irc_port.value,
@irc_bot.value
)
end
end
end
end
# def draw
# previous_state&.draw
# Gosu.flush
# super
# end
def update
super
@save_button.enabled = valid?
end
def close
pop_state
end
def button_down(id)
super
case id
when Gosu::KB_ESCAPE
pop_state
end
end
def valid?
generated_name = IRCProfileForm.generate_profile_name(
@irc_nickname.value,
@irc_hostname.value,
@irc_port.value,
@irc_bot.value
)
existing_profile = W3DHub::Store[:asterisk_config].irc_profiles.find { |profile| profile.name == generated_name }
@irc_nickname.value.length.positive? &&
@irc_password.value.length.positive? && # May be optional?
@irc_hostname.value.length.positive? &&
@irc_port.value.length.positive? &&
@irc_bot.value.length.positive?
end
def self.generate_profile_name(nickname, hostname, port, bot)
"#{bot}@#{hostname}:#{port} as #{nickname}"
end
end
end
end
end