module W3DHubLauncher
  module Page
    module Boot
      class StartUp < CyberarmEngine::Page
        include GuiExt

        def setup
          stack(width: 1.0, background_nine_slice: NINE_SLICE_ROUNDED, background_nine_slice_from_edge: 8, background_nine_slice_color: 0x11_ffffff, padding: HALF_PADDING) do
            banner "Establishing Battlefield Control", width: 1.0, text_align: :center
            tagline "Please stand by...", width: 1.0, text_align: :center
          end

          stack(width: 1.0, fill: true, padding: PADDING) do
            stack(width: 1.0, fill: true, scroll: true) do
              a = flow(width: 1.0, height: HALF_PADDING + PADDING, visible: false) do
                image safe_get_image("#{ROOT_PATH}/media/icons/checkmark.png"), height: 1.0, v_align: :center
                tagline "DNS resolution", height: 1.0, text_v_align: :center
              end
              after(500) do
                a.show
              end
              b = flow(width: 1.0, height: HALF_PADDING + PADDING, visible: false) do
                image safe_get_image("#{ROOT_PATH}/media/icons/information.png"), height: 1.0, v_align: :center, color: 0xff_ff8800
                tagline "Upstream backend", height: 1.0, text_v_align: :center
                caption "Notice: Unreachable. Accounts will be unavailable.", height: 1.0, text_v_align: :center, color: 0xff_ff8800
              end
              after(1000) do
                b.show
              end
              c = flow(width: 1.0, height: HALF_PADDING + PADDING, visible: false) do
                image safe_get_image("#{ROOT_PATH}/media/icons/checkmark.png"), height: 1.0, v_align: :center
                tagline "Alternate backend", height: 1.0, text_v_align: :center
              end
              after(1500) do
                c.show
              end
              d = flow(width: 1.0, height: HALF_PADDING + PADDING, visible: false) do
                image safe_get_image("#{ROOT_PATH}/media/icons/information.png"), height: 1.0, v_align: :center, color: 0xff_ff8800
                tagline "Refresh account session", height: 1.0, text_v_align: :center
                caption "Notice: Upstream backend unavailable, session not refreshed.", height: 1.0, text_v_align: :center, color: 0xff_ff8800
              end
              after(2000) do
                d.show
              end
              e = flow(width: 1.0, height: HALF_PADDING + PADDING, visible: false) do
                image safe_get_image("#{ROOT_PATH}/media/icons/checkmark.png"), height: 1.0, v_align: :center
                tagline "Fetch game servers", height: 1.0, text_v_align: :center
              end
              after(2500) do
                e.show
              end
              f = flow(width: 1.0, height: HALF_PADDING + PADDING, visible: false) do
                image safe_get_image("#{ROOT_PATH}/media/icons/cross.png"), height: 1.0, v_align: :center, color: 0xff_ff0000
                tagline "Fetch applications", height: 1.0, text_v_align: :center
                caption "Fatal: Failed to retrieve applications list and no local cache exists. Cannot continue.", height: 1.0, text_v_align: :center, color: 0xff_ff0000
              end
              after(3000) do
                f.show
                @progress_bar.type = :linear
                @progress_bar.value = 0.0
              end

              after(3500) do
                parent.page_host.clear do
                  banner "Battlefield control established".upcase, width: 1.0, height: 1.0, text_v_align: :center, text_align: :center
                end
              end
              after(3600) do
                pop_state
                push_state(States::Interface)
              end
            end

            flow(width: 1.0, padding_top: PADDING) do
              @progress_bar = progress width: 1.0, type: :marquee
            end
          end
        end
      end
    end
  end
end
