class menu_Hide extends GUIPage transient
  dependsOn(a_VisibilityHandler);

var automated BackgroundArea   ba_Actors, ba_ActorList,
                               ba_ActorInformation, ba_ActorName, ba_ActorProperties, ba_ActorCheckBoxes,
                               ba_ActorControls, ba_DiscoveryMode, ba_DiscoveryLog,
                               ba_MagicButton, ba_HidingOptions,
                               ba_ShowingOptions, ba_Presets, ba_PresetsList, ba_PresetInsides, ba_Background;

var automated GUILabel         l_ActorName, l_ActorPropertyOneName, l_ActorPropertyOneValue,
                               l_ActorPropertyTwoName, l_ActorPropertyTwoValue,
                               l_ActorPropertyThreeName, l_ActorPropertyThreeValue;

var automated moCheckbox       cb_DisplayActorsWithMeshes, cb_DisplayEmitters,
                               cb_ShowPathToActor, cb_SelectActor, cb_DiscoveryMode,
                               cb_CollideWithHiddenActors, cb_HideActorsWithMeshes, cb_HideEmitters,
                               cb_HideTerrain, cb_HideCoronas, cb_DisableFog, cb_DisableAmbientSounds,
                               cb_CullDistance, cb_ShowBlockingVolumes, cb_ShowZombieZoneVolumes,
                               cb_ShowZombieVolumes, cb_ShowAnotherVolumes, cb_ShowSpriteActors,
                               cb_CullDistanceEngineActors, cb_ShowPresetsForCurrentMapOnly;

var automated GUIButton        b_SortActorList, b_HideAllActors, b_ShowAllActors,
                               b_RemoveAllShowenActors, b_RemoveAllActors,
                               b_ShowActor, b_HideActor, b_RemoveActor, b_ClearDiscoveryLog,
                               b_MagicButton, b_HideHatefulActors, b_SavePreset, b_DeletePreset;

var automated GUIEditBox       eb_CullDistance, eb_CullDistanceEngineActors, eb_PresetName;


var automated GUIListBox       lb_ActorsList, lb_PresetsList;

var automated GUIScrollTextBox sb_DiscoveryLog, sb_PresetInsides;

//////////////////////////////////////////////
var() HideMutInteraction interaction;

// playerOwner().clientMessage("LOLOLOLOL");

simulated function initComponent(GUIController MyController, GUIComponent MyOwner)
{
  // local int i;

  super.initComponent(MyController,MyOwner);

  forEach allObjects(class'HideMutInteraction', interaction)
    break;

  initVisibilityHandler();

  lb_PresetsList.list.textAlign = TXTA_Left;
  lb_PresetsList.list.bMultiSelect = true;
  lb_PresetsList.list.bDropSource = true;
  lb_PresetsList.list.OnDblClick = ListDblClick;
  lb_PresetsList.list.bDrawSelectionBorder = true;

  lb_PresetsList.list.OnMousePressed = refreshPresetInsidesList;

  lb_ActorsList.list.textAlign = TXTA_Left;
  lb_ActorsList.list.bMultiSelect = true;
  lb_ActorsList.list.bDropSource = true;
  lb_ActorsList.list.OnDblClick = ListDblClick;
  lb_ActorsList.list.bDrawSelectionBorder = true;

  // fixing shitty default selection
  lb_ActorsList.list.OnMousePressed = fixListSelection1;
  lb_ActorsList.list.OnMouseRelease = fixListSelection2;

  // compiler doesn't allow me to define this shit
  // in defaultproperties. what a fucking magic
  b_MagicButton.onClick = buttonClicked;
  b_HideAllActors.onClick = buttonClicked;
  b_ShowAllActors.onClick = buttonClicked;
  b_RemoveAllShowenActors.onClick = buttonClicked;
  b_RemoveAllActors.onClick = buttonClicked;
  b_ShowActor.onClick = buttonClicked;
  b_HideActor.onClick = buttonClicked;
  b_RemoveActor.onClick = buttonClicked;
  b_ClearDiscoveryLog.onClick = buttonClicked;
  b_SortActorList.onClick = buttonClicked;
  b_SavePreset.onClick = buttonClicked;
  b_DeletePreset.onClick = buttonClicked;

  cb_HideActorsWithMeshes.onChange = checkboxUsed;
  cb_HideEmitters.onChange = checkboxUsed;
  cb_ShowPathToActor.onChange = checkboxUsed;
  cb_SelectActor.onChange = checkboxUsed;
  cb_CollideWithHiddenActors.onChange = checkboxUsed;
  cb_DiscoveryMode.onChange = checkboxUsed;
  cb_ShowBlockingVolumes.onChange = checkboxUsed;
  cb_ShowZombieZoneVolumes.onChange = checkboxUsed;
  cb_ShowZombieVolumes.onChange = checkboxUsed;
  cb_ShowAnotherVolumes.onChange = checkboxUsed;
  cb_ShowSpriteActors.onChange = checkboxUsed;
  cb_CullDistanceEngineActors.onChange = checkboxUsed;
  cb_HideTerrain.onChange = checkboxUsed;
  cb_HideCoronas.onChange = checkboxUsed;
  cb_DisableFog.onChange = checkboxUsed;
  cb_CullDistance.onChange = checkboxUsed;
  cb_ShowPresetsForCurrentMapOnly.onChange = checkboxUsed;

  eb_CullDistanceEngineActors.onKeyEvent = changeCullDistanceForEngineActors;
  eb_CullDistance.onKeyEvent = changeCullDistanceForMeshActors;
  eb_PresetName.onKeyEvent = savePreset;

  // Disable for some time
  // I'm sure if i'll use it at all
  cb_DisplayActorsWithMeshes.myCheckBox.menuState = MSAT_Disabled;
  cb_DisplayActorsWithMeshes.myCheckBox.setChecked(true);
  cb_DisplayEmitters.myCheckBox.menuState = MSAT_Disabled;
  cb_DisplayEmitters.myCheckBox.setChecked(true);
  cb_DisableAmbientSounds.myCheckBox.menuState = MSAT_Disabled;

  refreshMenu();
}


