thanx [Edited by - XTAL256 on March 5, 2008 4:50:38 AM]
thanx [Edited by - XTAL256 on March 5, 2008 4:50:38 AM]
Quote:
Original post by speciesUnknown
I haven't hard coded my weapons.
class Ammo{public: virtual void CalculateTrajectory(); virtual void DoDamage();};class Weapon{public: Weapon(Ammo&); virtual void Fire(); virtual void Reload(); virtual Ammo GetAmmoType();private: Ammo mAmmoType;};class LaserBeam : public Ammo{ // blah};class LaserGun : public Weapon;{ // blah};class Missile : public Ammo{ // blah};class Missile Launcher : public Weapon{ // blah};class Weapon{public: enum eWeaponType { WEAPONTYPE_LINEAR, WEAPONTYPE_PROJECTILE }; void Fire(); void Reload(); void CalculateTrajectory(); void DoDamage();private: uint mMaxRange; uint mCooldown; uint mAmmoMass; uint mAmmoSpeed; ParticleEffect* mpFireEffect; ParticleEffect* mpHitEffect; // etc}Quote:
Original post by XTAL256
So should i do it that way or have different Weapon classes which is responsible for calculating bullet trajectory, etc?
Quote:
Original post by Sandman
Firstly, this isn't quite the right forum. Game Design is more about the gameplay rules and mechanics, rather than technical code design. Moving to Game Programming.
int type; // Either PROJECTILE or LINEARbool continuous; // True for laser, machine gun, etc. False for missile, etc.class Weapon{IBullet bullet;}interface IBullet{CalculateTrajectory();}class LaserBlast : IBullet{CalculateTrajectory(){}}class ShotGunSlug : IBullet{CalculateTrajectory(){}}class ShotGun : Weapon{public ShotGun(){ bullet = new ShotGunSlug();}}On 05/03/2008 at 5:26 AM, Sandman said:class Weapon
{ public: enum eWeaponType { WEAPONTYPE_LINEAR, WEAPONTYPE_PROJECTILE }; void Fire(); void Reload(); void CalculateTrajectory(); void DoDamage(); private: uint mMaxRange; uint mCooldown; uint mAmmoMass; uint mAmmoSpeed; ParticleEffect* mpFireEffect; ParticleEffect* mpHitEffect; // etc }
Thanks a lot @Sandman. That is exactly what I needed. Data file driven approach is way more appealing than nested OOP structure.
please don't necro 9-year-old threads, okay? putting it back to sleep.
This topic has been locked by a moderator. New replies are not allowed.
With your permission, GameDev.net uses analytics cookies to understand how people use the platform. You can accept analytics or continue with necessary cookies only. Learn more