Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
|
11218
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
1 | #include "face.h" |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
2 | #include "doggy.h" |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
3 | #include <GL/gl.h> |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
4 | #include <GL/glu.h> |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
5 | #include "models.h" |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
6 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
7 | #define NUM_DOGS 11 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
8 | #define NUM_DOG_LIDS 10 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
9 | #define NUM_EARS 3 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
10 | #define NUM_EYES 1 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
11 | #define NUM_PUPILS 1 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
12 | #define NUM_IRIS 1 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
13 | #define SCALE .020 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
14 | #define EYES_Y 32.78*SCALE // .295 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
15 | #define EYES_X 28.89*SCALE // .26 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
16 | #define EYES_Z 42.22*SCALE // .38 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
17 | #define EARS_X 60*SCALE //.65 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
18 | #define EARS_Y 20*SCALE//.18 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
19 | #define EARS_Z -5.56*SCALE //.05 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
20 | #define IRIS_X 0*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
21 | #define IRIS_Y 1.67*SCALE//.015 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
22 | #define IRIS_Z 7*SCALE//.08 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
23 | #define PUP_X 0*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
24 | #define PUP_Y 0*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
25 | #define PUP_Z 1.2*SCALE //.028 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
26 | #define IRIS_SCALE .12*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
27 | #define PUP_SCALE .11*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
28 | #define EAR_SCALE .7*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
29 | #define EYE_SCALE .7*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
30 | #define LID_SCALE .77*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
31 | #define DOG_SCALE .58*SCALE |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
32 | #define MAX_FILE_LEN 64 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
33 | #define MAX_EAR_ANGLE 90.0 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
34 | #define MIN_EAR_ANGLE -20.0 |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
35 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
36 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
37 | char dog_mtl_file[MAX_FILE_LEN] = "dog.mtl"; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
38 | // the initial dog materials |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
39 | GLint init_dog_mats[NUM_PARTS] = {1, 2, 2, 4, 0, 3, 5, 0, 0, 0}; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
40 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
41 | void draw_pupil(FACE f, PART p) { |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
42 | struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
43 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
44 | glTranslatef(IRIS_X, -IRIS_Z, IRIS_Y); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
45 | if(p==LEFT_IRIS) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
46 | glmSetMat(f->materials, f->mat_indeces[LEFT_IRIS]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
47 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
48 | glmSetMat(f->materials, f->mat_indeces[RIGHT_IRIS]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
49 | glCallList(dog->iris[0]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
50 | glTranslatef(PUP_X, -PUP_Z, PUP_Y); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
51 | glmSetMat(f->materials, f->mat_indeces[PUPIL]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
52 | glCallList(dog->pupil[0]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
53 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
54 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
55 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
56 | void draw_left_eye(FACE f, BOOL open, int max) { |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
57 | struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
58 | if(f->my_mode==CRAZY2) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
59 | dog->curr_left_lid=NUM_DOG_LIDS-1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
60 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
61 | dog->curr_left_lid = compute_lid(open, dog->curr_left_lid, max); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
62 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
63 | glTranslatef(-EYES_X, 0.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
64 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
65 | glTranslatef(0.0, -f->curr_eye_pop, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
66 | draw_pupil(f, LEFT_IRIS); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
67 | glmSetMat(f->materials, f->mat_indeces[EYES]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
68 | glCallList(dog->eyes[dog->curr_left_eye]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
69 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
70 | glmSetMat(f->materials, f->mat_indeces[LIDS]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
71 | glCallList(dog->lids[dog->curr_left_lid]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
72 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
73 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
74 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
75 | void draw_right_eye(FACE f, BOOL open, int max) { |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
76 | struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
77 | if(f->my_mode==CRAZY2) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
78 | dog->curr_right_lid=NUM_DOG_LIDS-1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
79 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
80 | dog->curr_right_lid = compute_lid(open, dog->curr_right_lid, max); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
81 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
82 | glTranslatef(EYES_X, 0.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
83 | glScalef(-1, 1, 1); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
84 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
85 | glTranslatef(0.0, -f->curr_eye_pop, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
86 | draw_pupil(f, RIGHT_IRIS); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
87 | glmSetMat(f->materials, f->mat_indeces[EYES]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
88 | glCallList(dog->eyes[dog->curr_right_eye]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
89 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
90 | glmSetMat(f->materials, f->mat_indeces[LIDS]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
91 | glCallList(dog->lids[dog->curr_right_lid]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
92 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
93 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
94 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
95 | void dog_eyes(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, DIRECTION dir) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
96 | { |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
97 | struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
98 | int max_eye; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
99 | if(dir==CONST) { //then not moving, eyes are gettin sleepy |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
100 | f->eye_count--; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
101 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
102 | else{ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
103 | f->eye_count=EYE_TIME*NUM_DOG_LIDS-1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
104 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
105 | max_eye=f->eye_count/EYE_TIME; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
106 | if(max_eye<0) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
107 | max_eye=0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
108 | if(f->my_mode==CRAZY2) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
109 | f->curr_eye_pop=f->curr_eye_pop + (MAX_EYE_POP - f->curr_eye_pop)/2; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
110 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
111 | f->curr_eye_pop=f->curr_eye_pop - (f->curr_eye_pop-0)/2; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
112 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
113 | glTranslatef(0, 0, EYES_Y); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
114 | glTranslatef(0, -EYES_Z,0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
115 | draw_left_eye(f, left_open, max_eye); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
116 | draw_right_eye(f, right_open, max_eye); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
117 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
118 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
119 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
120 | void dog_ears(FACE f, DIRECTION dir){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
121 | struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
122 | //printf("ears %f\n", ears); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
123 | if(dir==DOWN){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
124 | if(dog->curr_ear < (NUM_EARS-1)) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
125 | dog->curr_ear++; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
126 | dog->curr_ear_angle = dog->curr_ear_angle+(MAX_EAR_ANGLE-dog->curr_ear_angle)/2; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
127 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
128 | if(dir==UP){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
129 | if(dog->curr_ear > 0) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
130 | dog->curr_ear--; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
131 | dog->curr_ear_angle = dog->curr_ear_angle+(MIN_EAR_ANGLE-dog->curr_ear_angle)/2; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
132 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
133 | else if(dir==CONST){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
134 | dog->curr_ear=1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
135 | dog->curr_ear_angle = dog->curr_ear_angle+(0-dog->curr_ear_angle)/3; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
136 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
137 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
138 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
139 | glTranslatef(-EARS_X, -EARS_Z, EARS_Y); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
140 | if(f->my_mode==CRAZY1) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
141 | glRotatef(MAX_EAR_ANGLE, 0.0, 1.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
142 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
143 | glRotatef(dog->curr_ear_angle, 0.0, 1.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
144 | glmSetMat(f->materials, f->mat_indeces[APPENDAGE]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
145 | glCallList(dog->ears[dog->curr_ear]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
146 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
147 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
148 | glTranslatef(EARS_X, -EARS_Z, EARS_Y); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
149 | glScalef(-1, 1, 1); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
150 | if(f->my_mode==CRAZY1) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
151 | glRotatef(MIN_EAR_ANGLE, 0.0, 1.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
152 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
153 | glRotatef(dog->curr_ear_angle, 0.0, 1.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
154 | glCallList(dog->ears[dog->curr_ear]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
155 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
156 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
157 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
158 | void draw_dog(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, GLfloat open, DIRECTION dir, OUTPUT_MODE mode){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
159 | int next_face; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
160 | struct doggy_struct* dog; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
161 | f->crazy_count--; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
162 | if(f->crazy_count==0){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
163 | f->my_mode = mode; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
164 | if(mode!=NORMAL) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
165 | f->crazy_count = CRAZY_COUNT; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
166 | else |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
167 | f->crazy_count = 1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
168 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
169 | apply_output_mode(f, &angle, &yangle, &left_open, &right_open, &open, &dir); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
170 | next_face = NUM_DOGS - open*NUM_DOGS - 1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
171 | dog = (struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
172 | if(next_face > dog->curr_face) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
173 | dog->curr_face++; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
174 | else if(next_face < dog->curr_face) |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
175 | dog->curr_face--; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
176 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
177 | glPushMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
178 | glRotatef(-90, 1.0, 0.0, 0.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
179 | glRotatef(-yangle, 0.0, 0.0, -1.0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
180 | glRotatef(-angle, 0, 1, 0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
181 | dog_eyes(f, angle, yangle, left_open, right_open, dir); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
182 | dog_ears(f, dir); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
183 | glmSetMat(f->materials, f->mat_indeces[HEAD]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
184 | glCallList(dog->faces[dog->curr_face]); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
185 | glPopMatrix(); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
186 | } |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
187 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
188 | void init_dog(FACE f){ |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
189 | int i; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
190 | struct doggy_struct* dog; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
191 | f->char_struct = (struct doggy_struct*)malloc(sizeof(struct doggy_struct)); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
192 | f->materials = glmMTL(dog_mtl_file); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
193 | f->mat_indeces=(GLint*)malloc(sizeof(GLint)*NUM_PARTS); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
194 | //initialize all of the parts to some colors |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
195 | change_materials(f, init_dog_mats, NUM_PARTS); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
196 | f->my_mode = NORMAL; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
197 | f->eye_count = EYE_TIME*NUM_DOG_LIDS-1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
198 | f->crazy_count = 1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
199 | f->curr_z_angle = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
200 | f->curr_eye_pop = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
201 | f->name = strdup("dog"); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
202 | f->draw_func = draw_dog; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
203 | dog = (struct doggy_struct*)f->char_struct; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
204 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
205 | printf("\nReading models: "); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
206 | fflush(0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
207 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
208 | //initialize the draw lists |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
209 | init_lists(&dog->faces, &dog->m_faces, NUM_DOGS, f->name, DOG_SCALE); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
210 | init_lists(&dog->lids, &dog->m_lids, NUM_DOG_LIDS, "lid", LID_SCALE); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
211 | init_lists(&dog->ears, &dog->m_ears, NUM_EARS, "ear", EAR_SCALE); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
212 | init_lists(&dog->eyes, &dog->m_eyes, NUM_EYES, "dogeye", EYE_SCALE); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
213 | init_lists(&dog->pupil, &dog->m_pupil, NUM_PUPILS, "dogpupil", PUP_SCALE); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
214 | init_lists(&dog->iris, &dog->m_iris, NUM_IRIS, "dogiris", IRIS_SCALE); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
215 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
216 | printf("\n"); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
217 | fflush(0); |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
218 | |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
219 | dog->curr_face = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
220 | dog->curr_ear = 1; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
221 | dog->curr_left_lid = 9; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
222 | dog->curr_right_lid = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
223 | dog->curr_left_eye = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
224 | dog->curr_right_eye = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
225 | dog->curr_pupil = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
226 | dog->curr_ear_angle = 0; |
|
886e6862af56
[gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff
changeset
|
227 | } |