event opened(GUIComponent sender)
{
  super.opened(sender);

  initVisibilityHandler();
  refreshMenu();
  b_DeletePreset.menuState = MSAT_Disabled;
  getVh().clearPresetInsides();
  getVh().presetsList.index = -1;
}


// event closed(GUIComponent sender, bool bCancelled)
// {
//   super.closed(sender, bCancelled);
// }


simulated function initVisibilityHandler()
{
  getVh().linkListsToMenu(lb_ActorsList.list, lb_PresetsList.list, sb_DiscoveryLog.myScrollText, sb_PresetInsides.myScrollText);
}


simulated function bool changeCullDistanceForEngineActors(out byte key, out byte state, float delta)
{
  local a_visibilityhandler vh;

  vh = getVh();

  if (key == 0x0D) // Enter pressed
  {
    if (state == 1)
    {
      if (eb_CullDistanceEngineActors.getText() != "0" && int(eb_CullDistanceEngineActors.getText()) == 0)
      {
        vh.logMessage("[CullDistance]: Inappropriate input");
        return eb_CullDistanceEngineActors.internalOnKeyEvent(key, state, delta);
      }
      // vh.logMessage("New cullDistance = "@int(eb_CullDistanceEngineActors.getText()));
      vh.setCullDistanceForEngineActors(int(eb_CullDistanceEngineActors.getText()));
      eb_CullDistanceEngineActors.bHasFocus = false;
      eb_CullDistanceEngineActors.setText(string(vh.cullDistanceEngineActors));
      vh.SaveConfig();
    }
  }
  return eb_CullDistanceEngineActors.internalOnKeyEvent(key, state, delta);
}


simulated function bool changeCullDistanceForMeshActors(out byte key, out byte state, float delta)
{
  local a_visibilityhandler vh;

  vh = getVh();

  if (key == 0x0D) // Enter pressed
  {
    if (state == 1)
    {
      if (eb_CullDistance.getText() != "0" && int(eb_CullDistance.getText()) == 0)
      {
        vh.logMessage("[CullDistance]: Inappropriate input");
        return eb_CullDistance.internalOnKeyEvent(key, state, delta);
      }
      // vh.logMessage("New cullDistance = "@int(eb_CullDistance.getText()));
      vh.setCullDistanceForMeshActors(int(eb_CullDistance.getText()));
      eb_CullDistance.bHasFocus = false;
      eb_CullDistance.setText(string(vh.cullDistanceMeshActors));
      vh.SaveConfig();
    }
  }
  return eb_CullDistance.internalOnKeyEvent(key, state, delta);
}


simulated function bool savePreset(out byte key, out byte state, float delta)
{
  if (key == 0x0D)
  {
    if (state == 1)
    {
      if (getVh().savePreset(eb_PresetName.getText()))
      {
        eb_PresetName.setText("");
        eb_PresetName.bHasFocus = false;
      }
    }
  }
  return eb_PresetName.internalOnKeyEvent(key, state, delta);
}


simulated function refreshMenu()
{
  local a_visibilityhandler vh;

  vh = getVh();

  cb_HideActorsWithMeshes.SetComponentValue(vh.bHideActorsWithMeshes, true);
  cb_HideEmitters.SetComponentValue(vh.bHideEmitters, true);

  cb_DiscoveryMode.SetComponentValue(vh.bDiscoveryMode, true);
  cb_CollideWithHiddenActors.SetComponentValue(vh.bProjCollidesWithHiddenActor, true);

  cb_ShowBlockingVolumes.SetComponentValue(vh.bShowBlockingVolumes, true);
  cb_ShowZombieZoneVolumes.SetComponentValue(vh.bShowZombieZoneVolumes, true);
  cb_ShowZombieVolumes.SetComponentValue(vh.bShowZombieVolumes, true);
  cb_ShowAnotherVolumes.SetComponentValue(vh.bShowAnotherVolumes, true);
  cb_ShowSpriteActors.SetComponentValue(vh.bShowSpriteActors, true);
  cb_CullDistanceEngineActors.SetComponentValue(vh.bApplyCullDistanceForEngineActors, true);

  eb_CullDistanceEngineActors.setText(string(vh.cullDistanceEngineActors));
  eb_CullDistance.setText(string(vh.cullDistanceMeshActors));

  cb_HideTerrain.SetComponentValue(vh.bHideTerrain, true);
  cb_HideCoronas.SetComponentValue(vh.bHideCoronas, true);
  cb_DisableFog.SetComponentValue(vh.bDisableFog, true);
  cb_CullDistance.SetComponentValue(vh.bApplyCullDistanceForMeshActors, true);
  cb_ShowPresetsForCurrentMapOnly.SetComponentValue(vh.bShowPresetsForCurrentMapOnly, true);

  refreshActorDetails();

  if (cb_DiscoveryMode.isChecked())
    b_MagicButton.menuState = MSAT_Disabled;
  else
    b_MagicButton.menuState = MSAT_Blurry;
}


