#include "ui/menudef.h"

{
  \\ Server Creation \\

#define W           640
#define H           480
#define BORDER      10

#define PREVIEW_W   300
#define PREVIEW_H   225
#define PREVIEW_X   BORDER
#define PREVIEW_Y   BORDER

#define BC_W        (W-(2*BORDER))
#define BC_H        50
#define BC_X        BORDER
#define BC_Y        (H-(BC_H+BORDER))
#define ARROW_W     50
#define ARROW_H     BC_H

#define MAPS_W      PREVIEW_W
#define MAPS_H      (H-((4*BORDER)+PREVIEW_H+BC_H))
#define MAPS_X      BORDER
#define MAPS_Y      ((2*BORDER)+PREVIEW_H)

#define OPTIONS_W   (W-((3*BORDER)+PREVIEW_W))
#define OPTIONS_H   (H-((3*BORDER)+BC_H))
#define OPTIONS_X   ((2*BORDER)+PREVIEW_W)
#define OPTIONS_Y   BORDER
#define ELEM_OFF_Y  20
#define ELEM_OFF_X  -135
#define ELEM_H      21

  menuDef
  {
    name "createserver"
    visible MENU_FALSE
    fullscreen MENU_TRUE
    rect 0 0 W H
    focusColor 1 .75 0 1
    outOfBoundsClick
    style WINDOW_STYLE_EMPTY
    aspectBias ASPECT_NONE

    onOpen
    {
      uiScript loadArenas;
      hide accept_alt;
      show accept;
      hide back_alt;
      show back
    }

    onEsc
    {
      close createserver
    }

    itemDef
    {
      name background
      rect 0 0 W H
      style WINDOW_STYLE_FILLED
      backcolor 0 0 0 1
      visible MENU_TRUE
      decoration
    }

    // map selection

    itemDef
    {
      name mappreview
      style WINDOW_STYLE_EMPTY
      ownerdraw UI_SELECTEDMAPPREVIEW
      rect PREVIEW_X PREVIEW_Y PREVIEW_W PREVIEW_H
      border WINDOW_BORDER_FULL
      bordercolor .5 .5 .5 1
      visible MENU_TRUE
    }

    itemDef
    {
      name maplist
      rect MAPS_X MAPS_Y MAPS_W MAPS_H
      type ITEM_TYPE_LISTBOX
      style WINDOW_STYLE_EMPTY
      elementwidth 120
      elementheight 20
      textscale .33
      elementtype LISTBOX_TEXT
      feeder FEEDER_MAPS
      border WINDOW_BORDER_FULL
      bordercolor   0.5 0.5 0.5 1
      forecolor     1   1   1   1
      backcolor     0.2 0.2 0.2 1
      outlinecolor  0.1 0.1 0.1 0.5
      visible MENU_TRUE
      columns 1
        2 190 ALIGN_LEFT
    }


    //  SETTINGS  //

    itemDef
    {
      name window
      rect OPTIONS_X OPTIONS_Y OPTIONS_W OPTIONS_H
      style WINDOW_STYLE_FILLED
      backcolor 0 0 0 1
      visible MENU_TRUE
      decoration

      border WINDOW_BORDER_FULL
      borderSize 1.0
      borderColor 0.5 0.5 0.5 1
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_EDITFIELD
      text "Host Name:"
      cvar "sv_hostname"
      maxChars 40
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(0*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name normal
      type ITEM_TYPE_NUMERICFIELD
      text "Time Limit:"
      cvar "timelimit"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(1*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      maxchars 4
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_NUMERICFIELD
      text "Maximum Players:"
      cvar "sv_maxclients"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(2*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      maxchars 4
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_YESNO
      text "Require Password:"
      cvar "g_needpassword"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(3*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu1.wav"
      }
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_EDITFIELD
      text "Password:"
      cvar "g_password"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(4*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      maxchars 10
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }



    itemDef
    {
      name normal
      type ITEM_TYPE_YESNO
      text "Pure Server:"
      cvar "sv_pure"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(6*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu1.wav"
      }
    }

    itemDef
    {
      name normal
      type ITEM_TYPE_MULTI
      text "Dedicated:"
      // dedicated is a special cvar in that as soon as it is set,
      // the game goes to console only so the ui catches this one specifically
      cvar "ui_dedicated"
      cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 }
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(7*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu1.wav"
      }
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_YESNO
      text "Auto Download:"
      cvar "sv_allowdownload"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(8*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu1.wav"
      }
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_YESNO
      text "Enable Voting:"
      cvar "g_allowvote"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(9*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu1.wav"
      }
    }



    itemDef
    {
      name expert
      type ITEM_TYPE_NUMERICFIELD
      text "Minimum Ping:"
      cvar "sv_minping"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(11*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      maxchars 4
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_NUMERICFIELD
      text "Maximum Ping:"
      cvar "sv_maxping"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(12*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      maxchars 4
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_YESNO
      text "Synchronous Client:"
      cvar "g_synchronousclients"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(13*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu1.wav"
      }
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_NUMERICFIELD
      text "Max Rate:"
      cvar "sv_maxrate"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(14*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      maxchars 4
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_NUMERICFIELD
      text "Zombie Time:"
      cvar "sv_zombietime"
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(15*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      maxchars 4
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }

    itemDef
    {
      name expert
      type ITEM_TYPE_NUMERICFIELD
      text "Reconnect Limit:"
      cvar "sv_reconnectlimit"
      maxchars 4
      rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(16*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx ELEM_OFF_X
      textscale .36
      forecolor 1 1 1 1
      visible MENU_TRUE
    }



    // BACK BAR //

    itemDef
    {
      name back
      style WINDOW_STYLE_SHADER
      background "ui/assets/backarrow.tga"
      rect BC_X BC_Y ARROW_H ARROW_W
      aspectBias ALIGN_LEFT
      visible MENU_TRUE
      action
      {
        play "sound/misc/menu4.wav";
        close createserver
      }

      mouseEnter
      {
        hide back;
        show back_alt
      }
    }

    itemDef
    {
      name back_alt
      style WINDOW_STYLE_SHADER
      background "ui/assets/backarrow_alt.tga"
      rect BC_X BC_Y ARROW_H ARROW_W
      aspectBias ALIGN_LEFT
      backcolor 0 0 0 0
      forecolor 1 1 1 1
      visible MENU_FALSE
      type ITEM_TYPE_BUTTON

      text "Back"
      textalign ALIGN_LEFT
      textvalign VALIGN_CENTER
      textalignx ARROW_W
      textscale .6

      mouseExit
      {
        hide back_alt;
        show back
      }

      action
      {
        play "sound/misc/menu4.wav";
        close createserver
      }
    }




    itemDef
    {
      name accept
      style WINDOW_STYLE_SHADER
      rect ((BC_X+BC_W)-ARROW_W) BC_Y ARROW_H ARROW_W
      aspectBias ALIGN_RIGHT
      background "ui/assets/forwardarrow.tga"
      backcolor 0 0 0 0
      forecolor 1 1 1 1
      visible MENU_TRUE
      mouseEnter
      {
        hide accept;
        show accept_alt
      }

      action
      {
        play "sound/misc/menu1.wav";
        uiScript StartServer
      }
    }

    itemDef
    {
      name accept_alt
      style WINDOW_STYLE_SHADER
      rect ((BC_X+BC_W)-ARROW_W) BC_Y ARROW_H ARROW_W
      aspectBias ALIGN_RIGHT
      background "ui/assets/forwardarrow_alt.tga"
      backcolor 0 0 0 0
      type ITEM_TYPE_BUTTON
      forecolor 1 1 1 1
      visible MENU_FALSE
      type ITEM_TYPE_BUTTON

      text "Create"
      textalign ALIGN_RIGHT
      textvalign VALIGN_CENTER
      textalignx -ARROW_W
      textscale .6

      mouseExit
      {
        hide accept_alt;
        show accept
      }

      action
      {
        play "sound/misc/menu1.wav";
        uiScript StartServer
      }
    }
  }
}