1
0
Fork 0
forked from fte/fteqw
fteqw/quakec/fallout2/csqc/main.qc
2009-11-11 20:09:33 +00:00

427 lines
11 KiB
C++

entity viewentity;
float viewmodelindex;
.float lerptime;
float scrwidth;
float scrheight;
void() Quick_Draw =
{
drawstring('32 -80 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " q1 ", '8 8 8', '1 1 1', 1);
QuickImage('32 -72 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 5);
drawstring('64 -80 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " q2 ", '8 8 8', '1 1 1', 1);
QuickImage('64 -72 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 6);
};
void() DrawScreen =
{
ScreenImage();
};
void() Weapon_Draw =
{
local float hand;
hand = getstati(61);
if (hand == 1)
{
drawstring('0 -32 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " HAND 1 ", '8 8 8', '1 1 1', 1);
SlotImage('0 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 1);
}
if (hand == 2)
{
drawstring('0 -32 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " HAND 2 ", '8 8 8', '1 1 1', 1);
SlotImage('0 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 2);
}
};
void() Crosshair_Draw =
{
local float x, a;
local vector y;
if (getstati(54) == 0)
a = 16;
else if (getstati(54) == 1)
a = 12;
else if (getstati(54) == 2)
a = 8;
y = '1 0 0'*scrwidth*0.50 + '0 1 0'*scrheight*0.50;
x = a + (4 * getstati(99));
Crosshair(y + '1 0 0'*x, "gui/xhair.jpg");
Crosshair(y + '-1 0 0'*x, "gui/xhair.jpg");
Crosshair(y + '0 1 0'*x, "gui/xhair.jpg");
Crosshair(y + '0 -1 0'*x, "gui/xhair.jpg");
x = (a+2) + (4 * getstati(99));
Crosshair(y + '1 0 0'*x, "gui/xhair.jpg");
Crosshair(y + '-1 0 0'*x, "gui/xhair.jpg");
Crosshair(y + '0 1 0'*x, "gui/xhair.jpg");
Crosshair(y + '0 -1 0'*x, "gui/xhair.jpg");
x = (a-2) + (4 * getstati(99));
Crosshair(y + '1 0 0'*x, "gui/xhair.jpg");
Crosshair(y + '-1 0 0'*x, "gui/xhair.jpg");
Crosshair(y + '0 1 0'*x, "gui/xhair.jpg");
Crosshair(y + '0 -1 0'*x, "gui/xhair.jpg");
};
void() Position_Draw =
{
float pos, s;
string sn;
pos = getstati(54);
s = getstati(58);
sn = ftos(s);
if (s > 0)
{
drawstring('0 -32 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), "sneak", '8 8 8', '1 1 1', 1);
PosImage('0 -24 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), 1);
drawstring('0 8 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), strcat("%", sn), '8 8 8', '1 1 1', 1);
}
else if (pos == 1)
{
drawstring('0 -32 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), "duck", '8 8 8', '1 1 1', 1);
PosImage('0 -24 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), 1);
}
else if (pos == 2)
{
drawstring('0 -32 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), "prone", '8 8 8', '1 1 1', 1);
PosImage('0 -24 0'+('1 0 0'*(scrwidth*0.40)) +('0 1 0'*(scrheight*0.90)), 2);
}
};
void() Chem_Draw =
{
local float rage, heal;
rage = getstati(55);
heal = getstati(56);
if (rage == 255)
ChemImage('0 -24 0'+('1 0 0'*(scrwidth*0.60)) +('0 1 0'*(scrheight*0.20)), 0);
else if (rage == IID_CHEM_ADRENALINE)
ChemImage('0 -24 0'+('1 0 0'*(scrwidth*0.60)) +('0 1 0'*(scrheight*0.20)), 1);
else if (rage == IID_CHEM_PSYCHO)
ChemImage('0 -24 0'+('1 0 0'*(scrwidth*0.60)) +('0 1 0'*(scrheight*0.20)), 2);
else if (rage == IID_CHEM_BESERK)
ChemImage('0 -24 0'+('1 0 0'*(scrwidth*0.60)) +('0 1 0'*(scrheight*0.20)), 3);
else if (heal > 0)
ChemImage('32 -24 0'+('1 0 0'*(scrwidth*0.60)) +('0 1 0'*(scrheight*0.20)), 4);
else if (rage == 777)
ChemImage('0 -24 0'+('1 0 0'*(scrwidth*0.60)) +('0 1 0'*(scrheight*0.20)), 5);
};
void() Ammo_Draw =
{
local float hand, weap, ammo, amount;
local string reveal;
hand = getstati(61);
if (hand == 1)
{
weap = ToIID(getstati(32));
ammo = WeaponAmmoType(weap);
amount = ShadowSlotOfItem(self, ammo);
//drawstring('300 350 0'+('1 0 0'*IMGSIZEF), " AMMO ", '8 8 8', '1 1 1', 1);
//SlotImage('300 358 0'+('1 0 0'*IMGSIZEF), amount);
drawstring('-64 -32 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " AMMO ", '8 8 8', '1 1 1', 1);
if (amount > 0)
SlotImage('-64 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), amount);
else
BlankImage('-64 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 0);
}
else if (hand == 2)
{
weap = ToIID(getstati(33));
ammo = WeaponAmmoType(weap);
amount = ShadowSlotOfItem(self, ammo);
reveal = ftos(amount);
//drawstring('300 350 0'+('1 0 0'*IMGSIZEF), " AMMO ", '8 8 8', '1 1 1', 1);
//SlotImage('300 358 0'+('1 0 0'*IMGSIZEF), amount);
drawstring('-64 -32 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " AMMO ", '8 8 8', '1 1 1', 1);
if (amount > 0)
SlotImage('-64 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), amount);
else
BlankImage('-64 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 0);
}
};
void() Money_Draw =
{
string cash;
cash = ftos(getstati(50));
drawstring('64 -32 0'+('1 0 0'*(scrwidth*0.50)) +('0 1 0'*(scrheight*0.90)), cash, '8 8 8', '1 1 1', 1);
MoneyImage('64 -24 0'+('1 0 0'*(scrwidth*0.50)) +('0 1 0'*(scrheight*0.90)), "money.jpg");
};
void() Energy_Draw =
{
string cash;
cash = ftos(getstati(51));
drawstring('34 -32 0'+('1 0 0'*(scrwidth*0.50)) +('0 1 0'*(scrheight*0.90)), cash, '8 8 8', '1 1 1', 1);
MoneyImage('32 -24 0'+('1 0 0'*(scrwidth*0.50)) +('0 1 0'*(scrheight*0.90)), "energy.jpg");
};
void() Weight_Draw =
{
float carry,max,enc;
string image;
carry = getstati(52);
max = getstati(53);
enc = carry/max;
if (enc <= 0.10)
image = "weight/weight_zero.jpg";
else if (enc <= 0.20)
image = "weight/weight_one.jpg";
else if (enc <= 0.35)
image = "weight/weight_two.jpg";
else if (enc <= 0.50)
image = "weight/weight_three.jpg";
else if (enc <= 0.65)
image = "weight/weight_four.jpg";
else if (enc <= 0.80)
image = "weight/weight_five.jpg";
else if (enc <= 0.95)
image = "weight/weight_six.jpg";
else
image = "weight/weight_seven.jpg";
MoneyImage('0 -24 0'+('1 0 0'*(scrwidth*0.50)) +('0 1 0'*(scrheight*0.90)), image);
};
void() Armor_Draw =
{
//drawstring('300 350 0'+('3 0 0'*IMGSIZEF), " ARMOR ", '8 8 8', '1 1 1', 1);
//SlotImage('300 358 0'+('3 0 0'*IMGSIZEF), 3);
drawstring('64 -32 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), " ARMOR ", '8 8 8', '1 1 1', 1);
SlotImage('64 -24 0'+('1 0 0'*(scrwidth*0.80)) +('0 1 0'*(scrheight*0.90)), 3);
};
void() Health_Draw =
{
float hp, maxhp, status, perc, hpos, tpos, opos, ostatus, ones;
string string_hpos, string_tpos, string_opos;
hp = getstati(48);
maxhp = getstati(49);
status = (floor(hp) * 100) / maxhp;
perc = status;
if (hp >= maxhp)
string_hpos = "one.jpg";
else
string_hpos = "zero.jpg";
ostatus = status;
status = status * 0.10;
status = floor(status);
if (status == 0)
string_tpos = "zero.jpg";
if (status == 1)
string_tpos = "one.jpg";
if (status == 2)
string_tpos = "two.jpg";
if (status == 3)
string_tpos = "three.jpg";
if (status == 4)
string_tpos = "four.jpg";
if (status == 5)
string_tpos = "five.jpg";
if (status == 6)
string_tpos = "six.jpg";
if (status == 7)
string_tpos = "seven.jpg";
if (status == 8)
string_tpos = "eight.jpg";
if (status == 9)
string_tpos = "nine.jpg";
if (status == 10)
string_tpos = "zero.jpg";
ones = (ostatus - (status*10));
ones = floor(ones);
if (ones == 0)
string_opos = "zero.jpg";
if (ones == 1)
string_opos = "one.jpg";
if (ones == 2)
string_opos = "two.jpg";
if (ones == 3)
string_opos = "three.jpg";
if (ones == 4)
string_opos = "four.jpg";
if (ones == 5)
string_opos = "five.jpg";
if (ones == 6)
string_opos = "six.jpg";
if (ones == 7)
string_opos = "seven.jpg";
if (ones == 8)
string_opos = "eight.jpg";
if (ones == 9)
string_opos = "nine.jpg";
if (status == 10)
string_opos = "zero.jpg";
if (hp <= 0)
{
string_hpos = "zero.jpg";
string_tpos = "zero.jpg";
string_opos = "zero.jpg";
}
if (perc > 50)
{
HealthImage('0 -24 0'+('0 1 0'*(scrheight*0.90)), 0, "percent.jpg");
HealthImage('32 -24 0'+('0 1 0'*(scrheight*0.90)), 0, string_hpos);
HealthImage('64 -24 0'+('0 1 0'*(scrheight*0.90)), 0, string_tpos);
HealthImage('96 -24 0'+('0 1 0'*(scrheight*0.90)), 0, string_opos);
}
else if (perc > 25)
{
HealthImage('0 -24 0'+('0 1 0'*(scrheight*0.90)), 1, "percent.jpg");
HealthImage('32 -24 0'+('0 1 0'*(scrheight*0.90)), 1, string_hpos);
HealthImage('64 -24 0'+('0 1 0'*(scrheight*0.90)), 1, string_tpos);
HealthImage('96 -24 0'+('0 1 0'*(scrheight*0.90)), 1, string_opos);
}
else
{
HealthImage('0 -24 0'+('0 1 0'*(scrheight*0.90)), 2, "percent.jpg");
HealthImage('32 -24 0'+('0 1 0'*(scrheight*0.90)), 2, string_hpos);
HealthImage('64 -24 0'+('0 1 0'*(scrheight*0.90)), 2, string_tpos);
HealthImage('96 -24 0'+('0 1 0'*(scrheight*0.90)), 2, string_opos);
}
};
void() DoThatViewModelThing =
{
float newframe, newmodel;
newframe = getstati(STAT_WEAPONFRAME);
newmodel = getstati(STAT_WEAPONMODEL);
if (newmodel != viewmodelindex)
{ //changed entirly.
viewmodelindex = newmodel;
self.frame2 = self.frame = newframe;
self.lerptime = time;
}
else if (newframe != self.frame)
{
self.frame2 = self.frame;
self.frame = newframe;
self.lerptime = time;
}
self.lerpfrac = 1-(time-self.lerptime)*10;
if (self.lerpfrac < 0) self.lerpfrac = 0;
self.modelindex = viewmodelindex;
};
void() CSQC_Init =
{
viewentity = spawn();
viewentity.predraw = DoThatViewModelThing;
viewentity.drawmask = MASK_NORMAL;
viewentity.renderflags = RF_VIEWMODEL | RF_DEPTHHACK;
FigureOutButtons();
};
void(float vwidth, float vheight, float do2d) CSQC_UpdateView =
{
float usehud;
scrwidth = vwidth;
scrheight = vheight;
clearscene();
if (0)//!cvar("cg_usehud"))
{
setviewprop(VF_DRAWENGINESBAR, 0);
usehud = true;
}
else
{
setviewprop(VF_DRAWENGINESBAR, 1);
}
setviewprop(VF_DRAWCROSSHAIR, 1);
//force fullscreen views.
setviewprop(VF_MIN, '0 0 0');
setviewprop(VF_SIZE_X, scrwidth);
setviewprop(VF_SIZE_Y, scrheight);
addentities(MASK_ENGINE | MASK_NORMAL);
renderscene();
// if (usehud)
// Hud_Draw();
if (getstati(57) == 1)
BriefImage();
else if (getstati(57) == 2)
DrawScreen();
else if (getstati(57) == 3)
DrawScreen();
else if (getstati(57) == 4)//pain
DrawScreen();
else if (getstati(57) == 5)//flash
DrawScreen();
else if (getstati(109) == 0)
DrawScreen();
else if (show_trader)
Trader_Draw();
else if (show_inventory)
Invent_Draw();
else if (show_pipboy)
Pipboy_Draw();
else
{
Health_Draw();
Weight_Draw();
Money_Draw();
Ammo_Draw();
Energy_Draw();
Weapon_Draw();
Armor_Draw();
Position_Draw();
Quick_Draw();
Chem_Draw();
Crosshair_Draw();
}
};