]> 4ch.mooo.com Git - 16.git/blob - 16/src/lib/oldwalk.c
==== animation fram walk ==== i polished the shit out of it and it works MUCH better...
[16.git] / 16 / src / lib / oldwalk.c
1 void oldwalk(map_view_t *pip, player_t *player, word pn)\r
2 {\r
3         //printf("player[%d].d=%d\n", pn, player[pn].enti.d);\r
4         switch(player[pn].enti.d)\r
5         {\r
6                 //no direction\r
7                 case 2:\r
8                         //0000pip[0].video->startclk = (*clockw);\r
9                 break;\r
10                 //right movement\r
11                 case 3:\r
12                         //printf("pip[0].page->tilesw=%d        ", pip[0].page->tilesw); printf("pip[0].page->tw=%d\n", pip[0].page->tw);\r
13                         if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->tw < pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->tilemidposscreenx &&\r
14                         !(pip[0].map->data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))  //collision detection!\r
15                         {\r
16                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
17                                 {\r
18                                         INC_PER_FRAME;\r
19                                         ANIMATESPRIFUN(pip, player, pn, 1);\r
20                                         ScrollRight(pip, player, 3, pn);\r
21                                         ScrollRight(pip, player, 2, pn);\r
22                                         //mapScrollRight(pip, player, !(pip[0].video->p), pn);\r
23                                         mapScrollRight(pip, player, (pip[0].video->p), pn);\r
24                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
25                                         player[pn].enti.q++;\r
26                                         //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
27                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx++; }\r
28                         }\r
29                         else if(player[pn].enti.tx < pip[0].map->width && !(pip[0].map->data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
30                         {\r
31                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
32                                 {\r
33                                         INC_PER_FRAME;\r
34                                         player[pn].enti.x+=(player[pn].enti.speed);\r
35                                         ANIMATESPRIFUN(pip, player, pn, 0);\r
36                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
37                                         player[pn].enti.q++;\r
38                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx++; }\r
39                         }\r
40                         else\r
41                         {\r
42                                 if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
43 #ifdef SPRITE\r
44                                 modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 24, 32, PLAYERBMPDATAPTR);\r
45 #else\r
46                                 modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 14);\r
47 #endif\r
48                                 if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
49                                 player[pn].enti.d = 2;\r
50                         }\r
51                         player[pn].enti.triggerx = player[pn].enti.tx+1;\r
52                         player[pn].enti.triggery = player[pn].enti.ty;\r
53                 break;\r
54 \r
55                 //left movement\r
56                 case 1:\r
57                         if(pip[0].tx > 0 && pip[0].tx+pip[0].page->tw <= pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->tilemidposscreenx &&\r
58                         !(pip[0].map->data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))        //collision detection!\r
59                         {\r
60                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
61                                 {\r
62                                         INC_PER_FRAME;\r
63                                         ANIMATESPRIFUN(pip, player, pn, 1);\r
64                                         ScrollLeft(pip, player, 3, pn);\r
65                                         ScrollLeft(pip, player, 2, pn);\r
66                                         //mapScrollLeft(pip, player, !(pip[0].video->p), pn);\r
67                                         mapScrollLeft(pip, player, (pip[0].video->p), pn);\r
68                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
69                                         player[pn].enti.q++;\r
70                                         //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
71                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx--; }\r
72                         }\r
73                         else if(player[pn].enti.tx > 1 && !(pip[0].map->data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))\r
74                         {\r
75                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
76                                 {\r
77                                         INC_PER_FRAME;\r
78                                         player[pn].enti.x-=(player[pn].enti.speed);\r
79                                         ANIMATESPRIFUN(pip, player, pn, 0);\r
80                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
81                                         player[pn].enti.q++;\r
82                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.tx--; }\r
83                         }\r
84                         else\r
85                         {\r
86                                 if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
87 #ifdef SPRITE\r
88                                 modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 96, 24, 32, PLAYERBMPDATAPTR);\r
89 #else\r
90                                 modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 10);\r
91 #endif\r
92                                 if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
93                                 player[pn].enti.d = 2;\r
94                         }\r
95                         player[pn].enti.triggerx = player[pn].enti.tx-1;\r
96                         player[pn].enti.triggery = player[pn].enti.ty;\r
97                 break;\r
98 \r
99                 //down movement\r
100                 case 4:\r
101                         if(pip[0].ty >= 0 && pip[0].ty+pip[0].page->th < pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->tilemidposscreeny &&\r
102                         !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))  //collision detection!\r
103                         {\r
104                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
105                                 {\r
106                                         INC_PER_FRAME;\r
107                                         ANIMATESPRIFUN(pip, player, pn, 1);\r
108                                         ScrollDown(pip, player, 3, pn);\r
109                                         ScrollDown(pip, player, 2, pn);\r
110                                         //mapScrollDown(pip, player, !(pip[0].video->p), pn);\r
111                                         mapScrollDown(pip, player, (pip[0].video->p), pn);\r
112                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
113                                         player[pn].enti.q++;\r
114                                         //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
115                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty++; }\r
116                         }\r
117                         else if(player[pn].enti.ty < pip[0].map->height && !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))\r
118                         {\r
119                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
120                                 {\r
121                                         INC_PER_FRAME;\r
122                                         player[pn].enti.y+=(player[pn].enti.speed);\r
123                                         ANIMATESPRIFUN(pip, player, pn, 0);\r
124                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
125                                         player[pn].enti.q++;\r
126                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty++; }\r
127                         }\r
128                         else\r
129                         {\r
130                                 if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
131 #ifdef SPRITE\r
132                                 modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 64, 24, 32, PLAYERBMPDATAPTR);\r
133 #else\r
134                                 modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 9);\r
135 #endif\r
136                                 if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
137                                 player[pn].enti.d = 2;\r
138                         }\r
139                         player[pn].enti.triggerx = player[pn].enti.tx;\r
140                         player[pn].enti.triggery = player[pn].enti.ty+1;\r
141                 break;\r
142 \r
143                 //up movement\r
144                 case 0:\r
145                         if(pip[0].ty > 0 && pip[0].ty+pip[0].page->th <= pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->tilemidposscreeny &&\r
146                         !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty-1 == TRIGGY))        //collision detection!\r
147                         {\r
148                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
149                                 {\r
150                                         INC_PER_FRAME;\r
151                                         ANIMATESPRIFUN(pip, player, pn, 1);\r
152                                         ScrollUp(pip, player, 3, pn);\r
153                                         ScrollUp(pip, player, 2, pn);\r
154                                         //mapScrollUp(pip, player, !(pip[0].video->p), pn);\r
155                                         mapScrollUp(pip, player, (pip[0].video->p), pn);\r
156                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
157                                         player[pn].enti.q++;\r
158                                         //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;\r
159                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty--; }\r
160                         }\r
161                         else if(player[pn].enti.ty > 1 && !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX &&  player[pn].enti.ty-1 == TRIGGY))\r
162                         {\r
163                                 if(player[pn].enti.q<=player[pn].enti.spt)\r
164                                 {\r
165                                         INC_PER_FRAME;\r
166                                         player[pn].enti.y-=(player[pn].enti.speed);\r
167                                         ANIMATESPRIFUN(pip, player, pn, 0);\r
168                                         if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
169                                         player[pn].enti.q++;\r
170                                 } else { player[pn].enti.q = 1; player[pn].enti.d = 2; player[pn].enti.ty--; }\r
171                         }\r
172                         else\r
173                         {\r
174                                 if(!pageflipflop) modexCopyPageRegion(pip[1].page, pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32);\r
175 #ifdef SPRITE\r
176                                 modexDrawSpriteRegion(pip[0].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 0, 24, 32, PLAYERBMPDATAPTR);\r
177 #else\r
178                                 modexClearRegion(pip[1].page, player[pn].enti.x, player[pn].enti.y-TILEWH, 24, 32, 12);\r
179 #endif\r
180                                 if(!pageflipflop) VL_ShowPage(pip[1].page, 0, 0);\r
181                                 player[pn].enti.d = 2;\r
182                         }\r
183                         player[pn].enti.triggerx = player[pn].enti.tx;\r
184                         player[pn].enti.triggery = player[pn].enti.ty-1;\r
185                 break;\r
186         }\r
187 }\r