#include #define MARGIN 2 #define MARGIN_PRE 2 #define MARGIN_POST 6 #define CHECKMARK_WIDTH 10 #define ARROW_WIDTH 10 Function setArrow(int want); Function setCheckmark(int want); Function updatePos(); Global Group mgrp; Global GuiObject background; Class GuiObject ItemSwitcher; Global int id; Global int want_checkmark; Global int want_arrow; Global ItemSwitcher a, b, c, d; Global GuiObject _a, _b, _c; System.onScriptLoaded() { mgrp = getScriptGroup(); if (mgrp == NULL) { messagebox("popupitem.maki: cannot run outside a group", "Error", 0, ""); return; } _a = mgrp.getObject("popup.item.checkmark"); a = _a; _b = mgrp.getObject("popup.item.text"); b = _b; _c = mgrp.getObject("popup.item.submenuarrow"); c = _c; background = mgrp.getObject("popup.background"); d = background; want_checkmark = -1; want_arrow = -1; } mgrp.onNotify(String command, String param, int a, int b) { if (command == "id") id = StringToInteger(param); if (command == "arrow") setArrow(StringToInteger(param)); if (command == "checkmark") setCheckMark(StringToInteger(param)); } ItemSwitcher.onEnterArea() { background.cancelTarget(); background.setAlpha(255); } ItemSwitcher.onLeaveArea() { background.setTargetA(0); background.setTargetSpeed(0.25); background.gotoTarget(); } ItemSwitcher.onLeftButtonDown(int x, int y) { mgrp.endModal(id); } setArrow(int want) { if (want_arrow == want) return; want_arrow = want; updatePos(); } setCheckmark(int want) { if (want_checkmark == want) return; want_checkmark = want; updatePos(); } updatePos() { int x = MARGIN; int mx = MARGIN; if (!want_checkmark) { if (_a != NULL) { _a.hide(); } } else { if (_a != NULL) { _a.show(); } x += CHECKMARK_WIDTH + MARGIN_PRE; mx += CHECKMARK_WIDTH + MARGIN_PRE; } if (!want_arrow) { if (_c != NULL) { _c.hide(); } } else { if (_c != NULL) { _c.show(); } mx += ARROW_WIDTH + MARGIN_POST; } mx += MARGIN; if (_b != NULL) { _b.setXmlParam("x", IntegerToString(x)); _b.setXmlParam("w", "-" + IntegerToString(mx)); } }