File: creature.h

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 (67 lines) | stat: -rw-r--r-- 1,706 bytes parent folder | download | duplicates (3)
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
63
64
65
66
67
#ifndef CREATURE_H
#define CREATURE_H
#include <allegro.h>
#include "config.h"

class linkedlist
{
 public:
  linkedlist *nextn, *previousn;

  linkedlist(linkedlist *parent=NULL) {
    if (parent) {
      nextn=parent->nextn;
      if (nextn) nextn->previousn=this;
      previousn=parent;
      parent->nextn=this;
    }
    else {
      previousn=NULL;
      nextn=NULL;
    }
  }
  
  virtual ~linkedlist() {
    if (previousn) previousn->nextn=nextn;
    if (nextn) nextn->previousn=previousn;
  }
  virtual linkedlist* next() {return nextn;}
  virtual linkedlist* previous() {return previousn;}

};
  
class creature: public linkedlist
{
 public:
  int hitpoints,power,health,speed,life,xcoor,ycoor,weight;
  unsigned int terrain,diet;
  float food;
  unsigned char load,status,dir,job,species;
  creature *creatureload;

  creature(creature* parent=NULL): linkedlist (parent) {}
  virtual ~creature() {
    if (load==MEAT)
     if (!creatureload) error ("Meat, no pointer,aargh");
      else delete creatureload;
  }
  virtual creature* newcreature()=0;

  virtual creature* next() {return (creature*) nextn;}
  virtual creature* previous() {return (creature*) previousn;}
  
  void preparecreature(creature* parent);
  virtual char* name();
  virtual int color() {return ((species+1)*16)%256+(species+1)/16;}
  virtual int lookslike();
  virtual void drawinfo(BITMAP *cr_info, bool firsttime);
  virtual void choosejob();
  virtual bool usekey() {return false;}
  virtual char shortkey() {return '$';}
  virtual int init_n_of() {return 100;}
};

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

#endif