1
0
forked from 0ad/0ad
0ad/binaries/data/mods/official/gui/test/functions_atlas.js

408 lines
16 KiB
JavaScript
Raw Normal View History

// Main Atlas Scenario Editor JS Script file
// Contains functions and code for the game's integrated Scenario Editor.
// ====================================================================
function initAtlas()
{
// Initialise coordinate set for this page.
atlasCoord = new Array();
atlasCoord_Last = 0;
// ============================================= GLOBALS =================================================
ATLAS_COUNTER_BOX = new Object();
ATLAS_COUNTER_BOX.width = 9;
ATLAS_COUNTER_BOX.height = 5;
// ============================================= SECTIONS ================================================
initAtlasMainScreen();
initAtlasSectionMapCreator();
initAtlasSectionTerrainEditor();
initAtlasSectionObjectEditor();
}
// ====================================================================
function initAtlasMainScreen()
{
// Top-left corner piece of main editor frame.
ATLAS_MAINBORDER_LT_CORNER = addSizeArrayWH(atlasCoord, atlasCoord_Last,
42,
42
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
0,
0
);
// Top-right corner piece of main editor frame ("Info Selection Box").
ATLAS_MAINBORDER_RT_CORNER = addSizeArrayWH(atlasCoord, atlasCoord_Last,
203,
54
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
0,
atlasCoord[ATLAS_MAINBORDER_LT_CORNER].y
);
2004-12-28 04:53:52 +01:00
// Info window in top-right corner.
ATLAS_INFO_WINDOW = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_RT_CORNER].width-30-6,
atlasCoord[ATLAS_MAINBORDER_RT_CORNER].height-9
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
3,
atlasCoord[ATLAS_MAINBORDER_RT_CORNER].y+3
);
2004-12-28 04:53:52 +01:00
// Top menu bar.
ATLAS_MAINBORDER_MENU_BKG = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_RT_CORNER].width,
19
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_LT_CORNER].x+atlasCoord[ATLAS_MAINBORDER_LT_CORNER].width,
atlasCoord[ATLAS_MAINBORDER_LT_CORNER].y
);
// Menu buttons.
ATLAS_MAINBORDER_MENU_BUTTON = new Object();
ATLAS_MAINBORDER_MENU_BUTTON.span = 0;
ATLAS_MAINBORDER_MENU_BUTTON.max = 12;
for (ATLAS_MAINBORDER_MENU_BUTTON.last = 1; ATLAS_MAINBORDER_MENU_BUTTON.last <= ATLAS_MAINBORDER_MENU_BUTTON.max; ATLAS_MAINBORDER_MENU_BUTTON.last++)
{
ATLAS_MAINBORDER_MENU_BUTTON[ATLAS_MAINBORDER_MENU_BUTTON.last] = atlasCoord_Last;
atlasCoord[atlasCoord_Last] = new Object();
atlasCoord[atlasCoord_Last].width = 60;
atlasCoord[atlasCoord_Last].height = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].height;
if (ATLAS_MAINBORDER_MENU_BUTTON.last == 1)
atlasCoord[atlasCoord_Last].x = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].x;
else
atlasCoord[atlasCoord_Last].x = atlasCoord[ATLAS_MAINBORDER_MENU_BUTTON[ATLAS_MAINBORDER_MENU_BUTTON.last]-1].x+atlasCoord[atlasCoord_Last].width+ATLAS_MAINBORDER_MENU_BUTTON.span;
atlasCoord[atlasCoord_Last].y = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].y;
atlasCoord_Last++;
}
// Top tool bar (1 row).
ATLAS_MAINBORDER_TOOLBAR_BKG = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_RT_CORNER].width-atlasCoord[ATLAS_MAINBORDER_LT_CORNER].width,
20
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_LT_CORNER].x,
atlasCoord[ATLAS_MAINBORDER_MENU_BKG].y+atlasCoord[ATLAS_MAINBORDER_MENU_BKG].height
);
// Top tool bar (max: two rows).
ATLAS_MAINBORDER_TOOLBAR_BKG_MAX = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].width,
35
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].x,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].y
);
// Fully Minimise arrow on tool bar.
ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW = addSizeArrayWH(atlasCoord, atlasCoord_Last,
12,
4
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_RT_CORNER].x+atlasCoord[ATLAS_MAINBORDER_RT_CORNER].width+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].width-15,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].y+3
);
// Minimise arrow on tool bar.
ATLAS_MAINBORDER_TOOLBAR_MINIMISE_ARROW = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].width,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].height
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].x,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].height-atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].height-1
);
// Fully Maximise arrow on tool bar.
ATLAS_MAINBORDER_TOOLBAR_FULLY_MAXIMISE_ARROW = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].width,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].height
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].x,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].height-atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MAXIMISE_ARROW].height-atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MAXIMISE_ARROW].height-1
);
// Maximise arrow on tool bar.
ATLAS_MAINBORDER_TOOLBAR_MAXIMISE_ARROW = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].width,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].height
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_FULLY_MINIMISE_ARROW].x,
atlasCoord[ATLAS_MAINBORDER_MENU_BKG].y+atlasCoord[ATLAS_MAINBORDER_MENU_BKG].height-atlasCoord[ATLAS_MAINBORDER_TOOLBAR_MAXIMISE_ARROW].height-atlasCoord[ATLAS_MAINBORDER_TOOLBAR_MAXIMISE_ARROW].height-1
);
// Toolbar buttons.
ATLAS_MAINBORDER_TOOLBAR_BUTTON = new Object();
ATLAS_MAINBORDER_TOOLBAR_BUTTON.span = 4;
ATLAS_MAINBORDER_TOOLBAR_BUTTON.max = 80;
for (ATLAS_MAINBORDER_TOOLBAR_BUTTON.last = 1; ATLAS_MAINBORDER_TOOLBAR_BUTTON.last <= ATLAS_MAINBORDER_TOOLBAR_BUTTON.max; ATLAS_MAINBORDER_TOOLBAR_BUTTON.last++)
{
ATLAS_MAINBORDER_TOOLBAR_BUTTON[ATLAS_MAINBORDER_TOOLBAR_BUTTON.last] = atlasCoord_Last;
atlasCoord[atlasCoord_Last] = new Object();
atlasCoord[atlasCoord_Last].width = 15;
atlasCoord[atlasCoord_Last].height = 15;
if (ATLAS_MAINBORDER_TOOLBAR_BUTTON.last == 1)
atlasCoord[atlasCoord_Last].x = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].x+5+ATLAS_MAINBORDER_TOOLBAR_BUTTON.span;
else
atlasCoord[atlasCoord_Last].x = atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BUTTON[ATLAS_MAINBORDER_TOOLBAR_BUTTON.last]-1].x+atlasCoord[atlasCoord_Last].width+ATLAS_MAINBORDER_TOOLBAR_BUTTON.span;
if (ATLAS_MAINBORDER_TOOLBAR_BUTTON.last == 41)
atlasCoord[atlasCoord_Last].x = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].x+5+ATLAS_MAINBORDER_TOOLBAR_BUTTON.span;
if (ATLAS_MAINBORDER_TOOLBAR_BUTTON.last >= 41)
atlasCoord[atlasCoord_Last].y = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].y+atlasCoord[ATLAS_MAINBORDER_MENU_BKG].height+1+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BUTTON[ATLAS_MAINBORDER_TOOLBAR_BUTTON.last]-1].height;
else
atlasCoord[atlasCoord_Last].y = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].y+atlasCoord[ATLAS_MAINBORDER_MENU_BKG].height+1;
atlasCoord_Last++;
}
// Left-hand selection pane.
ATLAS_LEFT_PANE_BKG = addSizeArrayWH(atlasCoord, atlasCoord_Last,
187,
0
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MAINBORDER_LT_CORNER].x,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].height
);
// ============================================= GENERIC BOTTOM SECTION MENU ===============================================
// Bottom-right Mini Map Background.
ATLAS_MINIMAP_BKG = addSizeArrayWH(atlasCoord, atlasCoord_Last,
182,
182
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
0,
0
);
// Bottom-right Mini Map.
ATLAS_MINIMAP = addSizeArrayWH(atlasCoord, atlasCoord_Last,
140,
140
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
20,
20
);
// Bottom selection pane.
ATLAS_BOTTOM_PANE_BKG = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_BKG].x-atlasCoord[ATLAS_LEFT_PANE_BKG].width-atlasCoord[ATLAS_MINIMAP_BKG].x-atlasCoord[ATLAS_MINIMAP_BKG].width+6,
148
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_BKG].x+atlasCoord[ATLAS_LEFT_PANE_BKG].width-3,
atlasCoord[ATLAS_LEFT_PANE_BKG].height
);
// Left-Bottom selection pane corner.
ATLAS_LB_CORNER = addSizeArrayWH(atlasCoord, atlasCoord_Last,
20,
20
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_BOTTOM_PANE_BKG].x,
atlasCoord[ATLAS_BOTTOM_PANE_BKG].height-4
);
// Right-Bottom selection pane corner.
ATLAS_RB_CORNER = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MINIMAP_BKG].height-atlasCoord[ATLAS_BOTTOM_PANE_BKG].height+3,
atlasCoord[ATLAS_MINIMAP_BKG].height-atlasCoord[ATLAS_BOTTOM_PANE_BKG].height+3
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MINIMAP_BKG].width-2,
atlasCoord[ATLAS_LB_CORNER].y
);
// Atlas tooltip window.
ATLAS_TOOLTIP = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MINIMAP_BKG].width-20,
82
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_MINIMAP_BKG].x+10,
atlasCoord[ATLAS_MINIMAP_BKG].y+atlasCoord[ATLAS_MINIMAP_BKG].height+4
);
// Setup margins for Bottom Section Menu.
ATLAS_BOTTOM_PANE_SECTION = new Object();
ATLAS_BOTTOM_PANE_SECTION.LMARGIN = 5;
ATLAS_BOTTOM_PANE_SECTION.RMARGIN = 5;
ATLAS_BOTTOM_PANE_SECTION.TMARGIN = 5;
ATLAS_BOTTOM_PANE_SECTION.BMARGIN = 5;
// ============================================= GENERIC LEFT SECTION MENU ===============================================
// Second heading of section menu.
ATLAS_LEFT_PANE_SECTION_HEADING_2 = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_BKG].width-2,
21+2
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_BKG].x,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].height+29
);
// Topmost heading of section menu.
ATLAS_LEFT_PANE_SECTION_HEADING_1 = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_SECTION_HEADING_2].width,
31
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_SECTION_HEADING_2].x,
atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].height
);
// Third heading of section menu.
ATLAS_LEFT_PANE_SECTION_HEADING_3 = addSizeArrayWH(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_SECTION_HEADING_2].width,
atlasCoord[ATLAS_LEFT_PANE_SECTION_HEADING_2].height
); atlasCoord_Last = addSizeArrayXY(atlasCoord, atlasCoord_Last,
atlasCoord[ATLAS_LEFT_PANE_SECTION_HEADING_2].x,
0
);
// Setup margins for Left Section Menu.
ATLAS_LEFT_PANE_SECTION = new Object();
ATLAS_LEFT_PANE_SECTION.LMARGIN = 7;
ATLAS_LEFT_PANE_SECTION.RMARGIN = 10;
ATLAS_LEFT_PANE_SECTION.TMARGIN = 10;
ATLAS_LEFT_PANE_SECTION.BMARGIN = 12;
}
2004-12-28 04:53:52 +01:00
// ====================================================================
function atlasUpdateInfoWindow()
{
// Refresh content of Info Window.
getGUIObjectByName("atlas_info_window").caption = "File: something.map\nWorkspace: MyWorkspace\nFPS: " + getFPS();
}
// ====================================================================
function atlasFullyMinimiseToolbar()
{
// Hide toolbar.
GUIObjectHide("atlas_mainborder_toolbar");
GUIObjectUnhide("atlas_mainborder_toolbar_maximise_arrow");
GUIObjectHide("atlas_mainborder_toolbar_button_row_1");
GUIObjectHide("atlas_mainborder_toolbar_button_row_2");
// Set toolbar height.
atlasCoord[ATLAS_LEFT_PANE_BKG].y = atlasCoord[ATLAS_MAINBORDER_MENU_BKG].y+atlasCoord[ATLAS_MAINBORDER_MENU_BKG].height;
setSizeArray("atlas_left_pane_bkg", atlasCoord[ATLAS_LEFT_PANE_BKG], left_screen, top_screen, left_screen, bottom_screen);
}
// ====================================================================
function atlasMinimiseToolbar()
{
// Reduce toolbar to one row.
GUIObjectHide("atlas_mainborder_toolbar_max");
GUIObjectUnhide("atlas_mainborder_toolbar");
GUIObjectUnhide("atlas_mainborder_toolbar_button_row_1");
GUIObjectHide("atlas_mainborder_toolbar_button_row_2");
// Set toolbar height.
atlasCoord[ATLAS_LEFT_PANE_BKG].y = atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].height;
setSizeArray("atlas_left_pane_bkg", atlasCoord[ATLAS_LEFT_PANE_BKG], left_screen, top_screen, left_screen, bottom_screen);}
// ====================================================================
function atlasFullyMaximiseToolbar()
{
// Extend toolbar to two rows.
GUIObjectHide("atlas_mainborder_toolbar");
GUIObjectUnhide("atlas_mainborder_toolbar_max");
GUIObjectUnhide("atlas_mainborder_toolbar_button_row_1");
GUIObjectUnhide("atlas_mainborder_toolbar_button_row_2");
// Set toolbar height.
atlasCoord[ATLAS_LEFT_PANE_BKG].y = atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG_MAX].height;
setSizeArray("atlas_left_pane_bkg", atlasCoord[ATLAS_LEFT_PANE_BKG], left_screen, top_screen, left_screen, bottom_screen);}
// ====================================================================
function atlasMaximiseToolbar()
{
// Extend toolbar to one row.
GUIObjectUnhide("atlas_mainborder_toolbar");
GUIObjectHide("atlas_mainborder_toolbar_maximise_arrow");
GUIObjectUnhide("atlas_mainborder_toolbar_button_row_1");
GUIObjectHide("atlas_mainborder_toolbar_button_row_2");
// Set toolbar height.
atlasCoord[ATLAS_LEFT_PANE_BKG].y = atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].y+atlasCoord[ATLAS_MAINBORDER_TOOLBAR_BKG].height;
setSizeArray("atlas_left_pane_bkg", atlasCoord[ATLAS_LEFT_PANE_BKG], left_screen, top_screen, left_screen, bottom_screen);}
// ====================================================================
function atlasOpenSectionMenu(atlasMenuName)
{
// Open the specified Section Menu; only one is open at a time.
// Clear all section menus to begin.
GUIObjectHide("atlas_left_pane_section_map");
GUIObjectHide("atlas_left_pane_section_terrain");
GUIObjectHide("atlas_bottom_pane_section_terrain");
GUIObjectHide("atlas_left_pane_section_object");
GUIObjectHide("atlas_bottom_pane_section_object");
switch (atlasMenuName)
{
case "none":
// Hide backgrounds.
GUIObjectHide("atlas_left_pane");
GUIObjectHide("atlas_bottom_pane");
// Hide headings.
GUIObjectHide("atlas_left_pane_section_heading_1");
GUIObjectHide("atlas_left_pane_section_heading_2");
GUIObjectHide("atlas_left_pane_section_heading_3");
break;
case "atlas_left_pane_section_map":
// Toggle backgrounds.
GUIObjectUnhide("atlas_left_pane");
GUIObjectHide("atlas_bottom_pane");
// Reveal headings.
GUIObjectRenameandReveal("atlas_left_pane_section_heading_1", "Map Creator");
GUIObjectRenameandReveal("atlas_left_pane_section_heading_2", "Map Type");
GUIObjectRenameandReveal("atlas_left_pane_section_heading_3", "Map Settings");
break;
case "atlas_left_pane_section_terrain":
// Toggle backgrounds.
GUIObjectUnhide("atlas_left_pane");
GUIObjectUnhide("atlas_bottom_pane");
GUIObjectUnhide("atlas_bottom_pane_section_terrain");
// Reveal headings.
GUIObjectRenameandReveal("atlas_left_pane_section_heading_1", "Terrain Editor");
GUIObjectRenameandReveal("atlas_left_pane_section_heading_2", "Edit Elevation");
GUIObjectHide("atlas_left_pane_section_heading_3");
break;
case "atlas_left_pane_section_object":
// Toggle backgrounds.
GUIObjectUnhide("atlas_left_pane");
GUIObjectUnhide("atlas_bottom_pane");
GUIObjectUnhide("atlas_bottom_pane_section_object");
// Reveal headings.
GUIObjectRenameandReveal("atlas_left_pane_section_heading_1", "Object Editor");
GUIObjectRenameandReveal("atlas_left_pane_section_heading_2", "Object List");
GUIObjectHide("atlas_left_pane_section_heading_3");
break;
}
// Reveal Section Menu content.
if (atlasMenuName != "none")
GUIObjectUnhide(atlasMenuName);
}
// ====================================================================