// Copyright © 2016-2017 Graham Sanderson, all rights reserved. // vim: columns=120 #include "lith_common.h" #include "lith_player.h" #include "lith_hudid.h" #include "lith_list.h" #include "lith_world.h" // Static Functions ----------------------------------------------------------| // // Lith_CBITab_Arsenal // static void Lith_CBITab_Arsenal(gui_state_t *g, struct player *p) { extern void Lith_CBITab_Upgrades(gui_state_t *g, struct player *p); extern void Lith_CBITab_Shop (gui_state_t *g, struct player *p); static __str const tabnames[] = {"Upgrades", "Shop"}; Lith_GUI_Tabs(g, &CBIState(g)->arsetab, tabnames, 13, 13, 1); switch(CBIState(g)->arsetab) { case cbi_tab_arsenal_upgrades: Lith_CBITab_Upgrades(g, p); break; case cbi_tab_arsenal_shop: Lith_CBITab_Shop (g, p); break; } } // // Lith_CBITab_Stat // static void Lith_CBITab_Stat(gui_state_t *g, struct player *p) { extern void Lith_CBITab_CBI (gui_state_t *g, struct player *p); extern void Lith_CBITab_Status(gui_state_t *g, struct player *p); static __str const tabnames[] = {"Attributes", "CBI"}; Lith_GUI_Tabs(g, &CBIState(g)->stattab, tabnames, 13, 13, 1); switch(CBIState(g)->stattab) { case cbi_tab_stat_attr: Lith_CBITab_Status(g, p); break; case cbi_tab_stat_cbi: Lith_CBITab_CBI (g, p); break; } } // // Lith_CBITab_Info // static void Lith_CBITab_Info(gui_state_t *g, struct player *p) { extern void Lith_CBITab_BIP(gui_state_t *g, struct player *p); extern void Lith_CBITab_Log(gui_state_t *g, struct player *p); static __str const tabnames[] = {"BIP", "Log"}; Lith_GUI_Tabs(g, &CBIState(g)->infotab, tabnames, 13, 13, 1); switch(CBIState(g)->infotab) { case cbi_tab_info_bip: Lith_CBITab_BIP(g, p); break; case cbi_tab_info_log: Lith_CBITab_Log(g, p); break; } } // Extern Functions ----------------------------------------------------------| // // Lith_PlayerUpdateCBIGUI // script void Lith_PlayerUpdateCBIGUI(struct player *p) { gui_state_t *g = &p->cbi.guistate; p->cbi.theme = p->getCVarI("lith_gui_theme"); if(p->cbi.theme != p->cbi.oldtheme) switch((p->cbi.oldtheme = p->cbi.theme)) { default: case cbi_theme_green: p->cbi.guistate.gfxprefix = ":UI_Green:"; break; case cbi_theme_rose: p->cbi.guistate.gfxprefix = ":UI_Rose:"; break; case cbi_theme_umi: p->cbi.guistate.gfxprefix = ":UI_Umi:"; break; case cbi_theme_ender: p->cbi.guistate.gfxprefix = ":UI_Ender:"; break; case cbi_theme_orange: p->cbi.guistate.gfxprefix = ":UI_Orange:"; break; case cbi_theme_grey: p->cbi.guistate.gfxprefix = ":UI_Grey:"; break; case cbi_theme_bassilla: p->cbi.guistate.gfxprefix = ":UI_Bassilla:"; break; case cbi_theme_ghost: p->cbi.guistate.gfxprefix = ":UI_Ghost:"; break; case cbi_theme_winxp: p->cbi.guistate.gfxprefix = ":UI_WinXP:"; break; } Lith_GUI_Begin(g, hid_end_cbi, 320, 240); if(!p->indialogue) Lith_GUI_UpdateState(g, p); DrawSpriteAlpha(StrParam("%SBackground", g->gfxprefix), g->hid--, 0.1, 0.1, TS, 0.7); if(Lith_GUI_Button(g, .x = 296, 13, Pre(btnexit))) p->useGUI(GUI_CBI); static __str tabnames[] = {"", "Status", "Info", "Settings"}; tabnames[0] = Language("LITH_TXT_Arsenal%S", p->discrim); Lith_GUI_Tabs(g, &CBIState(g)->maintab, tabnames, 13, 13, 0); extern void Lith_CBITab_Settings(gui_state_t *g, struct player *p); switch(CBIState(g)->maintab) { case cbi_tab_arsenal: Lith_CBITab_Arsenal (g, p); break; case cbi_tab_status: Lith_CBITab_Stat (g, p); break; case cbi_tab_info: Lith_CBITab_Info (g, p); break; case cbi_tab_settings: Lith_CBITab_Settings(g, p); break; } Lith_GUI_End(g, p->getCVarI("lith_gui_cursor")); } // // Lith_PlayerResetCBIGUI // void Lith_PlayerResetCBIGUI(struct player *p) { p->cbi.guistate.cx = 320 / 2; p->cbi.guistate.cy = 240 / 2; Lith_GUI_Init(&p->cbi.guistate, &p->cbi.st); p->cbi.st.upgrselold = -1; p->cbi.oldtheme = -1; p->bip.curcategory = BIPC_MAIN; p->bip.curpage = null; } // Scripts -------------------------------------------------------------------| // // Lith_KeyOpenCBI // script acs net void Lith_KeyOpenCBI(void) { if(ACS_Timer() < 10) return; withplayer(LocalPlayer) p->useGUI(GUI_CBI); } // EOF