yvt f4683d820d * Added player's hands in local view
* Added reload animation
2013-08-21 00:28:57 +09:00

78 lines
1.5 KiB
C++

//
// Weapon.h
// OpenSpades
//
// Created by yvt on 7/15/13.
// Copyright (c) 2013 yvt.jp. All rights reserved.
//
#pragma once
#include "Player.h"
#include "PhysicsConstants.h"
namespace spades {
namespace client {
class World;
class Player;
class Weapon {
World *world;
Player *owner;
float time;
bool shooting;
bool reloading;
float nextShotTime;
float reloadStartTime;
float reloadEndTime;
bool lastDryFire;
int ammo;
int stock;
public:
Weapon(World *, Player *);
virtual ~Weapon();
virtual std::string GetName() = 0;
virtual float GetDelay() = 0;
virtual int GetClipSize() = 0;
virtual int GetMaxStock() = 0;
virtual float GetReloadTime() = 0;
virtual bool IsReloadSlow() = 0;
virtual int GetDamage(HitType, float distance) = 0;
virtual WeaponType GetWeaponType() = 0;
virtual Vector3 GetRecoil() = 0;
virtual float GetSpread() = 0;
virtual int GetPelletSize() = 0;
static Weapon *CreateWeapon(WeaponType index,
Player *);
void Restock();
void Reset();
void SetShooting(bool);
/** @return true when fired. */
bool FrameNext(float);
void Reload();
bool IsShooting() const {return shooting;}
bool IsReloading() const { return reloading; }
int GetAmmo() { return ammo; }
int GetStock() { return stock;}
float GetReloadProgress();
float TimeToNextFire();
bool IsReadyToShoot() ;
};
}
}