entity viewentity;
float viewmodelindex;

.float lerptime;


void() Quick_Draw =
{
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

      drawstring('32 -80 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), " q1 ", '8 8 8', '1 1 1', 1);
      QuickImage('32 -72 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), 5);

      drawstring('64 -80 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), " q2 ", '8 8 8', '1 1 1', 1);
      QuickImage('64 -72 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), 6);
};

void() DrawScreen =
{
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

      ScreenImage();
};

void() Weapon_Draw =
{
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	local float hand;

	hand = getstati(61);

	if (hand == 1)
	{
		drawstring('0 -32 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), "   HAND 1   ", '8 8 8', '1 1 1', 1);
		SlotImage('0 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), 1);
	}
	if (hand == 2)
	{
		drawstring('0 -32 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), "   HAND 2   ", '8 8 8', '1 1 1', 1);
		SlotImage('0 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), 2);
	}
};

void() Crosshair_Draw =
{
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	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'*width*0.50 + '0 1 0'*height*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 width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	float pos, s;
	string sn;

	pos = getstati(54);
	s = getstati(58);
	sn = ftos(s);

	if (s > 0)
	{
		drawstring('0 -32 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)),  "sneak", '8 8 8', '1 1 1', 1);
		PosImage('0 -24 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)), 1);
		drawstring('0 8 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)),  strcat("%", sn), '8 8 8', '1 1 1', 1);
	}
	else if (pos == 1)
	{
		drawstring('0 -32 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)),  "duck", '8 8 8', '1 1 1', 1);
		PosImage('0 -24 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)), 1);
	}
	else if (pos == 2)
	{
		drawstring('0 -32 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)),  "prone", '8 8 8', '1 1 1', 1);
		PosImage('0 -24 0'+('1 0 0'*(width*0.40)) +('0 1 0'*(height*0.90)), 2);
	}
};

void() Chem_Draw =
{
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	local float rage, heal;

	rage = getstati(55);
	heal = getstati(56);

	if (rage == 255)
		ChemImage('0 -24 0'+('1 0 0'*(width*0.60)) +('0 1 0'*(height*0.20)), 0);
	else if (rage == IID_CHEM_ADRENALINE)
		ChemImage('0 -24 0'+('1 0 0'*(width*0.60)) +('0 1 0'*(height*0.20)), 1);
	else if (rage == IID_CHEM_PSYCHO)
		ChemImage('0 -24 0'+('1 0 0'*(width*0.60)) +('0 1 0'*(height*0.20)), 2);
	else if (rage == IID_CHEM_BESERK)
		ChemImage('0 -24 0'+('1 0 0'*(width*0.60)) +('0 1 0'*(height*0.20)), 3);
	else if (heal > 0)
		ChemImage('32 -24 0'+('1 0 0'*(width*0.60)) +('0 1 0'*(height*0.20)), 4);
	else if (rage == 777)
		ChemImage('0 -24 0'+('1 0 0'*(width*0.60)) +('0 1 0'*(height*0.20)), 5);

};

void() Ammo_Draw =
{
	local float hand, weap, ammo, amount;
	local string reveal;
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	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'*(width*0.80)) +('0 1 0'*(height*0.90)), "  AMMO  ", '8 8 8', '1 1 1', 1);
           if (amount > 0)
			SlotImage('-64 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), amount);
           else
			BlankImage('-64 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*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'*(width*0.80)) +('0 1 0'*(height*0.90)), "  AMMO  ", '8 8 8', '1 1 1', 1);
           if (amount > 0)
			SlotImage('-64 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), amount);
           else
			BlankImage('-64 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), 0);
	}
};

void() Money_Draw =
{
	float width,height;
	string cash;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	cash = ftos(getstati(50));

      drawstring('64 -32 0'+('1 0 0'*(width*0.50)) +('0 1 0'*(height*0.90)), cash, '8 8 8', '1 1 1', 1);
      MoneyImage('64 -24 0'+('1 0 0'*(width*0.50)) +('0 1 0'*(height*0.90)), "money.jpg");

};

void() Energy_Draw =
{
	float width,height;
	string cash;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	cash = ftos(getstati(51));

      drawstring('34 -32 0'+('1 0 0'*(width*0.50)) +('0 1 0'*(height*0.90)), cash, '8 8 8', '1 1 1', 1);
      MoneyImage('32 -24 0'+('1 0 0'*(width*0.50)) +('0 1 0'*(height*0.90)), "energy.jpg");

};

void() Weight_Draw =
{
	float width,height,carry,max,enc;
	string image;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	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'*(width*0.50)) +('0 1 0'*(height*0.90)), image);

};

void() Armor_Draw =
{
	float width,height;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	//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'*(width*0.80)) +('0 1 0'*(height*0.90)), "  ARMOR  ", '8 8 8', '1 1 1', 1);
      SlotImage('64 -24 0'+('1 0 0'*(width*0.80)) +('0 1 0'*(height*0.90)), 3);

};

void() Health_Draw =
{
	float width,height;
	height = cvar("vid_conheight");
	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'*(height*0.90)), 0, "percent.jpg");
      	HealthImage('32 -24 0'+('0 1 0'*(height*0.90)), 0, string_hpos);
      	HealthImage('64 -24 0'+('0 1 0'*(height*0.90)), 0, string_tpos);
      	HealthImage('96 -24 0'+('0 1 0'*(height*0.90)), 0, string_opos);
	}
	else if (perc > 25)
	{
      	HealthImage('0 -24 0'+('0 1 0'*(height*0.90)), 1, "percent.jpg");
      	HealthImage('32 -24 0'+('0 1 0'*(height*0.90)), 1, string_hpos);
      	HealthImage('64 -24 0'+('0 1 0'*(height*0.90)), 1, string_tpos);
      	HealthImage('96 -24 0'+('0 1 0'*(height*0.90)), 1, string_opos);
	}
	else
	{
      	HealthImage('0 -24 0'+('0 1 0'*(height*0.90)), 2, "percent.jpg");
      	HealthImage('32 -24 0'+('0 1 0'*(height*0.90)), 2, string_hpos);
      	HealthImage('64 -24 0'+('0 1 0'*(height*0.90)), 2, string_tpos);
      	HealthImage('96 -24 0'+('0 1 0'*(height*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 do2d) CSQC_UpdateView =
{
	float width,height;
	float usehud;
	width = cvar("vid_conwidth");
	height = cvar("vid_conheight");

	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, width);
	setviewprop(VF_SIZE_Y, height);

	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_inventory)
		Invent_Draw();
	else
	{
		Health_Draw();
		Weight_Draw();
		Money_Draw();
		Ammo_Draw();
		Energy_Draw();
		Weapon_Draw();
		Armor_Draw();
		Position_Draw();
		Quick_Draw();
		Chem_Draw();
		Crosshair_Draw();
	}
};