קוד:
namespace Entity{
#include <CSpriteBase.h>
#include <math.h>
class Entity
{
public:
Entity(float, float, float, float, float, char*, int);
~Entity();
float getx();
float gety();
float getangle();
float getspeed();
float getsize();
void setx(float);
void sety(float);
void setangle(float);
void setspeed(float);
void setsize(float);
void setimage(char*);
void moveentity(bool, bool); // false to ignore
protected:
CSpriteBase img; // entity image
float x, y, angle, xV, yV, speed;
int draw;
int owner;
float size;
};
Entity::Entity(float e_x, float e_y, float e_angle, float e_speed, float e_size, char imgpath[], int e_owner)
{
x = e_x;
y = e_y;
angle = e_angle;
speed = e_speed;
size = e_size;
xV = e_x + speed * cos(e_angle);
yV = e_y + speed * sin(e_angle);
img.init(imgpath);
draw = 1;
owner = e_owner;
}
Entity::~Entity()
{
draw = 0;
}
float Entity::getx()
{
return x;
}
float Entity::gety()
{
return y;
}
float Entity::getangle()
{
return angle;
}
float Entity::getspeed()
{
return speed;
}
float Entity::getsize()
{
return size;
}
void Entity::setx(float f)
{
x = f;
}
void Entity::sety(float f)
{
y = f;
}
void Entity::setangle(float f)
{
angle = f;
}
void Entity::setspeed(float f)
{
speed = f;
xV = x + speed * cos(angle);
yV = y + speed * sin(angle);
}
void Entity::setsize(float f)
{
size = f;
}
void Entity::setimage(char path[])
{
img.init(path);
}
void Entity::moveentity(bool grav, bool wind)
{
x = x + xV;
y = y + yV;
if(grav) y = y - GRAVITY;
if(wind) x = x + WIND_VELOCITY * cos(WIND_ANGLE); y = y + WIND_VELOCITY * sin(WIND_ANGLE);
}
class User: public Entity
{
public:
User(float, float, float, float, float, char*, int);
~User();
void jump();
protected:
int jumpnum;
int usernum;
};
User::User(float e_x, float e_y, float e_angle, float e_speed, int e_size, char imgpath[], int e_usernum)
{
x = e_x;
y = e_y;
angle = e_angle;
speed = e_speed;
size = e_size;
xV = e_x + speed * cos(e_angle);
yV = e_y + speed * sin(e_angle);
img.init(imgpath);
draw = 1;
usernum = e_usernum;
}
User::~User()
{
draw = 0;
}
void User::jump()
{
yV = yV + JUMP_VELOCITY;
}
/*
*
*Entity functions
*
*/
class Rect
{
public:
Rect(float, float, float, float);
~Rect();
float getx();
float gety();
float getwidth();
float getheight();
void setx(float);
void sety(float);
void setwidth(float);
void setheight(float);
protected:
float x, y, width, height;
}
void fireentity(int e_type, int e_owner)
{
if(e_type = 1)
{
Entity b = new Entity(usersArray[e_owner].getx(), usersArray[e_owner].gety(), facingAngle, WEAPON_ONE_SPEED, WEAPON_ONE_IMG, e_owner);
}
}
int entitycollision(Entity one, Entity two)
{
float dist = sqrt(((one.getx() - two.getx())*(one.getx() - two.getx())) + ((one.gety() - two.gety())*(one.gety() - two.gety())))
if(dist >= one.getsize + two.getsize) return 1;
return 0;
}
int rectcollision(Entity e, Rect r)
{
float ex = e.getx();
float rx = r.getx();
float ey = e.gety();
float ry = r.gety();
if(ex >= rx && ex <= rx + r.getwidth() && ey <= ry && ey >= ry + r.getheight()) return 1;
return 0;
}
} // end namespace