140 lines
3.0 KiB
ActionScript
140 lines
3.0 KiB
ActionScript
#priority init -100
|
|
import elements.BaseGuiElement;
|
|
import elements.GuiButton;
|
|
import elements.GuiText;
|
|
import elements.GuiSprite;
|
|
import elements.GuiMarkupText;
|
|
import elements.GuiContextMenu;
|
|
import elements.MarkupTooltip;
|
|
import tabs.Tab;
|
|
import util.formatting;
|
|
import timing;
|
|
import influence;
|
|
from tabs.tabbar import TAB_HEIGHT, GLOBAL_BAR_HEIGHT, ActiveTab;
|
|
|
|
class ClearEdictOption : GuiContextOption {
|
|
ClearEdictOption() {
|
|
super(locale::EDICT_CLEAR_OPTION);
|
|
}
|
|
|
|
void call(GuiContextMenu@ menu) override {
|
|
playerEmpire.clearEdict();
|
|
}
|
|
};
|
|
|
|
class EdictDisplay : BaseGuiElement {
|
|
GuiMarkupText@ text;
|
|
string prevText;
|
|
bool clicking = false;
|
|
|
|
EdictDisplay() {
|
|
super(null, recti_area(210,TAB_HEIGHT+GLOBAL_BAR_HEIGHT, 200, 30));
|
|
@text = GuiMarkupText(this, recti_area(6,6, 120,24));
|
|
text.expandWidth = true;
|
|
|
|
updateAbsolutePosition();
|
|
}
|
|
|
|
bool onGuiEvent(const GuiEvent& evt) {
|
|
switch(evt.type) {
|
|
case GUI_Mouse_Left:
|
|
if(evt.caller is this)
|
|
clicking = false;
|
|
break;
|
|
}
|
|
return BaseGuiElement::onGuiEvent(evt);
|
|
}
|
|
|
|
void showMenu() {
|
|
if(playerEmpire.SubjugatedBy !is null)
|
|
return;
|
|
|
|
GuiContextMenu menu(mousePos);
|
|
menu.addOption(ClearEdictOption());
|
|
menu.finalize();
|
|
}
|
|
|
|
bool onMouseEvent(const MouseEvent& event, IGuiElement@ source) {
|
|
if(source is this || source is text) {
|
|
switch(event.type) {
|
|
case MET_Button_Down:
|
|
if(event.button == 1) {
|
|
clicking = true;
|
|
return true;
|
|
}
|
|
break;
|
|
case MET_Button_Up:
|
|
if(event.button == 1) {
|
|
if(clicking)
|
|
showMenu();
|
|
return true;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return BaseGuiElement::onMouseEvent(event, source);
|
|
}
|
|
|
|
void tick(double time) {
|
|
Empire@ master = playerEmpire.SubjugatedBy;
|
|
uint type = 0;
|
|
if(master is null)
|
|
type = playerEmpire.getEdictType();
|
|
else
|
|
type = master.getEdictType();
|
|
|
|
visible = (ActiveTab.category == TC_Galaxy) && type != 0;
|
|
|
|
if(visible) {
|
|
string txt;
|
|
Empire@ emp; Object@ obj;
|
|
if(master !is null) {
|
|
@emp = master.getEdictEmpire();
|
|
@obj = master.getEdictObject();
|
|
txt = locale::EDICT_FROM_MASTER;
|
|
}
|
|
else {
|
|
@emp = playerEmpire.getEdictEmpire();
|
|
@obj = playerEmpire.getEdictObject();
|
|
txt = locale::EDICT_TO_VASSALS;
|
|
}
|
|
|
|
txt = format(txt, formatEmpireName(master),
|
|
format(localize("#EDICT_"+toString(type)),
|
|
formatEmpireName(emp), formatObject(obj)));
|
|
|
|
if(txt != prevText) {
|
|
prevText = txt;
|
|
text.text = txt;
|
|
text.updateAbsolutePosition();
|
|
size = vec2i(text.textWidth + 12, 30);
|
|
|
|
string tt;
|
|
if(master !is null)
|
|
tt = locale::TT_EDICT_FROM_MASTER;
|
|
else
|
|
tt = locale::TT_EDICT_TO_VASSALS;
|
|
|
|
tt = format(tt, formatEmpireName(master),
|
|
format(localize("#TT_EDICT_"+toString(type)),
|
|
formatEmpireName(emp), formatObject(obj)));
|
|
setMarkupTooltip(this, tt, width=300);
|
|
}
|
|
}
|
|
}
|
|
|
|
void draw() override {
|
|
skin.draw(SS_TimeDisplay, SF_Normal, AbsolutePosition);
|
|
BaseGuiElement::draw();
|
|
}
|
|
};
|
|
|
|
EdictDisplay@ disp;
|
|
void init() {
|
|
@disp = EdictDisplay();
|
|
}
|
|
|
|
void tick(double time) {
|
|
disp.tick(time);
|
|
}
|