File: creature.cpp

package info (click to toggle)
matrem 1.0-9
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 788 kB
  • ctags: 928
  • sloc: cpp: 3,133; makefile: 77
file content (62 lines) | stat: -rw-r--r-- 1,425 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "creature.h"

creature **r[MAPWIDTH];
creature *firstcreature[N_OF_SPECIES];

void creature::preparecreature(creature* parent)
{
  weight=hitpoints+power+health+speed+
    200*countones(diet)+200*countones(terrain);
  life=hitpoints;
  load=VOID;
  creatureload=NULL;
  status=ALIVE;
  dir=NORTH;
  job=SLEEP;
  food=random(weight*5)+100;
  xcoor=-1;ycoor=-1;
  if (parent)
   if (parent->previous())
   {
    xcoor=parent->xcoor+dx[parent->dir];
    ycoor=parent->ycoor+dy[parent->dir];
    dir=parent->dir;
    food=(parent->food-weight)/2;
    parent->food=food;
   }
}

char* creature::name()
{
 return "Unknown";
}

int creature::lookslike()
	{
		return 1*(status==DEAD)+
					 2*(status==ALIVE&&load!=VOID&&job!=ATTACK)+
					 3*(job==ATTACK&&status==ALIVE)+
					 4*(dir==SOUTH||dir==WEST);
	}

void creature::drawinfo(BITMAP *cr_info, bool firsttime)
{
 if (firsttime) {
  textout_ex(cr_info,font,"Food:",10,5,5,0);
  textout_ex(cr_info,font,"Life:",10,35,5,0);
  textout_ex(cr_info,font,"Weight:",10,65,5,0);
 }
 rectfill(cr_info,5,15,cr_info->w-1,23,0);
 textprintf_ex(cr_info,font,5,15,5,0,"%i",(int) food);
 rectfill(cr_info,5,45,cr_info->w-1,53,0);
 textprintf_ex(cr_info,font,5,45,5,0,"%i",life);
 rectfill(cr_info,5,75,cr_info->w-1,83,0);
 textprintf_ex(cr_info,font,5,75,5,0,"%i",weight);

}

void creature::choosejob()
{
  job=SLEEP;
}