1+ #include " stdafx.h"
2+ #include " DamageInfo.h"
3+
4+ void DamageInfo::SetDamageFromFall (float fallHeight)
5+ {
6+ mDamageCause = eDamageCause_Gravity;
7+ mFallHeight = fallHeight;
8+ // no hitpoints damage
9+ }
10+
11+ void DamageInfo::SetDamageFromElectricity ()
12+ {
13+ mDamageCause = eDamageCause_Electricity;
14+ // no hitpoints damage
15+ }
16+
17+ void DamageInfo::SetDamageFromFire (int hitpoints, GameObject* object)
18+ {
19+ mDamageCause = eDamageCause_Burning;
20+ mHitPoints = hitpoints;
21+ mSourceObject = object;
22+ }
23+
24+ void DamageInfo::SetDamageFromWeapon (const WeaponInfo& weaponInfo, GameObject* object)
25+ {
26+ int hitpoints = weaponInfo.mBaseDamage ;
27+
28+ if (weaponInfo.IsBulletDamage ())
29+ {
30+ SetDamageFromBullet (hitpoints, object);
31+ return ;
32+ }
33+
34+ if (weaponInfo.IsFireDamage ())
35+ {
36+ SetDamageFromFire (hitpoints, object);
37+ return ;
38+ }
39+
40+ if (weaponInfo.IsMelee ())
41+ {
42+ SetDamageFromPunch (hitpoints, object);
43+ return ;
44+ }
45+
46+ if (weaponInfo.IsExplosionDamage ())
47+ {
48+ SetDamageFromExplosion (hitpoints, object);
49+ return ;
50+ }
51+
52+ debug_assert (false );
53+ // unknown damage type
54+ }
55+
56+ void DamageInfo::SetDamageFromWater (int hitpoints)
57+ {
58+ mDamageCause = eDamageCause_Drowning;
59+ mHitPoints = hitpoints;
60+ }
61+
62+ void DamageInfo::SetDamageFromCarCrash (const glm::vec3& contactPoint, float contactImpulse, GameObject* object)
63+ {
64+ mDamageCause = eDamageCause_CarCrash;
65+ mContactPoint = contactPoint;
66+ mContactImpulse = contactImpulse;
67+ mSourceObject = object;
68+ }
69+
70+ void DamageInfo::SetDamageFromExplosion (int hitpoints, GameObject* object)
71+ {
72+ mDamageCause = eDamageCause_Explosion;
73+ mHitPoints = hitpoints;
74+ mSourceObject = object;
75+ }
76+
77+ void DamageInfo::SetDamageFromBullet (int hitpoints, GameObject* object)
78+ {
79+ mDamageCause = eDamageCause_Bullet;
80+ mHitPoints = hitpoints;
81+ mSourceObject = object;
82+ }
83+
84+ void DamageInfo::SetDamageFromPunch (int hitpoints, GameObject* object)
85+ {
86+ mDamageCause = eDamageCause_Punch;
87+ mHitPoints = hitpoints;
88+ mSourceObject = object;
89+ }
90+
91+ void DamageInfo::Clear ()
92+ {
93+ mDamageCause = eDamageCause_Punch;
94+
95+ mContactPoint .x = 0 .0f ;
96+ mContactPoint .y = 0 .0f ;
97+ mContactPoint .z = 0 .0f ;
98+ mNormal .x = 0 .0f ;
99+ mNormal .y = 0 .0f ;
100+
101+ mSourceObject = nullptr ;
102+ mHitPoints = 0 ;
103+ mContactImpulse = 0 .0f ;
104+ mFallHeight = 0 .0f ;
105+ }
0 commit comments