2003-05-14 21:17:32 +00:00
|
|
|
#include "gib.h"
|
|
|
|
#include "draw.h"
|
|
|
|
#include "Array.h"
|
|
|
|
#include "HUD.h"
|
|
|
|
#include "string.h"
|
|
|
|
#include "debug.h"
|
|
|
|
|
|
|
|
@static Array HUDObjects;
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_new_text_f =
|
|
|
|
{
|
|
|
|
local HUDObject newText;
|
|
|
|
|
|
|
|
if (argc != 4)
|
|
|
|
return;
|
|
|
|
|
|
|
|
newText = [[HUDText alloc] initWithComponents
|
2003-05-15 06:49:10 +00:00
|
|
|
:stoi (argv[1])
|
|
|
|
:stoi (argv[2])
|
2003-05-14 21:17:32 +00:00
|
|
|
:argv[3]
|
|
|
|
];
|
|
|
|
|
|
|
|
[HUDObjects addItem :newText];
|
|
|
|
|
|
|
|
GIB_Return (itos ([newText handle]));
|
|
|
|
};
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_new_graphic_f =
|
|
|
|
{
|
|
|
|
local HUDGraphic newGraphic;
|
|
|
|
|
|
|
|
if (argc != 4)
|
|
|
|
return;
|
|
|
|
|
|
|
|
newGraphic = [[HUDGraphic alloc] initWithComponents
|
2003-05-15 06:49:10 +00:00
|
|
|
:stoi (argv[1])
|
|
|
|
:stoi (argv[2])
|
2003-05-14 21:17:32 +00:00
|
|
|
:argv[3]
|
|
|
|
];
|
|
|
|
|
|
|
|
[HUDObjects addItem :newGraphic];
|
|
|
|
|
|
|
|
GIB_Return (itos ([newGraphic handle]));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_delete_f =
|
|
|
|
{
|
|
|
|
local integer i;
|
|
|
|
local HUDObject trashObject;
|
|
|
|
|
|
|
|
if (argc < 2)
|
|
|
|
return;
|
|
|
|
|
|
|
|
for (i = 1; i < argc; i++) {
|
2003-05-15 06:49:10 +00:00
|
|
|
trashObject = GIB_Handle_Get (stoi (argv[i]), HUDHandleClass);
|
2003-05-14 21:17:32 +00:00
|
|
|
if (trashObject) {
|
|
|
|
[HUDObjects removeItem :trashObject];
|
|
|
|
[trashObject free];
|
|
|
|
} else
|
2003-05-15 06:49:10 +00:00
|
|
|
dprint (sprintf ("Warning: no HUD object associated with handle %i\n", stoi (argv[i])));
|
2003-05-14 21:17:32 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2003-05-15 06:49:10 +00:00
|
|
|
void (integer argc, string [] argv) gib_hud_get_rect_f =
|
|
|
|
{
|
|
|
|
local HUDObject myObject;
|
|
|
|
local Point myPoint;
|
|
|
|
|
|
|
|
if (argc != 2)
|
|
|
|
return;
|
|
|
|
|
|
|
|
myObject = GIB_Handle_Get (stoi (argv[1]), HUDHandleClass);
|
|
|
|
if (!myObject)
|
|
|
|
return;
|
|
|
|
|
|
|
|
myPoint = [myObject origin];
|
|
|
|
GIB_Return (itos ([myPoint x]));
|
|
|
|
GIB_Return (itos ([myPoint y]));
|
|
|
|
myPoint = [myObject size];
|
|
|
|
GIB_Return (itos ([myPoint x]));
|
|
|
|
GIB_Return (itos ([myPoint y]));
|
|
|
|
};
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_get_size_f =
|
2003-05-14 21:17:32 +00:00
|
|
|
{
|
|
|
|
local HUDObject myObject;
|
|
|
|
local Point myOrigin;
|
|
|
|
|
|
|
|
if (argc != 2)
|
|
|
|
return;
|
|
|
|
|
2003-05-15 06:49:10 +00:00
|
|
|
myObject = GIB_Handle_Get (stoi (argv[1]), HUDHandleClass);
|
2003-05-14 21:17:32 +00:00
|
|
|
if (!myObject)
|
|
|
|
return;
|
|
|
|
|
|
|
|
myOrigin = [myObject origin];
|
|
|
|
GIB_Return (itos ([myOrigin x]));
|
|
|
|
GIB_Return (itos ([myOrigin y]));
|
|
|
|
};
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_set_translate_f =
|
|
|
|
{
|
|
|
|
local integer i;
|
|
|
|
local Point p;
|
|
|
|
|
|
|
|
if (argc < 4)
|
|
|
|
return;
|
|
|
|
|
2003-05-15 06:49:10 +00:00
|
|
|
p = [[Point alloc] initWithComponents :stoi (argv[argc-2]) :stoi (argv[argc-1])];
|
2003-05-14 21:17:32 +00:00
|
|
|
|
|
|
|
if (argv[0] == "HUD::translate")
|
|
|
|
for (i = 1; i < argc - 2; i++)
|
2003-05-15 06:49:10 +00:00
|
|
|
[(HUDObject) GIB_Handle_Get (stoi (argv[i]), HUDHandleClass) translate :p];
|
2003-05-14 21:17:32 +00:00
|
|
|
else
|
|
|
|
for (i = 1; i < argc - 2; i++)
|
2003-05-15 06:49:10 +00:00
|
|
|
[(HUDObject) GIB_Handle_Get (stoi (argv[i]), HUDHandleClass) setOrigin :p];
|
2003-05-14 21:17:32 +00:00
|
|
|
[p free];
|
|
|
|
};
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_set_text_f =
|
|
|
|
{
|
|
|
|
local HUDText myObject;
|
|
|
|
|
|
|
|
if (argc != 3)
|
|
|
|
return;
|
|
|
|
|
2003-05-15 06:49:10 +00:00
|
|
|
myObject = GIB_Handle_Get (stoi (argv[1]), HUDHandleClass);
|
2003-05-14 21:17:32 +00:00
|
|
|
if (!myObject || ![myObject isKindOf :[HUDText class]])
|
|
|
|
return;
|
|
|
|
[myObject setText :argv[2]];
|
|
|
|
};
|
|
|
|
|
|
|
|
void (integer argc, string [] argv) gib_hud_set_file_f =
|
|
|
|
{
|
|
|
|
local HUDGraphic myObject;
|
|
|
|
|
|
|
|
if (argc != 3)
|
|
|
|
return;
|
|
|
|
|
2003-05-15 06:49:10 +00:00
|
|
|
myObject = GIB_Handle_Get (stoi (argv[1]), HUDHandleClass);
|
2003-05-14 21:17:32 +00:00
|
|
|
if (!myObject || ![myObject isKindOf :[HUDGraphic class]])
|
|
|
|
return;
|
|
|
|
[myObject setFile :argv[2]];
|
|
|
|
};
|
|
|
|
|
|
|
|
void () HUD_Init =
|
|
|
|
{
|
|
|
|
GIB_Builtin_Add ("HUD::newText", gib_hud_new_text_f);
|
|
|
|
GIB_Builtin_Add ("HUD::newGraphic", gib_hud_new_graphic_f);
|
|
|
|
GIB_Builtin_Add ("HUD::delete", gib_hud_delete_f);
|
2003-05-15 06:49:10 +00:00
|
|
|
GIB_Builtin_Add ("HUD::getRect", gib_hud_get_rect_f);
|
2003-05-14 21:17:32 +00:00
|
|
|
GIB_Builtin_Add ("HUD::setOrigin", gib_hud_set_translate_f);
|
|
|
|
GIB_Builtin_Add ("HUD::translate", gib_hud_set_translate_f);
|
|
|
|
GIB_Builtin_Add ("HUD::setText", gib_hud_set_text_f);
|
|
|
|
GIB_Builtin_Add ("HUD::setFile", gib_hud_set_file_f);
|
|
|
|
|
|
|
|
// Initialize HUDObject class
|
|
|
|
[HUDObject initClass];
|
|
|
|
|
|
|
|
// Create array of HUD objects
|
|
|
|
HUDObjects = [[Array alloc] init];
|
|
|
|
};
|
|
|
|
|
|
|
|
void () menu_draw_hud =
|
|
|
|
{
|
|
|
|
local integer i;
|
|
|
|
local HUDObject myHUDObject;
|
|
|
|
|
|
|
|
for (i = 0; i < [HUDObjects count]; i++) {
|
|
|
|
myHUDObject = [HUDObjects getItemAt :i];
|
|
|
|
[myHUDObject display];
|
|
|
|
}
|
|
|
|
};
|