WarsmashModEngine/resources/Scripts/common.jui

95 lines
4.7 KiB
Plaintext
Raw Normal View History

//============================================================================
// User Interface scripts for the Warsmash mod engine. This is
// an attempt to get these defined in an external import that
// a map can override. Unfortunately, although I would like for
// this to be a JASS file, it is not very consistent with the
// notion of the JASS2 VM to define UI, because handles are
// mostly network synced. So, we will assume the contents
// of this file are run in a special client-only JASS VM
// once I implement networking, so that this script will not
// cause a desync as it would if it was in the standard game
// JASS files. For that reason, it will have '.jui' extension
// to signify it runs in this modified JASS VM, instead of
// standard '.j' as used for JASS2 script files.
//
// Right now there is some duplicated code from common.j --
// maybe later on we will load that stuff first, then this
// one in the same variable space?
//
type framehandle extends handle
type framepointtype extends handle
native LogError takes string message returns nothing
constant native ConvertFramePointType takes integer i returns framepointtype
globals
//===================================================
// UI API constants
//===================================================
constant framepointtype FRAMEPOINT_TOPLEFT = ConvertFramePointType(0)
constant framepointtype FRAMEPOINT_TOP = ConvertFramePointType(1)
constant framepointtype FRAMEPOINT_TOPRIGHT = ConvertFramePointType(2)
constant framepointtype FRAMEPOINT_LEFT = ConvertFramePointType(3)
constant framepointtype FRAMEPOINT_CENTER = ConvertFramePointType(4)
constant framepointtype FRAMEPOINT_RIGHT = ConvertFramePointType(5)
constant framepointtype FRAMEPOINT_BOTTOMLEFT = ConvertFramePointType(6)
constant framepointtype FRAMEPOINT_BOTTOM = ConvertFramePointType(7)
constant framepointtype FRAMEPOINT_BOTTOMRIGHT = ConvertFramePointType(8)
endglobals
//===================================================
// UI API
//===================================================
// Loads an entry from the file "UI\war3skins.txt" and returns
// it as the current GAMEUI. The default possible
// strings are "Human", "Orc", "NightElf", and "Undead".
// Some UI FDF templates will use this information as
// the source for lookup strings as a means to change
// their style.
// Calling this more than once will probably crash the game,
// or something, so only call it once on startup.
native CreateRootFrame takes string skinName returns framehandle
// Loads the (T)able (O)f (C)ontents file.
// This must be a simple text document with each line
// having only a filepath of a .FDF frame template
// definition file to load. Unlike War3 engine,
// I do not require the file to include one extra
// blank line at the end.
//
// We typically call this first during UI setup, and
// only once for a given mod.
native LoadTOCFile takes string TOCFile returns framehandle
// Spawn a SIMPLEFRAME element that was defined in a FDF
// template onto the screen. The "name" field must match
// the name of a template to spawn, loaded with LoadTOCFile.
// The create context is pretty pointless, but I think
// they use it so that they have an integer tag on the
// "Attack 1" and "Attack 2" ui components. I was trying
// to keep parity with the FDF UI APIs from 1.31, imagine
// that.
native CreateSimpleFrame takes string name, framehandle owner, integer createContext returns framehandle
// Set the absolute point (often called Anchor) for the frame handle.
// See FDF template files for examples
native FrameSetAbsPoint takes framehandle frame, framepointtype point, real x, real y returns nothing
// Created for Warsmash engine, not a part of 1.31 UI apis,
// and at some point it might be removed. Basically
// this function will apply Anchors and SetPoints assigned
// to the frame handle and all its children and resolve where
// they should go onscreen. Generally in my experience,
// War3 will do this automatically in their FDF system.
native FramePositionBounds takes framehandle frame returns nothing
// Used to lookup fields in the Skin data, for example
// SkinGetField("TimeOfDayIndicator") will return the
// string "UI\\Console\\Human\\HumanUI-TimeIndicator.mdl"
// when the "Human" skin was loaded with CreateRootFrame
native SkinGetField takes string field returns string