1 #include <stdio.h>
2
3 #include "portab.h"
4 #include "system.h"
5 #include "cg.h"
6 #include "ags.h"
7 #include "surface.h"
8 #include "ngraph.h"
9 #include "night.h"
10 #include "sprite.h"
11 #include "nt_scenario.h"
12 #include "sactcg.h"
13
14 // �ɻ楹�ץ饤��ɽ������
15 #define WALL_LOC_X 0
16 #define WALL_LOC_Y 0
17 // ���ʥ��ץ饤��ɽ������
18 #define SCENERY_LOC_X 0
19 #define SCENERY_LOC_Y 64
20 // �饹�ץ饤��ɽ������
21 #define FACE_LOC_X 6
22 #define FACE_LOC_Y 272
23 // Ω���������ץ饤��ɽ������
24 #define TACHI_L_LOC_X 0
25 #define TACHI_L_LOC_Y 0
26 // Ω����������ץ饤�Ȱ���
27 #define TACHI_M_LOC_X 160
28 #define TACHI_M_LOC_Y 0
29 // Ω���������ץ饤�Ȱ���
30 #define TACHI_R_LOC_X 360
31 #define TACHI_R_LOC_Y 0
32
33 static int effecttime;
34
nt_gr_init()35 void nt_gr_init() {
36 }
37
nt_gr_set_wallpaper(int no)38 void nt_gr_set_wallpaper(int no) {
39 sprite_t *sp = night.sp[SPNO_WALL];
40
41 if (sp) {
42 sp_remove_updatelist(sp);
43 sp_free(sp);
44 }
45
46 if (no == 1013 && nt_sco_is_natsu()) {
47 no = 1011;
48 }
49
50 if (no == 1014 && nt_sco_is_natsu()) {
51 no = 1012;
52 }
53
54 sp = sp_new(SPNO_WALL, no, 0, 0, SPRITE_WP);
55 sp_add_updatelist(sp);
56 if (no == 0) {
57 sp->cursize.width = sf0->width;
58 sp->cursize.height = sf0->height;
59 sp->update = sp_draw_wall;
60 }
61
62 night.sp[SPNO_WALL] = sp;
63 }
64
nt_gr_set_scenery(int no)65 void nt_gr_set_scenery(int no) {
66 sprite_t *sp = night.sp[SPNO_SCENERY];
67
68 if (sp) {
69 sp_remove_updatelist(sp);
70 sp_free(sp);
71 sp = NULL;
72 }
73
74 if (no) {
75 sp = sp_new(SPNO_SCENERY, no, 0, 0, SPRITE_NORMAL);
76 sp_add_updatelist(sp);
77 sp_set_loc(sp, SCENERY_LOC_X, SCENERY_LOC_Y);
78 }
79
80 night.sp[SPNO_SCENERY] = sp;
81 }
82
nt_gr_set_face(int no)83 void nt_gr_set_face(int no) {
84 sprite_t *sp = night.sp[SPNO_FACE];
85
86 if (sp) {
87 sp_remove_updatelist(sp);
88 sp_free(sp);
89 sp = NULL;
90 }
91 if (no) {
92 sp = sp_new(SPNO_FACE, no, 0, 0, SPRITE_NORMAL);
93 sp_add_updatelist(sp);
94 sp_set_loc(sp, FACE_LOC_X, FACE_LOC_Y);
95 night.msgplace = 2;
96 } else {
97 night.msgplace = 0;
98 }
99 night.sp[SPNO_FACE] = sp;
100 }
101
nt_gr_set_spL(int no)102 void nt_gr_set_spL(int no) {
103 sprite_t *sp = night.sp[SPNO_TACHI_L];
104
105 if (sp) {
106 sp_remove_updatelist(sp);
107 sp_free(sp);
108 sp = NULL;
109 }
110 if (no) {
111 sp = sp_new(SPNO_TACHI_L, no, 0, 0, SPRITE_NORMAL);
112 sp_add_updatelist(sp);
113 sp_set_loc(sp, TACHI_L_LOC_X, TACHI_L_LOC_Y);
114 }
115 night.sp[SPNO_TACHI_L] = sp;
116 }
117
nt_gr_set_spM(int no)118 void nt_gr_set_spM(int no) {
119 sprite_t *sp = night.sp[SPNO_TACHI_M];
120
121 if (sp) {
122 sp_remove_updatelist(sp);
123 sp_free(sp);
124 sp = NULL;
125 }
126 if (no) {
127 sp = sp_new(SPNO_TACHI_M, no, 0, 0, SPRITE_NORMAL);
128 sp_add_updatelist(sp);
129 sp_set_loc(sp, TACHI_M_LOC_X, TACHI_M_LOC_Y);
130 }
131 night.sp[SPNO_TACHI_M] = sp;
132 }
133
nt_gr_set_spR(int no)134 void nt_gr_set_spR(int no) {
135 sprite_t *sp = night.sp[SPNO_TACHI_R];
136
137 if (sp) {
138 sp_remove_updatelist(sp);
139 sp_free(sp);
140 sp = NULL;
141 }
142 if (no) {
143 sp = sp_new(SPNO_TACHI_R, no, 0, 0, SPRITE_NORMAL);
144 sp_add_updatelist(sp);
145 sp_set_loc(sp, TACHI_R_LOC_X, TACHI_R_LOC_Y);
146 }
147 night.sp[SPNO_TACHI_R] = sp;
148 }
149
nt_gr_set_spsL(int no)150 void nt_gr_set_spsL(int no) {
151 if (no) {
152 if (nt_sco_is_natsu()) no++;
153 }
154 nt_gr_set_spL(no);
155 }
156
nt_gr_set_spsM(int no)157 void nt_gr_set_spsM(int no) {
158 if (no) {
159 if (nt_sco_is_natsu()) no++;
160 }
161 nt_gr_set_spM(no);
162 }
163
nt_gr_set_spsR(int no)164 void nt_gr_set_spsR(int no) {
165 if (no) {
166 if (nt_sco_is_natsu()) no++;
167 }
168 nt_gr_set_spR(no);
169 }
170
nt_gr_set_drawtime(int msec)171 void nt_gr_set_drawtime(int msec) {
172 effecttime = msec;
173 }
174
nt_gr_draw(int effectno)175 void nt_gr_draw(int effectno) {
176 switch(effectno) {
177 case 0:
178 // ���ä�
179 break;
180 case 1:
181 sp_update_all(TRUE);
182 break;
183 default:
184 if (night.waitskiplv > 1) {
185 sp_update_all(TRUE);
186 break;
187 }
188 //sp_eupdate(effectno, effecttime, TRUE);
189 sp_eupdate(effectno, 1000, TRUE);
190 }
191 }
192
nt_gr_screencg(int no,int x,int y)193 void nt_gr_screencg(int no, int x, int y) {
194 surface_t *sf;
195
196 ags_sync();
197
198 sf = sf_loadcg_no(no -1);
199
200 gre_BlendScreen(sf0, x, y, sf0, x, y, sf, 0, 0, sf->width, sf->height);
201
202 ags_updateArea(x, y, sf->width, sf->height);
203
204 sf_free(sf);
205 }
206
207
208