/***********************************\ BARS \***********************************/ //======================================== // Klasse für den Nutzer //======================================== class Bar { var int x; var int y; var int barTop; var int barLeft; var int width; var int height; var string backTex; var string barTex; var int value; var int valueMax; }; //======================================== // Prototyp für Konstruktor-Instanz //======================================== prototype GothicBar(Bar) { x = Print_Screen[PS_X] / 2; y = Print_Screen[PS_Y] - 20; barTop = 3; barLeft = 7; width = 180; height = 20; backTex = "Bar_Back.tga"; barTex = "Bar_Misc.tga"; value = 100; valueMax = 100; }; //======================================== // Beispiel für Konstruktor-Instanz //======================================== instance GothicBar@(GothicBar); //======================================== // [intern] Klasse für PermMem //======================================== class _bar { var int valMax; var int barW; var int v0; // zCView(h) var int v1; // zCView(h) }; instance _bar@(_bar); func void _bar_Delete(var _bar b) { if(Hlp_IsValidHandle(b.v0)) { delete(b.v0); }; if(Hlp_IsValidHandle(b.v1)) { delete(b.v1); }; }; //======================================== // Höchstwert setzen //======================================== func void Bar_SetMax(var int bar, var int max) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); b.valMax = max; }; //======================================== // Wert in 1/1000 //======================================== func void Bar_SetPromille(var int bar, var int pro) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); if(pro > 1000) { pro = 1000; }; View_Resize(b.v1, (pro * b.barW) / 1000, -1); }; //======================================== // Wert in 1/100 //======================================== func void Bar_SetPercent(var int bar, var int perc) { Bar_SetPromille(bar, perc*10); }; //======================================== // Wert der Bar //======================================== func void Bar_SetValue(var int bar, var int val) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); if(val) { Bar_SetPromille(bar, (val * 1000) / b.valMax); } else { Bar_SetPromille(bar, 0); }; }; //======================================== // Neue Bar erstellen //======================================== func int Bar_Create(var int inst) { Print_GetScreenSize(); var int ptr; ptr = create(inst); var bar bu; bu = MEM_PtrToInst(ptr); var int bh; bh = new(_bar@); var _bar b; b = get(bh); b.valMax = bu.valueMax; var int buhh; var int buwh; var int ah; var int aw; buhh = bu.height / 2; buwh = bu.width / 2; if(buhh*2 < bu.height) {ah = 1;} else {ah = 0;}; if(buwh*2 < bu.width) {aw = 1;} else {aw = 0;}; b.v0 = View_CreatePxl(bu.x - buwh, bu.y - buhh, bu.x + buwh + aw, bu.y + buhh + ah); buhh -= bu.barTop; buwh -= bu.barLeft; b.barW = Print_ToVirtual(bu.width - bu.barLeft * 2 + aw, PS_X); b.v1 = View_CreatePxl(bu.x - buwh, bu.y - buhh, bu.x + buwh + aw, bu.y + buhh + ah); View_SetTexture(b.v0, bu.backTex); View_SetTexture(b.v1, bu.barTex); var zCView v; v = View_Get(b.v0); v.fxOpen = 0; v.fxClose = 0; v = View_Get(b.v1); v.fxOpen = 0; v.fxClose = 0; View_Open(b.v0); View_Open(b.v1); Bar_SetValue(bh, bu.value); free(ptr, inst); return bh; }; //======================================== // Bar löschen //======================================== func void Bar_Delete(var int bar) { if(Hlp_IsValidHandle(bar)) { delete(bar); }; }; //======================================== // Bar zeigen //======================================== func void Bar_Hide(var int bar) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); View_Close(b.v0); View_Close(b.v1); }; //======================================== // Bar verstecken //======================================== func void Bar_Show(var int bar) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); View_Open(b.v0); View_Open(b.v1); }; //======================================== // Bar bewegen //======================================== func void Bar_MoveTo(var int bar, var int x, var int y) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); var zCView v; v = View_Get(b.v0); x -= v.vsizex>>1; y -= v.vsizey>>1; x -= v.vposx; y -= v.vposy; View_Move(b.v0, x, y); View_Move(b.v1, x, y); }; //======================================== // Bar Alpha //======================================== func void Bar_SetAlpha(var int bar, var int alpha) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); var zCView v; v = View_Get(b.v0); v.alpha = alpha; v = View_Get(b.v1); v.alpha = alpha; }; //======================================== // Bar Texture //======================================== func void Bar_SetBackTexture(var int bar, var string backTex) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); View_SetTexture(b.v0, backTex); }; func void Bar_SetBarTexture(var int bar, var string barTex) { if(!Hlp_IsValidHandle(bar)) { return; }; var _bar b; b = get(bar); View_SetTexture(b.v1, barTex); };