// refresh area with information of picked actor
simulated function refreshActorDetails()
{
  local Actor a;
  local a_visibilityhandler vh;
  local bool isHidden;
  local int i;

  vh = getVh();
  a = vh.pickedActor;

  if (a == none)
  {
    l_ActorName.caption = "Actor's name";
    l_ActorName.textColor.r = 170;
    l_ActorName.textColor.g = 170;
    l_ActorName.textColor.b = 170;
    l_ActorPropertyOneName.caption = "";
    l_ActorPropertyOneValue.caption = "";
    l_ActorPropertyTwoName.caption = "";
    l_ActorPropertyTwoValue.caption = "";
    l_ActorPropertyThreeName.caption = "";
    l_ActorPropertyThreeValue.caption = "";
    b_ShowActor.menuState = MSAT_Disabled;
    b_HideActor.menuState = MSAT_Disabled;
    b_RemoveActor.menuState = MSAT_Disabled;
    cb_ShowPathToActor.myCheckBox.menuState = MSAT_Disabled;
    cb_ShowPathToActor.myCheckBox.setChecked(false);
    cb_SelectActor.myCheckBox.menuState = MSAT_Disabled;
    cb_SelectActor.myCheckBox.setChecked(false);
    return;
  }

  if (vh.bSelectActor)
    isHidden = vh.pickedActorOriginalBHidden;
  else
    isHidden = a.bHidden;

  if (vh.isCached(a))
  {
    l_ActorName.caption = vh.getActorName(a);
    if (isHidden)
    {
      l_ActorName.textColor.r = 70;
      l_ActorName.textColor.g = 255;
      l_ActorName.textColor.b = 70;
      b_ShowActor.MenuState = MSAT_Blurry;
      b_HideActor.MenuState = MSAT_Disabled;
      b_RemoveActor.MenuState = MSAT_Blurry;
    }
    else
    {
      l_ActorName.textColor.r = 70;
      l_ActorName.textColor.g = 70;
      l_ActorName.textColor.b = 255;
      b_ShowActor.MenuState = MSAT_Disabled;
      b_HideActor.MenuState = MSAT_Blurry;
      b_RemoveActor.MenuState = MSAT_Blurry;
    }
  }
  else
  {
    l_ActorName.caption = vh.getActorName(a);
    l_ActorName.textColor.r = 255;
    l_ActorName.textColor.g = 70;
    l_ActorName.textColor.b = 70;
    b_ShowActor.MenuState = MSAT_Blurry;
    b_HideActor.MenuState = MSAT_Blurry;
    b_RemoveActor.MenuState = MSAT_Disabled;
  }

  if (a.mesh != none || a.staticMesh != none)
  {
    l_ActorPropertyOneName.caption = "bBlockActors";
    l_ActorPropertyOneValue.caption = string(a.bBlockActors);
    l_ActorPropertyTwoName.caption = "bBlockZeroExtentTraces";
    l_ActorPropertyTwoValue.caption = string(a.bBlockZeroExtentTraces);
    l_ActorPropertyThreeName.caption = "bCollideActors";
    l_ActorPropertyThreeValue.caption = string(a.bCollideActors);

    if (vh.bDiscoveryMode)
      if (vh.isActorChanged(a))
        for (i = 0; i < vh.changedActors.length; i++)
          if (vh.changedActors[i].a == a)
          {
            l_ActorPropertyOneValue.caption = string(vh.changedActors[i].bBlockActors);
            l_ActorPropertyTwoValue.caption = string(vh.changedActors[i].bBlockZeroExtentTraces);
            l_ActorPropertyThreeValue.caption = string(vh.changedActors[i].bCollideActors);
          }
  }
  else
  {
    l_ActorPropertyOneName.caption = "";
    l_ActorPropertyOneValue.caption = "";
    l_ActorPropertyTwoName.caption = "";
    l_ActorPropertyTwoValue.caption = "";
    l_ActorPropertyThreeName.caption = "";
    l_ActorPropertyThreeValue.caption = "";
  }

  cb_ShowPathToActor.myCheckBox.menuState = MSAT_Blurry;
  cb_SelectActor.myCheckBox.menuState = MSAT_Blurry;

  cb_ShowPathToActor.SetComponentValue(vh.bShowDirectionToActor, true);
  cb_SelectActor.SetComponentValue(vh.bSelectActor, true);
}



// Fixing shitty default selection + selection of new actor
simulated function fixListSelection1(GUIComponent sender, bool isRepeat)
{
  local a_visibilityhandler vh;

  vh = getVh();

  switch (sender) // TODO: Delete this switch?
  {
    case vh.cachedActors:
      vh.cachedActors.internalOnMousePressed(sender, isRepeat);
      if (vh.cachedActors.selectedItems.length == 0)
        vh.cachedActors.selectedItems[0] = vh.cachedActors.calculateIndex(true);

      // picking actor from list
      if (vh.selectActorFromList())
        refreshActorDetails();
      break;
  }
}


simulated function fixListSelection2(GUIComponent sender)
{
  local a_visibilityhandler vh;

  vh = getVh();

  switch(sender)
  {
    case vh.cachedActors:
      vh.cachedActors.internalOnMouseRelease(sender);
      if (vh.cachedActors.selectedItems.length == 0)
        vh.cachedActors.selectedItems[0] = vh.cachedActors.index;
      break;
  }
}


simulated function refreshPresetInsidesList(GUIComponent sender, bool isRepeat)
{
  local a_visibilityhandler vh;

  vh = getVh();

  vh.presetsList.internalOnMousePressed(sender, isRepeat);

  if(vh.presetsList.calculateIndex(true) == -1)
    b_DeletePreset.menuState = MSAT_Disabled;
  else
    b_DeletePreset.menuState = MSAT_Blurry;

  vh.selectCurrentPreset();
}


