GameSidePanel < UIMiniWindowContainer
  image-source: /images/sidepanel.png
  image-border: 4
  padding: 4
  width: 198

GameBottomPanel < Panel
  image-source: /images/bottompanel.png
  image-border: 4

GameMapPanel < UIGameMap
  padding: 4
  image-source: /images/mappanel.png
  image-border: 4

UIWidget
  id: gameRootPanel
  anchors.fill: parent
  anchors.top: topMenu.bottom

  GameMapPanel
    id: gameMapPanel
    anchors.left: gameLeftPanel.right
    anchors.right: gameRightPanel.left
    anchors.top: parent.top
    anchors.bottom: gameBottomPanel.top
    focusable: false

  GameBottomPanel
    id: gameBottomPanel
    anchors.left: gameLeftPanel.right
    anchors.right: gameRightPanel.left
    anchors.top: bottomSplitter.top
    anchors.bottom: parent.bottom

  GameSidePanel
    id: gameLeftPanel
    layout: verticalBox
    anchors.left: parent.left
    anchors.top: parent.top
    anchors.bottom: parent.bottom
    focusable: false
    visible: true
    on: true
    $!on:
      width: 0
      visible: false

  GameSidePanel
    id: gameRightPanel
    layout: verticalBox
    anchors.right: parent.right
    anchors.top: parent.top
    anchors.bottom: parent.bottom
    focusable: false
    on: true

  Splitter
    id: bottomSplitter
    anchors.left: gameLeftPanel.right
    anchors.right: gameRightPanel.left
    anchors.bottom: parent.bottom
    relative-margin: bottom
    margin-bottom: 172
    @canUpdateMargin: function(self, newMargin) return math.max(math.min(newMargin, self:getParent():getHeight() - 300), 100) end
    @onGeometryChange: function(self) self:setMarginBottom(math.min(math.max(self:getParent():getHeight() - 300, 100), self:getMarginBottom())) end

  UIWidget
    id: mouseGrabber
    focusable: false
    visible: false
