File: brag.c

package info (click to toggle)
xbat 1.11-9
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,236 kB
  • ctags: 796
  • sloc: ansic: 6,298; makefile: 654; sh: 63
file content (91 lines) | stat: -rw-r--r-- 1,829 bytes parent folder | download | duplicates (4)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "xev.h"
#include "enemy.h"

PRIVATE char *fn[] = {
      "brag1.img",
      "brag2.img",
      "brag3.img",
      "brag4.img"
};

PRIVATE Pixmap pixmap[4];
PRIVATE Pixmap pixmap_mask[4];
PRIVATE GC gc[4];

void BragSetChar()
{
      int c_no;
      char img[CSIZE*CSIZE] , mask[128];
      XGCValues gcv;

      gcv.graphics_exposures = False;

      for(c_no = 0 ; c_no < 4 ; c_no++) {
            int x,y;

            sprintf(tpath , "%s/%s",IMAGE_DIR,fn[c_no]);
            LoadChar(tpath,img , sizeof(img));
            pixmap[c_no] = XCreatePixmap(d,w,CSIZE,CSIZE,depth);
            bzero(mask , sizeof(mask));
	    gc[c_no] = XCreateGC(d,w,GCGraphicsExposures,&gcv);

	    DrawChar32(img , mask , gc[c_no],pixmap[c_no]);

            pixmap_mask[c_no] 
              = XCreateBitmapFromData(d,w,mask,CSIZE,CSIZE);
            XSetClipMask(d,gc[c_no],pixmap_mask[c_no]);
      }
}

void BragFree()
{
      int i;

      for(i = 0 ; i < 4 ; i++) {
	    XFreePixmap(d,pixmap[i]);
	    XFreePixmap(d,pixmap_mask[i]);
	    XFreeGC(d,gc[i]);
      }
}

void BragInit(enemy_no)
     int enemy_no;
{
      int i;
      
      for(i = 0 ; i < ENEMY_MAX ; i++) {
	    if(!enemy[i].enemy_no){

		  enemy[i].enemy_no = BRAG;
		  enemy[i].x.dummy = (XSIZE/2-16)*65536;
		  enemy[i].y.dummy = 180*65536;
		  enemy[i].tmp1 = 0;
		  i = 65536;
	    }
      }
}

int Brag(enemy_no)
     int enemy_no;
{
      enemy[enemy_no].y.dummy -= 16*65536;
      enemy[enemy_no].tmp1++;
      enemy[enemy_no].tmp1 &= 3;
      
      if(enemy[enemy_no].y.dummy < 0)
	{
              enemy[enemy_no].enemy_no = 0;
        }
      else
        {
	      SetSprite(enemy[enemy_no].x.sht[UNION],
			enemy[enemy_no].y.sht[UNION],
			pixmap[enemy[enemy_no].tmp1],
			gc[enemy[enemy_no].tmp1],
			CSIZE,CSIZE);	      
        }
      return 0;
}