TribesReplay/base/gui/EditorGui.gui
2017-07-17 22:51:48 -04:00

321 lines
8.3 KiB
Plaintext

//--- OBJECT WRITE BEGIN ---
new EditManager(Editor)
{
profile = "GuiContentProfile";
horizSizing = "right";
vertSizing = "top";
position = "0 0";
extent = "640 480";
minExtent = "8 8";
visible = "1";
setFirstResponder = "0";
modal = "1";
helpTag = "0";
open = false;
};
//--- OBJECT WRITE END ---
//------------------------------------------------------------------------------
// Editor Cursors
//------------------------------------------------------------------------------
new GuiCursor(Editor_HandCursor)
{
hotSpot = "5 1";
bitmapName = "gui/CUR_Hand.png";
};
new GuiCursor(Editor_RotateCursor)
{
hotSpot = "11 18";
bitmapName = "gui/CUR_Rotate.png";
};
new GuiCursor(Editor_MoveCursor)
{
hotSpot = "9 13";
bitmapName = "gui/CUR_Grab.png";
};
new GuiCursor(Editor_ArrowCursor)
{
hotSpot = "0 0";
bitmapName = "gui/CUR_3dArrow.png";
};
new GuiControl(EmptyControl)
{
profile = "GuiButtonProfile";
};
//------------------------------------------------------------------------------
// Functions
//------------------------------------------------------------------------------
function getPrefSetting(%pref, %default)
{
//
if(%pref $= "")
return(%default);
else
return(%pref);
}
//------------------------------------------------------------------------------
function Editor::getPrefs(%this)
{
%this.currentEditor = getPrefSetting($pref::Editor::currentEditor, "WorldEditor");
%this.resolution = getPrefSetting($pref::Editor::screenResolution, getResolution());
%this.minToolFrameWidth = getPrefSetting($pref::Editor::minToolFrameWidth, 80);
}
function Editor::setPrefs(%this)
{
$pref::Editor::currentEditor = %this.currentEditor;
$pref::Editor::screenResolution = getResolution();
$pref::Editor::minToolFrameWidth = %this.minToolFrameWidth;
}
function Editor::init(%this)
{
if(%this.initialized)
return;
%this.initialized = true;
loadGui(EditorToolbarDlg);
// load in the editors
loadGui(WorldEditorGui);
loadGui(WorldEditorToolbarDlg);
loadGui(WorldEditorStatusbarDlg);
loadGui(WorldEditorButtonbarDlg);
loadGui(WorldEditorFrameSetDlg);
loadGui(WorldEditorSettingsDlg);
loadGui(TerrainEditorGui);
loadGui(TerrainEditorToolbarDlg);
loadGui(TerrainEditorExtraToolbarDlg);
loadGui(TerrainEditorStatusbarDlg);
loadGui(TerrainEditorButtonbarDlg);
loadGui(TerrainEditorFrameSetDlg);
loadGui(TerrainEditorTextureSelectGui);
loadGui(TerrainEditorValuesSettingsGui);
loadGui(AIEditorGui);
loadGui(AIEditorToolBar);
loadGui(AIEButtonBarDlg);
loadGui(AIEFrameSetDlg);
loadGui(AIEWorkingDlg);
//
loadGui(EditorSaveMissionDlg);
// tools
loadGui(EditorToolCreatorGui);
loadGui(EditorToolInspectorGui);
loadGui(EditorToolMissionAreaGui);
loadGui(EditorToolTreeViewGui);
loadGui(ObjectBuilderGui);
// do gui initialization...
wEditor.init();
tEditor.init();
TerraformerGui.init();
aiEdit.init();
//
Creator.init();
Inspector.init();
AreaEditor.init();
EditorTree.init();
ObjectBuilderGui.init();
//
WorldEditorFrameSetDlg.init();
WorldEditorStatusbarDlg.init();
WorldEditorButtonbarDlg.init();
WorldEditorToolbarDlg.init();
WorldEditorSettingsDlg.init();
//
TerrainEditorFrameSetDlg.init();
TerrainEditorStatusbarDlg.init();
TerrainEditorButtonbarDlg.init();
TerrainEditorToolbarDlg.init();
TerrainEditorExtraToolbarDlg.init();
AIEFrameSetDlg.init();
AIEButtonBarDlg.init();
AIEditorToolBar.init();
//
exec("scripts/editorRender.cs");
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function Editor::pushDialog(%this, %name)
{
%this.pushedDialogs[%this.numPushedDialogs] = %name;
%this.numPushedDialogs++;
Canvas.pushDialog(%name);
}
function Editor::popDialogs(%this)
{
// remove current dialogs
for(%i = 0; %i < %this.numPushedDialogs; %i++)
Canvas.popDialog(%this.pushedDialogs[%i]);
%this.numPushedDialogs = 0;
}
//------------------------------------------------------------------------------
function Editor::open(%this)
{
if(%this.open)
return;
// get the defaults
%this.getPrefs();
%this.prevResolution = getResolution();
%this.prevContent = Canvas.getContent();
%this.init();
GlobalActionMap.bind(keyboard, "f11", toggleEditor);
GlobalActionMap.bind(keyboard, "f12", GuiEdit);
//jff: hangs when switching resolutions
// setResolution(getWord(%this.resolution, 0), getWord(%this.resolution, 1));
Canvas.setContent(Editor);
}
function Editor::close(%this)
{
if(!%this.open)
return;
if(%this.prevResolution $= "")
%this.prevResolution = getResolution();
if(%this.prevContent == -1 || %this.prevContent == "")
%this.prevContent = "PlayGui";
Canvas.setContent(%this.prevContent);
//jff: hangs when switching resolutions
// setResolution(getWord(%this.prevResolution, 0), getWord(%this.prevResolution, 1));
closeMessageHud();
}
//------------------------------------------------------------------------------
function Editor::setEditor(%this, %editor)
{
//
%this.currentEditor = %editor;
%this.popDialogs();
switch$(%this.currentEditor)
{
case "WorldEditor":
%this.pushDialog(WorldEditorToolbarDlg);
%this.pushDialog(WorldEditorStatusbarDlg);
%this.pushDialog(WorldEditorButtonbarDlg);
%this.pushDialog(WorldEditorFrameSetDlg);
case "TerrainEditor":
%this.pushDialog(TerrainEditorToolbarDlg);
%this.pushDialog(TerrainEditorExtraToolbarDlg);
%this.pushDialog(TerrainEditorStatusbarDlg);
%this.pushDialog(TerrainEditorButtonbarDlg);
%this.pushDialog(TerrainEditorFrameSetDlg);
case "Terraformer":
%this.pushDialog(TerraformerGui);
case "AIEditor":
%this.pushDialog(AIEditorToolBar);
%this.pushDialog(WorldEditorStatusbarDlg);
%this.pushDialog(AIEButtonBarDlg);
%this.pushDialog(AIEFrameSetDlg);
default:
error("Editor::setEditor: attempting to set unknown editor '" @ %editor @ "'.");
return;
}
%this.pushDialog(EditorToolbarDlg);
}
//------------------------------------------------------------------------------
function toggleMouse()
{
if(Canvas.isCursorOn())
CursorOff();
else
CursorOn();
}
function Editor::onWake(%this)
{
%this.open = true;
MoveMap.push();
EditorMap.push();
GlobalActionMap.bindcmd(keyboard, "tab", "", "toggleMouse();");
%this.setEditor(%this.currentEditor);
}
function Editor::onSleep(%this)
{
%this.open = false;
EditorMap.pop();
MoveMap.pop();
GlobalActionMap.unbind(keyboard, "tab");
lockMouse(false);
CursorOn();
%this.popDialogs();
%this.setPrefs();
// only canvas level content gets onWake and onSleep calls..
wEditor.setPrefs();
tEditor.setPrefs();
aiEdit.setPrefs();
}
//------------------------------------------------------------------------------
// keys
new ActionMap(EditorMap);
EditorMap.bindCmd(keyboard, "f2", "editor.setEditor(WorldEditor);", "");
EditorMap.bindCmd(keyboard, "f3", "editor.setEditor(TerrainEditor);", "");
EditorMap.bindCmd(keyboard, "f4", "editor.setEditor(Terraformer);", "");
EditorMap.bindCmd(keyboard, "f5", "editor.setEditor(AIEditor);", "");
EditorMap.bindCmd(keyboard, "alt s", "Canvas.pushDialog(EditorSaveMissionDlg);", "");
EditorMap.bindCmd(keyboard, "alt r", "lightScene(\"\", forceAlways);", "");
EditorMap.bindCmd(keyboard, "escape", "editor.close();", "");
// Bookmarks
//------------------------------------------------------------------------------
// alt-#: set bookmark
for(%i = 0; %i < 9; %i++)
EditorMap.bindCmd(keyboard, "alt " @ %i, "editor.setBookmark(" @ %i @ ");", "");
// ctrl-#: goto bookmark
for(%i = 0; %i < 9; %i++)
EditorMap.bindCmd(keyboard, "ctrl " @ %i, "editor.gotoBookmark(" @ %i @ ");", "");