function checkboxUsed(GUIComponent sender)
{
  local a_visibilityhandler vh;

  vh = getVh();

  switch (sender)
  {
    case cb_HideActorsWithMeshes:
      vh.bHideActorsWithMeshes = cb_HideActorsWithMeshes.isChecked();
      vh.SaveConfig();
      break;

    case cb_HideEmitters:
      vh.bHideEmitters = cb_HideEmitters.isChecked();
      vh.SaveConfig();
      break;

    case cb_ShowPathToActor:
      vh.bShowDirectionToActor = cb_ShowPathToActor.isChecked();
      vh.showDirectionToActor();
      break;

    case cb_SelectActor:
      vh.bSelectActor = cb_SelectActor.isChecked();
      vh.selectActor();
      break;

    case cb_CollideWithHiddenActors:
      vh.bProjCollidesWithHiddenActor = cb_CollideWithHiddenActors.isChecked();
      vh.discoveryModeChangeCollision();
      break;

    case cb_DiscoveryMode:
      vh.bDiscoveryMode = cb_DiscoveryMode.isChecked();
      vh.discoveryMode();

      if(cb_DiscoveryMode.isChecked())
        b_MagicButton.menuState = MSAT_Disabled;
      else
        b_MagicButton.menuState = MSAT_Blurry;

      break;

    case cb_ShowBlockingVolumes:
      vh.bShowBlockingVolumes = cb_ShowBlockingVolumes.isChecked();
      vh.showBlockingVolumes();
      break;

    case cb_ShowZombieZoneVolumes:
      vh.bShowZombieZoneVolumes = cb_ShowZombieZoneVolumes.isChecked();
      vh.showZombieZoneVolumes();
      break;

    case cb_ShowZombieVolumes:
      vh.bShowZombieVolumes = cb_ShowZombieVolumes.isChecked();
      vh.showZombieVolumes();
      break;

    case cb_ShowAnotherVolumes:
      vh.bShowAnotherVolumes = cb_ShowAnotherVolumes.isChecked();
      vh.showAnotherVolumes();
      break;

    case cb_ShowSpriteActors:
      vh.bShowSpriteActors = cb_ShowSpriteActors.isChecked();
      vh.showSpriteActors();
      break;

    case cb_CullDistanceEngineActors:
      vh.bApplyCullDistanceForEngineActors = cb_CullDistanceEngineActors.isChecked();
      vh.applyCullDistanceForEngineActors();
      break;

    case cb_HideTerrain:
      vh.bHideTerrain = cb_HideTerrain.isChecked();
      vh.hideTerrain();
      break;

    case cb_HideCoronas:
      vh.bHideCoronas = cb_HideCoronas.isChecked();
      vh.hideCoronas();
      break;

    case cb_DisableFog:
      vh.bDisableFog = cb_DisableFog.isChecked();
      vh.disableFog();
      break;

    case cb_CullDistance:
      vh.bApplyCullDistanceForMeshActors = cb_CullDistance.isChecked();
      vh.applyCullDistanceForMeshActors();
      break;

    case cb_ShowPresetsForCurrentMapOnly:
      vh.bShowPresetsForCurrentMapOnly = cb_ShowPresetsForCurrentMapOnly.isChecked();
      vh.initPresetsList();
      b_DeletePreset.menuState = MSAT_Disabled;
      vh.SaveConfig();
      break;
  }
}

simulated function bool buttonClicked(GUIComponent sender)
{
  local a_visibilityhandler vh;

  vh = getVh();

  switch (sender)
  {
    case b_MagicButton:
      vh.doTheMagic();
      refreshActorDetails();
      break;

    case b_HideAllActors:
      vh.hideAllActorsInList();
      refreshActorDetails();
      break;

    case b_ShowAllActors:
      vh.showAllActorsInList();
      refreshActorDetails();
      break;

    case b_RemoveAllShowenActors:
      vh.removeAllUnhidedActorsFromList();
      refreshActorDetails();
      break;

    case b_RemoveAllActors:
      vh.removeAllActorsFromList();
      refreshActorDetails();
      break;

    case b_ShowActor:
      vh.showActor(vh.pickedActor);
      refreshActorDetails();
      break;

    case b_HideActor:
      vh.hideActor(vh.pickedActor);
      refreshActorDetails();
      break;

    case b_RemoveActor:
      vh.removeActorFromList(vh.pickedActor);
      refreshActorDetails();
      break;

    case b_ClearDiscoveryLog:
      vh.clearLog();
      break;

    case b_SortActorList:
      vh.sortCachedActors();
      break;

    case b_SavePreset:
      if(vh.savePreset(eb_PresetName.getText()))
      {
        eb_PresetName.setText("");
        // eb_PresetName.bHasFocus = false;
      }
      break;

    case b_DeletePreset:
      vh.deletePreset(vh.presetsList.getExtra());
      // vh.deletePreset();
      break;
  }
  return true;
}


function bool listDblClick(GUIComponent c)
{
  local a_visibilityhandler vh;

  vh = getVh();

  if (c == vh.cachedActors)
  {
    playerOwner().consoleCommand("editobj"@vh.pickedActor);
  }

  if (c == vh.presetsList)
  {
    vh.loadPreset(vh.presetsList.getExtra());
  }

  return true;
}


simulated function a_VisibilityHandler getVh()
{
  interaction.checkVisibilityHandler();
  return interaction.a_VisibilityHandler;
}

