#pragma once #include "Weapons.h" void InitWeapon(VWeapon * w, int type) { w->Type = type; w->InitialPos.x = 0.0; w->InitialPos.y = 0.0; w->InitialPos.z = 0.0; w->Position = w->Target = w->InitialPos; w->taggedForRemoval = 0; w->next = NULL; InitObject(&w->Object); } void CleanUpWeapon(VWeapon * w) { CleanUpObject(&w->Object); } void StartWeapon(VWeapon * w, Vector * startPos, Vector * target) { w->InitialPos = *startPos; w->Position = *startPos; w->Target = *target; if (w->Type == WEAPONTYPEBULLET) { SubtractVector(&w->Target, &w->Position, &w->Target); NormalizeVector(&w->Target); } } void RunWeapon(VWeapon * w, float interval) { switch (w->Type) { case WEAPONTYPEBULLET: w->Position.x += ((w->Target.x / interval) / 100.0); w->Position.y += ((w->Target.y / interval) / 100.0); w->Position.z += ((w->Target.z / interval) / 100.0); if (sqrt(((w->Position.x - w->InitialPos.x) * (w->Position.x - w->InitialPos.x)) + ((w->Position.y - w->InitialPos.y) * (w->Position.y - w->InitialPos.y)) + ((w->Position.z - w->InitialPos.z) * (w->Position.z - w->InitialPos.z))) > MAXBULLETDISTANCE) { w->taggedForRemoval = 1; } break; } } void DrawWeapon(VWeapon * w) { MoveObjectToPoint(&w->Object, &w->Position); DrawObject(&w->Object); }