Cleaned up the mess, at this time, only viable data get synced (_work directory for Gothic-data, miranda for mdc-scripts. Need to symlink files to a working directory.
208 lines
5.1 KiB
D
208 lines
5.1 KiB
D
/***********************************\
|
|
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);
|
|
//b.v0 = View_CreatePxl(bu.x - buwh+5, bu.y - buhh, bu.x + buwh + aw-5, 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;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|