Allar's Blog

Allar's Blog

HTWeapon: Part 2 – DrawWeaponCrosshair()

Important: I didn't notice this until after I posted this but my stuttering is pretty bad in this video. Just a heads up. I will re-do this in the future.

Video Version

Subject: HTWeapon: Part 2 – DrawWeaponCrosshair()
Skill Level: Beginner
Run-Time: 30 minutes
Author: Michael Allar
Notes: Going over how to have our weapons handle the drawing of our crosshair.

Written Version

Subject: HTWeapon: Part 2 – DrawWeaponCrosshair()
Skill Level: Beginner
Author: Michael Allar
Notes: Going over how to have our weapons handle the drawing of our crosshair.

Sorry about the indentation, it seems like my indentation will not survive copy paste… I will go back and fix the indentation later.

HTWeapon

The variables we added to HTWeapon

[csharp]/** HUD Stuff */
var Texture CrosshairImage;
var UIRoot.TextureCoordinates CrosshairCoordinates;[/csharp]

The DrawWeaponCrosshair() function.
[csharp]/** * Draw the Crosshairs */ simulated function DrawWeaponCrosshair( Hud HUD ) { local vector2d CrosshairSize; local float x,y, ScreenX, ScreenY; local HTHUD    H;

H = HTHUD(HUD);
if ( H == None )
return;

CrosshairSize.Y = CrosshairCoordinates.VL * H.Canvas.ClipY/720;
CrosshairSize.X = CrosshairSize.Y * ( CrosshairCoordinates.UL / CrosshairCoordinates.VL );

X = H.Canvas.ClipX * 0.5;
Y = H.Canvas.ClipY * 0.5;
ScreenX = X - (CrosshairSize.X * 0.5);
ScreenY = Y - (CrosshairSize.Y * 0.5);
if ( CrosshairImage != none )
{
// crosshair drop shadow
H.Canvas.DrawColor = H.CrosshairShadowColor;
H.Canvas.SetPos( ScreenX+1, ScreenY+1 );
H.Canvas.DrawTile(CrosshairImage,CrosshairSize.X, CrosshairSize.Y, CrossHairCoordinates.U, CrossHairCoordinates.V, CrossHairCoordinates.UL,CrossHairCoordinates.VL);

H.Canvas.DrawColor = H.CrosshairColor;
H.Canvas.SetPos(ScreenX, ScreenY);
H.Canvas.DrawTile(CrosshairImage,CrosshairSize.X, CrosshairSize.Y, CrossHairCoordinates.U, CrossHairCoordinates.V, CrossHairCoordinates.UL,CrossHairCoordinates.VL);
}
}[/csharp]

HTHUD

We've added a boolean bShowCrosshair to our declared variables.

[csharp]var bool bShowAmmo, bShowCrosshair;[/csharp]

Also reworked our DrawLivingHUD so that its a bit more streamlined and logic flows better. Also implements bShowCrosshair along with calling our DrawWeaponCrosshair() function.

[csharp]/**

  • Anything drawn in this function will be displayed ONLY when the player is living.
    */
    function DrawLivingHud()
    {
    local HTWeapon Weapon;

// Manage the weapon.  NOTE: Vehicle weapons are managed by the vehicle
// since they are integrated in to the vehicle health bar
if( PawnOwner != none )
{
Weapon = HTWeapon(PawnOwner.Weapon);
if ( Weapon != none )
{
if ( bShowAmmo )
{
DisplayAmmo(Weapon);
}
if (bShowCrosshair)
{
Weapon.DrawWeaponCrosshair(self);
}
}
}
}[/csharp]

UDKGame Classes At This Point

Click here to download the source files I've had after completing this tutorial.