defaultproperties
{
     Begin Object Class=BackgroundArea Name=BackgroundArea_Actors
         WinTop=0.190000
         WinLeft=0.060000
         WinWidth=0.190000
         WinHeight=0.550000
     End Object
     ba_Actors=BackgroundArea'HideMut.menu_Hide.BackgroundArea_Actors'

     Begin Object Class=BackgroundArea Name=BackgroundArea_ActorList
         WinTop=0.050000
         WinLeft=0.050000
         WinWidth=0.210000
         WinHeight=0.850000
     End Object
     ba_ActorList=BackgroundArea'HideMut.menu_Hide.BackgroundArea_ActorList'

     Begin Object Class=BackgroundArea Name=BackgroundArea_ActorName
         WinTop=0.050000
         WinLeft=0.280000
         WinWidth=0.210000
         WinHeight=0.050000
     End Object
     ba_ActorName=BackgroundArea'HideMut.menu_Hide.BackgroundArea_ActorName'

     Begin Object Class=BackgroundArea Name=BackgroundArea_ActorProperties
         WinTop=0.100000
         WinLeft=0.280000
         WinWidth=0.210000
         WinHeight=0.080000
     End Object
     ba_ActorProperties=BackgroundArea'HideMut.menu_Hide.BackgroundArea_ActorProperties'

     Begin Object Class=BackgroundArea Name=BackgroundArea_ActorCheckboxes
         WinTop=0.180000
         WinLeft=0.280000
         WinWidth=0.210000
         WinHeight=0.090000
     End Object
     ba_ActorCheckBoxes=BackgroundArea'HideMut.menu_Hide.BackgroundArea_ActorCheckboxes'

     Begin Object Class=BackgroundArea Name=BackgroundArea_ActorControls
         WinTop=0.270000
         WinLeft=0.280000
         WinWidth=0.210000
         WinHeight=0.070000
     End Object
     ba_ActorControls=BackgroundArea'HideMut.menu_Hide.BackgroundArea_ActorControls'

     Begin Object Class=BackgroundArea Name=BackgroundArea_DiscoveryMode
         WinTop=0.350000
         WinLeft=0.280000
         WinWidth=0.210000
         WinHeight=0.550000
     End Object
     ba_DiscoveryMode=BackgroundArea'HideMut.menu_Hide.BackgroundArea_DiscoveryMode'

     Begin Object Class=BackgroundArea Name=BackgroundArea_DiscoveryLog
         WinTop=0.440000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.400000
     End Object
     ba_DiscoveryLog=BackgroundArea'HideMut.menu_Hide.BackgroundArea_DiscoveryLog'

     Begin Object Class=BackgroundArea Name=BackgroundArea_MagicButton
         WinTop=0.050000
         WinLeft=0.510000
         WinWidth=0.210000
         WinHeight=0.190000
     End Object
     ba_MagicButton=BackgroundArea'HideMut.menu_Hide.BackgroundArea_MagicButton'

     Begin Object Class=BackgroundArea Name=BackgroundArea_HidingOptions
         WinTop=0.250000
         WinLeft=0.510000
         WinWidth=0.210000
         WinHeight=0.260000
     End Object
     ba_HidingOptions=BackgroundArea'HideMut.menu_Hide.BackgroundArea_HidingOptions'

     Begin Object Class=BackgroundArea Name=BackgroundArea_ShowingOptions
         WinTop=0.520000
         WinLeft=0.510000
         WinWidth=0.210000
         WinHeight=0.380000
     End Object
     ba_ShowingOptions=BackgroundArea'HideMut.menu_Hide.BackgroundArea_ShowingOptions'

     Begin Object Class=BackgroundArea Name=BackgroundArea_Presets
         WinTop=0.050000
         WinLeft=0.740000
         WinWidth=0.210000
         WinHeight=0.850000
     End Object
     ba_Presets=BackgroundArea'HideMut.menu_Hide.BackgroundArea_Presets'

     Begin Object Class=BackgroundArea Name=BackgroundArea_PresetsList
         WinTop=0.100000
         WinLeft=0.750000
         WinWidth=0.190000
         WinHeight=0.200000
     End Object
     ba_PresetsList=BackgroundArea'HideMut.menu_Hide.BackgroundArea_PresetsList'

     Begin Object Class=BackgroundArea Name=BackgroundArea_PresetInsides
         WinTop=0.390000
         WinLeft=0.750000
         WinWidth=0.190000
         WinHeight=0.500000
     End Object
     ba_PresetInsides=BackgroundArea'HideMut.menu_Hide.BackgroundArea_PresetInsides'

     Begin Object Class=BackgroundArea Name=BackgroundArea_Background
         WinTop=0.050000
         WinLeft=0.050000
         WinWidth=0.900000
         WinHeight=0.850000
     End Object
     ba_Background=BackgroundArea'HideMut.menu_Hide.BackgroundArea_Background'

     Begin Object Class=GUILabel Name=GUILabel_ActorName
         Caption="Actor's name"
         TextAlign=TXTA_Center
         TextColor=(B=170,G=170,R=170)
         bMultiLine=True
         VertAlign=TXTA_Center
         WinTop=0.050000
         WinLeft=0.280000
         WinWidth=0.210000
         WinHeight=0.050000
     End Object
     l_ActorName=GUILabel'HideMut.menu_Hide.GUILabel_ActorName'

     Begin Object Class=GUILabel Name=GUILabel_ActorPropertyOneName
         VertAlign=TXTA_Center
         StyleName="TextLabel"
         WinTop=0.110000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.020000
     End Object
     l_ActorPropertyOneName=GUILabel'HideMut.menu_Hide.GUILabel_ActorPropertyOneName'

     Begin Object Class=GUILabel Name=GUILabel_ActorPropertyOneValue
         TextAlign=TXTA_Right
         VertAlign=TXTA_Center
         StyleName="TextLabel"
         WinTop=0.110000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.020000
     End Object
     l_ActorPropertyOneValue=GUILabel'HideMut.menu_Hide.GUILabel_ActorPropertyOneValue'

     Begin Object Class=GUILabel Name=GUILabel_ActorPropertyTwoName
         VertAlign=TXTA_Center
         StyleName="TextLabel"
         WinTop=0.130000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.020000
     End Object
     l_ActorPropertyTwoName=GUILabel'HideMut.menu_Hide.GUILabel_ActorPropertyTwoName'

     Begin Object Class=GUILabel Name=GUILabel_ActorPropertyTwoValue
         TextAlign=TXTA_Right
         VertAlign=TXTA_Center
         StyleName="TextLabel"
         WinTop=0.130000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.020000
     End Object
     l_ActorPropertyTwoValue=GUILabel'HideMut.menu_Hide.GUILabel_ActorPropertyTwoValue'

     Begin Object Class=GUILabel Name=GUILabel_ActorPropertyThreeName
         VertAlign=TXTA_Center
         StyleName="TextLabel"
         WinTop=0.150000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.020000
     End Object
     l_ActorPropertyThreeName=GUILabel'HideMut.menu_Hide.GUILabel_ActorPropertyThreeName'

     Begin Object Class=GUILabel Name=GUILabel_ActorPropertyThreeValue
         TextAlign=TXTA_Right
         VertAlign=TXTA_Center
         StyleName="TextLabel"
         WinTop=0.150000
         WinLeft=0.290000
         WinWidth=0.190000
         WinHeight=0.020000
     End Object
     l_ActorPropertyThreeValue=GUILabel'HideMut.menu_Hide.GUILabel_ActorPropertyThreeValue'

     Begin Object Class=moCheckBox Name=CheckBox_DisplayActorsWithMeshes
         Caption="Display actors with meshes"
         OnCreateComponent=CheckBox_DisplayActorsWithMeshes.InternalOnCreateComponent
         WinTop=0.060000
         WinLeft=0.060000
         WinWidth=0.190000
     End Object
     cb_DisplayActorsWithMeshes=moCheckBox'HideMut.menu_Hide.CheckBox_DisplayActorsWithMeshes'

     Begin Object Class=moCheckBox Name=CheckBox_DisplayEmitters
         Caption="Display emitters"
         OnCreateComponent=CheckBox_DisplayEmitters.InternalOnCreateComponent
         WinTop=0.100000
         WinLeft=0.060000
         WinWidth=0.190000
     End Object
     cb_DisplayEmitters=moCheckBox'HideMut.menu_Hide.CheckBox_DisplayEmitters'

     Begin Object Class=moCheckBox Name=CheckBox_ShowPathToActor
         Caption="Show path"
         OnCreateComponent=CheckBox_ShowPathToActor.InternalOnCreateComponent
         WinTop=0.190000
         WinLeft=0.290000
         WinWidth=0.190000
     End Object
     cb_ShowPathToActor=moCheckBox'HideMut.menu_Hide.CheckBox_ShowPathToActor'

     Begin Object Class=moCheckBox Name=CheckBox_SelectActor
         Caption="Select actor"
         OnCreateComponent=CheckBox_SelectActor.InternalOnCreateComponent
         WinTop=0.230000
         WinLeft=0.290000
         WinWidth=0.190000
     End Object
     cb_SelectActor=moCheckBox'HideMut.menu_Hide.CheckBox_SelectActor'

     Begin Object Class=moCheckBox Name=CheckBox_DiscoveryMode
         Caption="Discovery mode"
         OnCreateComponent=CheckBox_DiscoveryMode.InternalOnCreateComponent
         WinTop=0.360000
         WinLeft=0.290000
         WinWidth=0.190000
     End Object
     cb_DiscoveryMode=moCheckBox'HideMut.menu_Hide.CheckBox_DiscoveryMode'

     Begin Object Class=moCheckBox Name=CheckBox_CollideWithHiddenActors
         Caption="Collide with hidden actors"
         OnCreateComponent=CheckBox_CollideWithHiddenActors.InternalOnCreateComponent
         WinTop=0.400000
         WinLeft=0.290000
         WinWidth=0.190000
     End Object
     cb_CollideWithHiddenActors=moCheckBox'HideMut.menu_Hide.CheckBox_CollideWithHiddenActors'

     Begin Object Class=moCheckBox Name=CheckBox_HideActorsWithMeshes
         Caption="Hide actors with meshes"
         OnCreateComponent=CheckBox_HideActorsWithMeshes.InternalOnCreateComponent
         WinTop=0.160000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_HideActorsWithMeshes=moCheckBox'HideMut.menu_Hide.CheckBox_HideActorsWithMeshes'

     Begin Object Class=moCheckBox Name=CheckBox_HideEmitters
         Caption="Hide emitters"
         OnCreateComponent=CheckBox_HideEmitters.InternalOnCreateComponent
         WinTop=0.200000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_HideEmitters=moCheckBox'HideMut.menu_Hide.CheckBox_HideEmitters'

     Begin Object Class=moCheckBox Name=CheckBox_HideTerrain
         Caption="Hide terrain"
         OnCreateComponent=CheckBox_HideTerrain.InternalOnCreateComponent
         WinTop=0.260000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_HideTerrain=moCheckBox'HideMut.menu_Hide.CheckBox_HideTerrain'

     Begin Object Class=moCheckBox Name=CheckBox_HideCoronas
         Caption="Hide coronas"
         OnCreateComponent=CheckBox_HideCoronas.InternalOnCreateComponent
         WinTop=0.300000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_HideCoronas=moCheckBox'HideMut.menu_Hide.CheckBox_HideCoronas'

     Begin Object Class=moCheckBox Name=CheckBox_DisableFog
         Caption="Disable fog"
         OnCreateComponent=CheckBox_DisableFog.InternalOnCreateComponent
         WinTop=0.340000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_DisableFog=moCheckBox'HideMut.menu_Hide.CheckBox_DisableFog'

     Begin Object Class=moCheckBox Name=CheckBox_DisableAmbientSounds
         Caption="Disable all ambient sounds"
         OnCreateComponent=CheckBox_DisableAmbientSounds.InternalOnCreateComponent
         WinTop=0.380000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_DisableAmbientSounds=moCheckBox'HideMut.menu_Hide.CheckBox_DisableAmbientSounds'

     Begin Object Class=moCheckBox Name=CheckBox_CullDistance
         Caption="CullDistance"
         OnCreateComponent=CheckBox_CullDistance.InternalOnCreateComponent
         WinTop=0.470000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_CullDistance=moCheckBox'HideMut.menu_Hide.CheckBox_CullDistance'

     Begin Object Class=moCheckBox Name=CheckBox_ShowBlockingVolumes
         Caption="Show blocking volumes"
         OnCreateComponent=CheckBox_ShowBlockingVolumes.InternalOnCreateComponent
         WinTop=0.530000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_ShowBlockingVolumes=moCheckBox'HideMut.menu_Hide.CheckBox_ShowBlockingVolumes'

     Begin Object Class=moCheckBox Name=CheckBox_ShowZombieZoneVolumes
         Caption="Show zombie zone volumes"
         OnCreateComponent=CheckBox_ShowZombieZoneVolumes.InternalOnCreateComponent
         WinTop=0.570000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_ShowZombieZoneVolumes=moCheckBox'HideMut.menu_Hide.CheckBox_ShowZombieZoneVolumes'

     Begin Object Class=moCheckBox Name=CheckBox_ShowZombieVolumes
         Caption="Show zombie volumes"
         OnCreateComponent=CheckBox_ShowZombieVolumes.InternalOnCreateComponent
         WinTop=0.610000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_ShowZombieVolumes=moCheckBox'HideMut.menu_Hide.CheckBox_ShowZombieVolumes'

     Begin Object Class=moCheckBox Name=CheckBox_ShowAnotherVolumes
         Caption="Show another volumes"
         OnCreateComponent=CheckBox_ShowAnotherVolumes.InternalOnCreateComponent
         WinTop=0.650000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_ShowAnotherVolumes=moCheckBox'HideMut.menu_Hide.CheckBox_ShowAnotherVolumes'

     Begin Object Class=moCheckBox Name=CheckBox_ShowSpriteActors
         Caption="Show sprite actors"
         OnCreateComponent=CheckBox_ShowSpriteActors.InternalOnCreateComponent
         WinTop=0.690000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_ShowSpriteActors=moCheckBox'HideMut.menu_Hide.CheckBox_ShowSpriteActors'

     Begin Object Class=moCheckBox Name=CheckBox_CullDistanceEngineActors
         Caption="CullDistance"
         OnCreateComponent=CheckBox_CullDistanceEngineActors.InternalOnCreateComponent
         WinTop=0.730000
         WinLeft=0.520000
         WinWidth=0.190000
     End Object
     cb_CullDistanceEngineActors=moCheckBox'HideMut.menu_Hide.CheckBox_CullDistanceEngineActors'

     Begin Object Class=moCheckBox Name=CheckBox_ShowListsForCurrentMapOnly
         Caption="Presets for current map only"
         OnCreateComponent=CheckBox_ShowListsForCurrentMapOnly.InternalOnCreateComponent
         WinTop=0.060000
         WinLeft=0.750000
         WinWidth=0.190000
     End Object
     cb_ShowPresetsForCurrentMapOnly=moCheckBox'HideMut.menu_Hide.CheckBox_ShowListsForCurrentMapOnly'

     Begin Object Class=GUIButton Name=Button_SortActorList
         Caption="Sort"
         WinTop=0.140000
         WinLeft=0.060000
         WinWidth=0.190000
         OnKeyEvent=Button_SortActorList.InternalOnKeyEvent
     End Object
     b_SortActorList=GUIButton'HideMut.menu_Hide.Button_SortActorList'

     Begin Object Class=GUIButton Name=Button_HideAllActors
         Caption="Hide all"
         WinTop=0.750000
         WinLeft=0.060000
         WinWidth=0.090000
         OnKeyEvent=Button_HideAllActors.InternalOnKeyEvent
     End Object
     b_HideAllActors=GUIButton'HideMut.menu_Hide.Button_HideAllActors'

     Begin Object Class=GUIButton Name=Button_ShowAllActors
         Caption="Show all"
         WinTop=0.750000
         WinLeft=0.160000
         WinWidth=0.090000
         OnKeyEvent=Button_ShowAllActors.InternalOnKeyEvent
     End Object
     b_ShowAllActors=GUIButton'HideMut.menu_Hide.Button_ShowAllActors'

     Begin Object Class=GUIButton Name=Button_RemoveAllShowenActors
         Caption="Remove not hidden actors"
         WinTop=0.800000
         WinLeft=0.060000
         WinWidth=0.190000
         OnKeyEvent=Button_RemoveAllShowenActors.InternalOnKeyEvent
     End Object
     b_RemoveAllShowenActors=GUIButton'HideMut.menu_Hide.Button_RemoveAllShowenActors'

     Begin Object Class=GUIButton Name=Button_RemoveAllActors
         Caption="Remove all actors"
         WinTop=0.850000
         WinLeft=0.060000
         WinWidth=0.190000
         OnKeyEvent=Button_RemoveAllActors.InternalOnKeyEvent
     End Object
     b_RemoveAllActors=GUIButton'HideMut.menu_Hide.Button_RemoveAllActors'

     Begin Object Class=GUIButton Name=Button_ShowActor
         Caption="Show"
         MenuState=MSAT_Disabled
         WinTop=0.280000
         WinLeft=0.290000
         WinWidth=0.060000
         WinHeight=0.050000
         OnKeyEvent=Button_ShowActor.InternalOnKeyEvent
     End Object
     b_ShowActor=GUIButton'HideMut.menu_Hide.Button_ShowActor'

     Begin Object Class=GUIButton Name=Button_HideActor
         Caption="Hide"
         MenuState=MSAT_Disabled
         WinTop=0.280000
         WinLeft=0.355000
         WinWidth=0.060000
         WinHeight=0.050000
         OnKeyEvent=Button_HideActor.InternalOnKeyEvent
     End Object
     b_HideActor=GUIButton'HideMut.menu_Hide.Button_HideActor'

     Begin Object Class=GUIButton Name=Button_RemoveActor
         Caption="Remove"
         MenuState=MSAT_Disabled
         WinTop=0.280000
         WinLeft=0.420000
         WinWidth=0.060000
         WinHeight=0.050000
         OnKeyEvent=Button_RemoveActor.InternalOnKeyEvent
     End Object
     b_RemoveActor=GUIButton'HideMut.menu_Hide.Button_RemoveActor'

     Begin Object Class=GUIButton Name=Button_ClearDiscoveryLog
         Caption="Clear"
         WinTop=0.850000
         WinLeft=0.290000
         WinWidth=0.190000
         OnKeyEvent=Button_ClearDiscoveryLog.InternalOnKeyEvent
     End Object
     b_ClearDiscoveryLog=GUIButton'HideMut.menu_Hide.Button_ClearDiscoveryLog'

     Begin Object Class=GUIButton Name=Button_MagicButton
         Caption="MAGIC BUTTON"
         WinTop=0.060000
         WinLeft=0.520000
         WinWidth=0.190000
         WinHeight=0.090000
         OnKeyEvent=Button_MagicButton.InternalOnKeyEvent
     End Object
     b_MagicButton=GUIButton'HideMut.menu_Hide.Button_MagicButton'

     Begin Object Class=GUIButton Name=Button_HideHatefulActors
         Caption="Hide hateful actors"
         WinTop=0.420000
         WinLeft=0.520000
         WinWidth=0.190000
         OnKeyEvent=Button_HideHatefulActors.InternalOnKeyEvent
     End Object
     b_HideHatefulActors=GUIButton'HideMut.menu_Hide.Button_HideHatefulActors'

     Begin Object Class=GUIButton Name=Button_SavePreset
         Caption="Save"
         WinTop=0.340000
         WinLeft=0.750000
         WinWidth=0.090000
         OnKeyEvent=Button_SavePreset.InternalOnKeyEvent
     End Object
     b_SavePreset=GUIButton'HideMut.menu_Hide.Button_SavePreset'

     Begin Object Class=GUIButton Name=Button_DeletePreset
         Caption="Delete"
         WinTop=0.340000
         WinLeft=0.850000
         WinWidth=0.090000
         OnKeyEvent=Button_DeletePreset.InternalOnKeyEvent
     End Object
     b_DeletePreset=GUIButton'HideMut.menu_Hide.Button_DeletePreset'

     Begin Object Class=GUIEditBox Name=EditBox_CullDistance
         WinTop=0.470000
         WinLeft=0.630000
         WinWidth=0.060000
         WinHeight=0.030000
         OnActivate=EditBox_CullDistance.InternalActivate
         OnDeActivate=EditBox_CullDistance.InternalDeactivate
         OnKeyType=EditBox_CullDistance.InternalOnKeyType
         OnKeyEvent=EditBox_CullDistance.InternalOnKeyEvent
     End Object
     eb_CullDistance=GUIEditBox'HideMut.menu_Hide.EditBox_CullDistance'

     Begin Object Class=GUIEditBox Name=EditBox_CullDistanceEngineActors
         WinTop=0.730000
         WinLeft=0.630000
         WinWidth=0.060000
         WinHeight=0.030000
         OnActivate=EditBox_CullDistanceEngineActors.InternalActivate
         OnDeActivate=EditBox_CullDistanceEngineActors.InternalDeactivate
         OnKeyType=EditBox_CullDistanceEngineActors.InternalOnKeyType
         OnKeyEvent=EditBox_CullDistanceEngineActors.InternalOnKeyEvent
     End Object
     eb_CullDistanceEngineActors=GUIEditBox'HideMut.menu_Hide.EditBox_CullDistanceEngineActors'

     Begin Object Class=GUIEditBox Name=EditBox_PresetName
         WinTop=0.300000
         WinLeft=0.750000
         WinWidth=0.190000
         WinHeight=0.030000
         OnActivate=EditBox_PresetName.InternalActivate
         OnDeActivate=EditBox_PresetName.InternalDeactivate
         OnKeyType=EditBox_PresetName.InternalOnKeyType
         OnKeyEvent=EditBox_PresetName.InternalOnKeyEvent
     End Object
     eb_PresetName=GUIEditBox'HideMut.menu_Hide.EditBox_PresetName'

     Begin Object Class=GUIListBox Name=ListBox_ActorsList
         bVisibleWhenEmpty=True
         OnCreateComponent=ListBox_ActorsList.InternalOnCreateComponent
         WinTop=0.192000
         WinLeft=0.062000
         WinWidth=0.188000
         WinHeight=0.546000
     End Object
     lb_ActorsList=GUIListBox'HideMut.menu_Hide.ListBox_ActorsList'

     Begin Object Class=GUIListBox Name=ListBox_PresetsList
         bVisibleWhenEmpty=True
         OnCreateComponent=ListBox_PresetsList.InternalOnCreateComponent
         WinTop=0.102000
         WinLeft=0.752000
         WinWidth=0.188000
         WinHeight=0.196000
     End Object
     lb_PresetsList=GUIListBox'HideMut.menu_Hide.ListBox_PresetsList'

     Begin Object Class=GUIScrollTextBox Name=ScrollBox_DiscoveryLog
         bNoTeletype=True
         bVisibleWhenEmpty=True
         OnCreateComponent=ScrollBox_DiscoveryLog.InternalOnCreateComponent
         FontScale=FNS_Small
         WinTop=0.442000
         WinLeft=0.292000
         WinWidth=0.188000
         WinHeight=0.396000
     End Object
     sb_DiscoveryLog=GUIScrollTextBox'HideMut.menu_Hide.ScrollBox_DiscoveryLog'

     Begin Object Class=GUIScrollTextBox Name=ScrollBox_PresetInsides
         bNoTeletype=True
         bVisibleWhenEmpty=True
         OnCreateComponent=ScrollBox_PresetInsides.InternalOnCreateComponent
         FontScale=FNS_Small
         WinTop=0.392000
         WinLeft=0.752000
         WinWidth=0.188000
         WinHeight=0.496000
     End Object
     sb_PresetInsides=GUIScrollTextBox'HideMut.menu_Hide.ScrollBox_PresetInsides'

     bRenderWorld=True
     bPersistent=True
     bAllowedAsLast=True
     BackgroundRStyle=MSTY_Modulated
}
