Humanoid.h:
#ifndef Human_H_INCLUDED
#define Human_H_INCLUDED
class newHuman
{
public:
const char* name;
int TalkTimerMax,TalkTimer;
int Channelon;
int WalkTimer;
bool Alive,God;
int myX,myY,myZ;
float Speed;
float Health,Energy;
int WeaponHolding;
int Targetx,Targety;
int FollowingType;
int SoundType;
int favecolor;
int skin,hair;
bool isBurning;
void Init(float x,float y,float z,int Type,float speed,const char* name,int SoundType,int channel,int nskin);
void TakeDamage(int dam);
void Die();
void Speak(int what);
void Move();
void DoNow();
};
#endif // Human_H_INCLUDED
Humanoid.cpp:
#include "Humanoid.h"
#include "ChatData.h"
#include <math.h>
#include <cstdlib>
#include "App.h"
myApp APP;//already declared in main.c++
ChatData Chatty;//but will raise errors without being included
void newHuman::Init(float x,float y,float z,int Type,float speed,const char* name,int soundType,int channel,int nskin)
{
newHuman::Channelon=channel;
newHuman::Alive=true;
newHuman::God=false;
newHuman::WalkTimer=0;
newHuman::name=name;
newHuman::myX=x;
newHuman::myY=y;
newHuman::myZ=z;
newHuman::FollowingType=Type;
newHuman::Speed=speed;
newHuman::Targetx=x;
newHuman::Targety=y;
newHuman::isBurning=false;
newHuman::Health=100;
newHuman::Energy=100;
newHuman::Speed=speed;
newHuman::SoundType=SoundType;
newHuman::TalkTimerMax=rand()%100;
newHuman::TalkTimer=0;
newHuman::skin=nskin;
}
void newHuman::Speak(int what)
{
const char* say;
switch(what)
{
// case 0:say="Hello.";Mix_PlayChannel(newHuman::Channelon,IntAndSayToNoise(newHuman::SoundType,"Hello"),0);break;
//case 1:if(DistForm(newx,newy,TownFolk[n].x,TownFolk[n].y)<Dist){targx=TownFolk[n].x;targy=TownFolk[n].y;}}dirx=newx/targx;diry=newy/targy;break;//FOLLOW
//case 2:if(newHuman::WalkTimer>=70){newHuman::Targetx=(int)rand()/(int)RAND_MAX;newHuman::Targety=(int)rand()/(int)RAND_MAX;}targx=newHuman::Targetx;targy=Targety;dirx=newx/targx;diry=newy/targy;break;//WALK RANDOMLY
// default:say="...";Mix_PlayChannel(IntToChannel(newHuman::SoundType),IntAndSayToNoise(newHuman::SoundType,"..."),0);break;
}
Chatty.ChatStuff(say,newHuman::name);
}
void newHuman::Move()
{
float newx=newHuman::myX,newy=newHuman::myY;
int targx=100,targy=100;
int goingx=0,goingy=0;
float dirx=0,diry=0;
float Dist=APP.MAXSIGHT;//look distance
if(newHuman::FollowingType==3){Dist-=10;}
bool Seen=false,Walking=false;
switch(newHuman::FollowingType)
{
case 0:break;//DO NOTHING
//case 1:if(DistForm(newx,newy,TownFolk[n].x,TownFolk[n].y)<Dist){targx=TownFolk[n].x;targy=TownFolk[n].y;}}dirx=newx/targx;diry=newy/targy;break;//FOLLOW
//case 2:if(newHuman::WalkTimer>=70){newHuman::Targetx=(int)rand()/(int)RAND_MAX;newHuman::Targety=(int)rand()/(int)RAND_MAX;}targx=newHuman::Targetx;targy=Targety;dirx=newx/targx;diry=newy/targy;break;//WALK RANDOMLY
// case 3:targx=Game.myX;targy=Game.myY;if(DistForm(newx,newy,targx,targy)<Dist){dirx=targx-newx;diry=targy-newy;Seen=true;}break;//FOLLOW PLAYER
default:break;//DO NOTHING
}
if(dirx>0){goingx=1;Walking=true;}else if(dirx<0){goingx=-1;Walking=true;}
if(diry>0){goingy=1;Walking=true;}else if(diry<0){goingy=-1;Walking=true;}
// if(goingx==0 && goingy==0 && Seen){Game.TakeDamage(0.5);}
// if(goingx!=0 || goingy!=0){newHuman::Apperance=LookToBody(goingx,goingy,newHuman::Sheet);}
// POINT Where=MoveHere(newx,newy,newinx,newiny,goingx,goingy);
// if(Where.x!=0){newHuman::inx+=goingx*newHuman::Speed;}
// if(Where.y!=0){newHuman::iny+=goingy*newHuman::Speed;}
// if(newHuman::inx<0){newHuman::myX--;newHuman::inx=0.9;}else if(newHuman::inx>1){newHuman::myX++;newHuman::inx=0;}
// if(newHuman::iny<0){newHuman::myY--;newHuman::iny=0.9;}else if(newHuman::iny>1){newHuman::myY++;newHuman::iny=0;}
int NewWalkMax=rand()%10;
// if(newHuman::WalkTimer>=20+NewWalkMax && Walking){newHuman::WalkTimer=0;Mix_Volume(newHuman::Channelon,MIX_MAX_VOLUME/(Dist-(dirx+diry)/2));Mix_PlayChannel(newHuman::Channelon,TileToWalkSound(myMap.Environment[newHuman::myY][newHuman::myX]),0);}
newHuman::WalkTimer++;
}
void newHuman::Die()
{
newHuman::Alive=false;
newHuman::name="";
newHuman::myX=0;
newHuman::myY=0;
newHuman::myZ=0;
newHuman::FollowingType=0;
newHuman::Speed=0;
newHuman::Targetx=0;
newHuman::Targety=0;
newHuman::isBurning=false;
newHuman::Health=0;
newHuman::Speed=0;
newHuman::favecolor=0;
}
void newHuman::TakeDamage(int dam)
{
if(newHuman::God==false)
{
if(newHuman::Energy-dam>=0){newHuman::Energy-=dam;}
else if(newHuman::Energy-dam<=0 && newHuman::Energy>0)
{
int Leftover=newHuman::Energy-dam;
newHuman::Energy=0;
newHuman::Health-=Leftover;
}
else if(newHuman::Health-dam>=0){newHuman::Health-=dam;}
else if(newHuman::Health-dam<0){newHuman::Die();}
}
}
void newHuman::DoNow()
{
if(newHuman::Alive){newHuman::WalkTimer++;newHuman::Move();}
if(newHuman::Health<=0){newHuman::Die();}
if(newHuman::TalkTimer<newHuman::TalkTimerMax){TalkTimerMax++;}
// else if(DistForm(newHuman::myX,newHuman::myY,Game.myX,Game.myY)<15){newHuman::TalkTimer=0;if(newHuman::SoundType!=0){newHuman::Speak(-1);}}
}
here is the project:
http://www.mediafire.com/?x9kld6q9cfxwmau
the password is 22172