29
29
#include <stdlib.h>
31
31
#include <string.h>
36
#include "portability.h"
37
45
#include "berusky.h"
38
46
#include "berusky_gui.h"
40
48
#include "editor.h"
42
ITEM_REPOSITORY *item_panel::p_repo = NULL;
44
// draws item panel, writes records to item_array and
45
// returns number of written items
55
bool item_panel::panel_scroll_check(int direction)
57
int tmp_item = item_first + item_increment * direction;
58
int tmp_variant = variant_first + variant_increment * direction;
60
if(tmp_item < 0 || tmp_variant < 0)
64
for(i = 0; i < item_num; i++) {
65
int item = tmp_item + item_increment * i;
66
int variant = tmp_variant + variant_increment * i;
68
if(!p_repo->item_valid(item) || !p_repo->variant_valid(item,variant))
72
return(i == item_num);
75
void item_panel::panel_scroll(int direction, EDITOR_SELECTION *p_sel, bool redraw)
77
if(panel_scroll_check(direction)) {
78
item_first += item_increment * direction;
79
variant_first += variant_increment * direction;
80
if(item_selected != NO_SELECTION) {
81
item_return(item_selected,p_sel,direction);
88
int item_panel::item_return(tpos x, tpos y, EDITOR_SELECTION *p_sel)
50
ITEM_REPOSITORY *editor_panel::p_repo = NULL;
52
bool editor_panel::slot_return(tpos x, tpos y, int &slot)
93
/* Panel is horizontal/vertical? */
57
// Panel is horizontal/vertical?
95
59
sx += EDIT_ARROW_DX;
101
for(i = 0; i < item_num; i++) {
65
for(i = 0; i < panel_size_get(); i++) {
103
69
tpos tx = sx + dx*i;
104
70
tpos ty = sy + dy*i;
106
int item = item_first + item_increment*i;
107
int variant = variant_first + variant_increment*i;
109
if(!p_repo->item_valid(item) || !p_repo->variant_valid(item,variant))
110
return(NO_SELECTION);
112
72
if(INSIDE(tx, x, ITEM_SIZE_X) && INSIDE(ty, y, ITEM_SIZE_Y)) {
115
p_sel->variant = variant;
121
return(NO_SELECTION);
124
int item_panel::item_return(int selected_item, EDITOR_SELECTION *p_sel, int correction)
128
selected_item += correction;
129
if(selected_item < 0)
131
if(selected_item >= item_num)
132
selected_item = item_num-1;
134
for(i = 0; i < item_num; i++) {
136
int item = item_first + item_increment*i;
137
int variant = variant_first + variant_increment*i;
139
if(!p_repo->item_valid(item) || !p_repo->variant_valid(item,variant)) {
140
return(i > 0 && i == selected_item ? i-1 : NO_SELECTION);
142
if(i == selected_item) {
145
p_sel->variant = variant;
151
return(NO_SELECTION);
154
void item_panel::publish(void)
162
// Panel is horizontal
182
for(i = 0; i < item_num; i++) {
187
int item = item_first + item_increment*i;
188
int variant = variant_first + variant_increment*i;
190
if(!p_repo->item_valid(item) || !p_repo->variant_valid(item,variant))
193
#define COLOR_HIGHLIGHTED_R 0
194
#define COLOR_HIGHLIGHTED_G 0
195
#define COLOR_HIGHLIGHTED_B 200
197
#define COLOR_SELECTED_R 175
198
#define COLOR_SELECTED_G 0
199
#define COLOR_SELECTED_B 0
201
if(i == item_highlighted) {
202
p_grf->fill(x,y,ITEM_SIZE_X,ITEM_SIZE_Y,p_grf->color_map(COLOR_HIGHLIGHTED_R,
203
COLOR_HIGHLIGHTED_G, COLOR_HIGHLIGHTED_B));
205
if(i == item_selected) {
206
p_grf->fill(x,y,ITEM_SIZE_X,ITEM_SIZE_Y, p_grf->color_map(COLOR_SELECTED_R,
207
COLOR_SELECTED_G, COLOR_SELECTED_B));
210
p_repo->draw(x+CELL_SIZE_X,y+CELL_SIZE_X,item,variant,0);
213
p_grf->redraw_add(&r);
216
// draws controls for a panel
217
void item_panel::publish_controls(INPUT *p_input)
225
// Panel is horizontal
81
void editor_panel::panel_scroll(int direction, EDITOR_SELECTION *p_sel, bool redraw)
83
int panel_item_first = item_firts_get();
84
int panel_item_num = items_num_get();
87
if(direction == ITEMS_START) {
90
else if(direction == ITEMS_END) {
91
item_new = panel_item_num - panel_size_get();
94
item_new = panel_item_first + direction;
101
if(item_new == panel_item_first) {
102
// no scroll - don't change it
106
// Do we scroll the panel?
107
if(panel_item_num > panel_size_get()) {
108
if(item_new + panel_size_get() > panel_item_num) {
109
item_new = panel_item_num - panel_size_get();
110
assert(item_new >= panel_item_first);
112
if(item_new != panel_item_first)
113
panel_set(item_new, p_sel, TRUE, redraw);
117
RECT editor_panel::boundary_get(void)
125
// Panel is horizontal
130
r.w = dx*panel_size_get();
231
131
r.h = ITEM_SIZE_Y;
233
133
// Panel is vertical
261
168
if(dx) { // Panel is horizontal
170
RECT t = {start_x, start_y+CELL_SIZE_Y, EDIT_ARROW_DX, EDIT_ARROW_DY};
171
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
172
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
176
RECT t = {r.x+r.w,r.y+CELL_SIZE_Y, EDIT_ARROW_DX, EDIT_ARROW_DY};
177
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
178
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
181
} else { // Panel is vertical
183
RECT t = {start_x+CELL_SIZE_X, start_y, EDIT_ARROW_DX, EDIT_ARROW_DY};
184
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
185
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
189
RECT t = {r.x+CELL_SIZE_X, r.y+r.h, EDIT_ARROW_DX, EDIT_ARROW_DY};
190
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
191
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
197
void editor_panel::slot_draw(int slot, int item, int variant)
199
RECT r = boundary_get();
201
tpos x = r.x + dx*slot;
202
tpos y = r.y + dy*slot;
204
p_grf->fill(x,y,ITEM_SIZE_X,ITEM_SIZE_Y,0);
206
if(!p_repo->item_valid(item) || !p_repo->variant_valid(item,variant))
209
#define COLOR_HIGHLIGHTED_R 0
210
#define COLOR_HIGHLIGHTED_G 0
211
#define COLOR_HIGHLIGHTED_B 200
213
#define COLOR_SELECTED_R 175
214
#define COLOR_SELECTED_G 0
215
#define COLOR_SELECTED_B 0
217
if(slot == panel_slot_highlighted) {
218
p_grf->fill(x,y,ITEM_SIZE_X,ITEM_SIZE_Y,p_grf->color_map(COLOR_HIGHLIGHTED_R,
219
COLOR_HIGHLIGHTED_G, COLOR_HIGHLIGHTED_B));
221
if(slot == panel_slot_selected) {
222
p_grf->fill(x,y,ITEM_SIZE_X,ITEM_SIZE_Y, p_grf->color_map(COLOR_SELECTED_R,
223
COLOR_SELECTED_G, COLOR_SELECTED_B));
226
p_repo->draw(x+CELL_SIZE_X,y+CELL_SIZE_X,item,variant,0);
229
void editor_panel::controls_draw(void)
231
RECT r = boundary_get();
233
if(dx) { // Panel is horizontal
263
235
p_grf->draw(EDIT_ARROW_LEFT,start_x,start_y+CELL_SIZE_Y);
264
236
p_grf->redraw_add(EDIT_ARROW_LEFT,start_x,start_y+CELL_SIZE_Y);
265
RECT t = {start_x, start_y+CELL_SIZE_Y, EDIT_ARROW_DX, EDIT_ARROW_DY};
266
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
267
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
271
239
p_grf->draw(EDIT_ARROW_RIGHT,r.x+r.w,r.y+CELL_SIZE_Y);
272
240
p_grf->redraw_add(EDIT_ARROW_RIGHT,r.x+r.w,r.y+CELL_SIZE_Y);
273
RECT t = {r.x+r.w,r.y+CELL_SIZE_Y, EDIT_ARROW_DX, EDIT_ARROW_DY};
274
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
275
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
278
242
} else { // Panel is vertical
280
244
p_grf->draw(EDIT_ARROW_UP,start_x+CELL_SIZE_X,start_y);
281
245
p_grf->redraw_add(EDIT_ARROW_UP,start_x+CELL_SIZE_X,start_y);
282
RECT t = {start_x+CELL_SIZE_X, start_y, EDIT_ARROW_DX, EDIT_ARROW_DY};
283
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
284
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
288
248
p_grf->draw(EDIT_ARROW_DOWN,r.x+CELL_SIZE_X,r.y+r.h);
289
249
p_grf->redraw_add(EDIT_ARROW_DOWN,r.x+CELL_SIZE_X,r.y+r.h);
290
RECT t = {r.x+CELL_SIZE_X, r.y+r.h, EDIT_ARROW_DX, EDIT_ARROW_DY};
291
p_input->mevent_add(MOUSE_EVENT(MOUSE_STATE(t,MASK_BUTTON_LEFT),
292
MEVENT_MOUSE_IN|MEVENT_MOUSE_BUTTONS, LEVEL_EVENT(ED_LEVEL_IPANEL_SCROLL,
254
/* Select the select item by variant panel
256
void item_panel::item_select(EDITOR_SELECTION *p_sel)
258
int slot = selected_slot_get();
259
if(slot == NO_SELECTION)
262
int selected_item = panel_item_first+slot;
264
// Propagate the selected item to variant panel
265
((VARIANT_PANEL*)attached_panel_get())->panel_item_set(selected_item, FALSE);
266
((VARIANT_PANEL*)attached_panel_get())->panel_set(0, p_sel, FALSE, TRUE);
267
((VARIANT_PANEL*)attached_panel_get())->slot_select(0, p_sel, TRUE, TRUE);
270
void item_panel::panel_draw(void)
272
RECT r = boundary_get();
276
for(i = 0; i < panel_size_get(); i++) {
277
slot_draw(i, panel_item_first + i, 0);
279
p_grf->redraw_add(&r);
284
void variant_panel::panel_draw(void)
286
RECT r = boundary_get();
290
for(i = 0; i < panel_size_get(); i++) {
291
slot_draw(i, panel_item, panel_variant_first + i);
293
p_grf->redraw_add(&r);
298
298
editor_layer_config::editor_layer_config(void)
303
303
editor_gui::editor_gui(ITEM_REPOSITORY *p_repo_, DIR_LIST *p_dir_):
308
308
console(&input,CONSOLE_X,CONSOLE_Y,CONSOLE_DX,CONSOLE_LINES),
309
selected_editor_item(&level)
311
editor_panel::set_up(p_repo_);
313
ipanel[0] = new ITEM_PANEL(ITEMS_IN_PANEL, VERTICAL, 0, 0, PANEL_HANDLE_1);
314
ipanel[1] = new VARIANT_PANEL(ITEMS_IN_PANEL, VERTICAL, ITEM_SIZE_X, 0, PANEL_HANDLE_2);
315
ipanel[2] = new ITEM_PANEL(ITEMS_IN_PANEL, HORIZONTAL, 2*ITEM_SIZE_X, 0, PANEL_HANDLE_3);
316
ipanel[3] = new VARIANT_PANEL(ITEMS_IN_PANEL, HORIZONTAL, 2*ITEM_SIZE_X, ITEM_SIZE_Y, PANEL_HANDLE_4);
318
ipanel[0]->attached_panel_set(ipanel[1]);
319
ipanel[2]->attached_panel_set(ipanel[3]);
321
ipanel[1]->attached_panel_set(ipanel[0]);
322
ipanel[3]->attached_panel_set(ipanel[2]);
327
editor_gui::~editor_gui(void)
330
for(i = 0; i < PANELS; i++) {
335
void editor_gui::editor_reset(void)
311
337
input.mevent_clear();
312
338
input.events_wait(TRUE);
314
342
// Clear whole screen
346
for(i = 0; i < PANELS; i++) {
347
ipanel[i]->register_controls_events(&input);
317
// TODO -- predelat vsechno draw -> na konfigy (reset)
320
352
selection_draw();
321
353
layer_menu_draw();
322
354
layer_status_draw();
324
356
layer_active_set(ALL_LEVEL_LAYERS);
325
357
side_menu_create();
328
360
level.back_max_set(background_num(p_dir));
331
editor_gui::~editor_gui(void)
336
363
// Panel interface
337
364
void editor_gui::panel_item_select(int panel, tpos x, tpos y)
339
366
panel -= PANEL_HANDLE_1;
340
367
assert(panel >= 0 && panel < PANELS);
369
EDITOR_PANEL *p_attached = ipanel[panel]->attached_panel_get();
343
372
for(i = 0; i < PANELS; i++) {
345
ipanel[i].item_select(x,y,&sel);
347
ipanel[i].item_unselect();
373
if(p_attached != ipanel[i]) {
374
ipanel[i]->slot_unselect(TRUE,TRUE);
378
// Select the selection
379
ipanel[panel]->slot_select(x,y,&selected_editor_item,TRUE,TRUE);
349
381
// Draw the current selection
350
382
selection_draw();
352
384
// Set active layer
353
layer_active_set(p_repo->item_get_layer(sel.item));
385
layer_active_set(p_repo->item_get_layer(selected_editor_item.item));
356
388
void editor_gui::panel_item_highlight(int panel, tpos x, tpos y)
358
390
panel -= PANEL_HANDLE_1;
359
391
assert(panel >= 0 && panel < PANELS);
360
ipanel[panel].item_highlight(x,y);
392
ipanel[panel]->slot_highlight(x,y,TRUE);
363
void editor_gui::panel_reset(void)
395
void editor_gui::panel_draw(void)
365
#define ITEMS_X_START 0
366
#define ITEMS_Y_START 0
367
#define ITEMS_X_DIFF 0
368
#define ITEMS_Y_DIFF 35
369
#define ITEMS_DX (EDITOR_RESOLUTION_X-ITEMS_X_START)
370
#define ITEMS_DY (EDITOR_RESOLUTION_Y-ITEMS_Y_START)
372
//-- dodelat tu listu
373
#define ITEMS_IN_PANEL 12
375
item_panel::set_up(p_repo);
377
ipanel[0].set_up(ITEMS_IN_PANEL, VERTICAL, 0, 0, PANEL_HANDLE_1,ipanel+1);
378
ipanel[0].item_increment = 1;
379
ipanel[1].set_up(ITEMS_IN_PANEL, VERTICAL, ITEM_SIZE_X, 0, PANEL_HANDLE_2);
380
ipanel[1].variant_increment = 1;
382
ipanel[2].set_up(ITEMS_IN_PANEL, HORIZONTAL, 2*ITEM_SIZE_X, 0, PANEL_HANDLE_3, ipanel+3);
383
ipanel[2].item_increment = 1;
384
ipanel[3].set_up(ITEMS_IN_PANEL, HORIZONTAL, 2*ITEM_SIZE_X, ITEM_SIZE_Y, PANEL_HANDLE_4);
385
ipanel[3].variant_increment = 1;
388
398
for(i = 0; i < PANELS; i++) {
390
ipanel[i].publish_controls(&input);
399
ipanel[i]->panel_draw();
494
526
/* Side menu - general
497
#define SIDE_MENU_X (EDITOR_SCREEN_START_X+GAME_RESOLUTION_X+10)
498
#define SIDE_MENU_Y (EDITOR_SCREEN_START_Y+100)
499
#define SIDE_MENU_DX (EDITOR_RESOLUTION_X-SIDE_MENU_X)
500
#define SIDE_MENU_DY (EDITOR_RESOLUTION_Y-SIDE_MENU_Y)
501
#define SIDE_MENU_X_DIFF 0
502
#define SIDE_MENU_Y_DIFF 35
528
#define SIDE_MENU_X (EDITOR_SCREEN_START_X+GAME_RESOLUTION_X+10)
529
#define SIDE_MENU_Y (EDITOR_SCREEN_START_Y+60)
530
#define SIDE_MENU_DX (EDITOR_RESOLUTION_X-SIDE_MENU_X)
531
#define SIDE_MENU_DY (EDITOR_RESOLUTION_Y-SIDE_MENU_Y)
532
#define SIDE_MENU_X_DIFF 0
533
#define SIDE_MENU_Y_DIFF 35
505
535
static char *side_menu[] =
540
_("save as (ct+f2)"),
546
_("rotate (shft+r)"),
513
551
void editor_gui::side_menu_create(void)
515
p_font->print(NULL,SIDE_MENU_X, SIDE_MENU_Y, "Select layer:");
553
p_font->print(NULL,SIDE_MENU_X, SIDE_MENU_Y, "Editor menu:");
517
555
menu_item_set_pos(SIDE_MENU_X, SIDE_MENU_Y+SIDE_MENU_Y_DIFF);
518
556
menu_item_set_diff(SIDE_MENU_X_DIFF, SIDE_MENU_Y_DIFF);
520
menu_item_draw(side_menu[0], LEFT_NO_ARROW, TRUE, LEVEL_EVENT(ED_LEVEL_SELECT_LAYER,LAYER_FLOOR));
521
menu_item_draw(side_menu[1], LEFT_NO_ARROW, TRUE, LEVEL_EVENT(ED_LEVEL_SELECT_LAYER,LAYER_ITEMS));
522
menu_item_draw(side_menu[2], LEFT_NO_ARROW, TRUE, LEVEL_EVENT(ED_LEVEL_SELECT_LAYER,LAYER_PLAYER));
523
menu_item_draw(side_menu[3], LEFT_NO_ARROW, TRUE, LEVEL_EVENT(ED_LEVEL_SELECT_LAYER,ALL_LEVEL_LAYERS));
558
menu_item_draw(side_menu[0], LEFT, TRUE, LEVEL_EVENT(ED_HELP));
559
menu_item_draw(side_menu[1], LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_NEW));
560
menu_item_draw(side_menu[2], LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_SAVE));
561
menu_item_draw(side_menu[3], LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_SAVE_AS));
562
menu_item_draw(side_menu[4], LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_LOAD));
563
menu_item_draw(side_menu[5], LEFT, TRUE, LEVEL_EVENT(ED_QUIT));
564
menu_item_draw(side_menu[6], LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_RUN));
565
menu_item_draw(side_menu[7], LEFT, TRUE, LEVEL_EVENT(ED_UNDO));
566
menu_item_draw(side_menu[9], LEFT, TRUE, LEVEL_EVENT(ED_ROTATE_SELECTION));
567
menu_item_draw(side_menu[10],LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_SHADER));
568
menu_item_draw(side_menu[11],LEFT, TRUE, LEVEL_EVENT(ED_LEVEL_CHANGE_BACKGROUND));
525
570
p_grf->redraw_add(SIDE_MENU_X,SIDE_MENU_Y,SIDE_MENU_DX,SIDE_MENU_DY);
861
void editor_gui::level_save(bool force)
922
void editor_gui::help_print_line(tpos x_pos, tpos &y_pos, char *p_key, char *p_name = NULL)
924
p_font->print(NULL,x_pos,y_pos,p_key);
926
p_font->print(NULL,x_pos+EDIT_HELP_KEY_DX,y_pos,p_name);
928
y_pos += p_font->height_get();
929
y_pos += EDIT_HELP_DY;
932
void editor_gui::help(void)
934
p_grf->fill(0,0,EDITOR_RESOLUTION_X,EDITOR_RESOLUTION_Y,0);
936
p_font->select(FONT_DEFAULT);
938
tpos x_pos = EDIT_HELP_KEY_X;
939
tpos y_pos = EDIT_HELP_START_Y;
941
help_print_line(x_pos,y_pos,_("Keyboard control:"));
942
y_pos += EDIT_HELP_DY;
943
help_print_line(x_pos,y_pos,_("F1"),_("- Help"));
944
help_print_line(x_pos,y_pos,_("ESC"),_("- Quit"));
945
y_pos += EDIT_HELP_DY;
946
help_print_line(x_pos,y_pos,_("CTRL+N"),_("- New level"));
947
help_print_line(x_pos,y_pos,_("f2"),_("- Save level"));
948
help_print_line(x_pos,y_pos,_("CTRL+F2"),_("- Save level as"));
949
help_print_line(x_pos,y_pos,_("F3"),_("- Load level"));
950
y_pos += EDIT_HELP_DY;
951
help_print_line(x_pos,y_pos,_("F9"),_("- Run level"));
952
y_pos += EDIT_HELP_DY;
953
help_print_line(x_pos,y_pos,_("SHIFT+R"),_("- Rotate item"));
954
help_print_line(x_pos,y_pos,_("CTRL+U"),_("- Undo"));
955
help_print_line(x_pos,y_pos,_("CTRL+S"),_("- Shade level"));
956
help_print_line(x_pos,y_pos,_("B"),_("- Background"));
957
y_pos += EDIT_HELP_DY;
958
help_print_line(x_pos,y_pos,_("1"),_("- Select floor layer"));
959
help_print_line(x_pos,y_pos,_("2"),_("- Select items layer"));
960
help_print_line(x_pos,y_pos,_("3"),_("- Select players layer"));
961
help_print_line(x_pos,y_pos,_("4"),_("- Select all layer"));
962
y_pos += EDIT_HELP_DY;
963
help_print_line(x_pos,y_pos,_("CTRL+1"),_("- on/off background"));
964
help_print_line(x_pos,y_pos,_("CTRL+2"),_("- on/off floor layer"));
965
help_print_line(x_pos,y_pos,_("CTRL+3"),_("- on/off items layer"));
966
help_print_line(x_pos,y_pos,_("CTRL+4"),_("- on/off players layer"));
968
x_pos = EDIT_HELP_MOUSE_X;
969
y_pos = EDIT_HELP_START_Y;
970
help_print_line(x_pos,y_pos,_("Mouse control:"));
971
y_pos += EDIT_HELP_DY;
972
help_print_line(x_pos,y_pos,_("first"),_("- insert selected item"));
973
help_print_line(x_pos,y_pos,_("third"),_("- clear selected cell"));
974
y_pos += EDIT_HELP_DY;
975
help_print_line(x_pos,y_pos,_("R+wheel"),_("- in place rotation"));
976
help_print_line(x_pos,y_pos,_("V+wheel"),_("- in place variation"));
977
y_pos += EDIT_HELP_DY;
978
help_print_line(x_pos,y_pos,_("F+first"),_("- fill rect with item"));
979
help_print_line(x_pos,y_pos,_("D+first"),_("- draw rect with item"));
980
y_pos += EDIT_HELP_DY;
981
help_print_line(x_pos,y_pos,_("F+third"),_("- clear solid rect"));
982
help_print_line(x_pos,y_pos,_("D+third"),_("- clear empty rect"));
984
x_pos = EDIT_HELP_MOUSE_X+70;
985
y_pos += EDIT_HELP_DY*6;
986
help_print_line(x_pos,y_pos,_("item panel mouse control:"));
987
y_pos += EDIT_HELP_DY;
988
help_print_line(x_pos,y_pos,_("wheel"),_("- scroll by one"));
989
y_pos += EDIT_HELP_DY;
990
help_print_line(x_pos,y_pos,_("PgUp"),_("- scroll page up"));
991
help_print_line(x_pos,y_pos,_("PgDown"),_("- scroll page down"));
992
y_pos += EDIT_HELP_DY;
993
help_print_line(x_pos,y_pos,_("Home"),_("- first item"));
994
help_print_line(x_pos,y_pos,_("End"),_("- last item"));
996
p_grf->redraw_add(0,0,EDITOR_RESOLUTION_X,EDITOR_RESOLUTION_Y);
998
menu_key_input.set((GUI_BASE *)this,(GUI_BASE_FUNC)&editor_gui::console_wait);
999
console.input_start(INPUT_WAIT, NULL);
1004
void editor_gui::help_quit(void)
1009
void editor_gui::level_save(int force)
863
1011
level_save_as(level_name,force);
866
1014
void editor_gui::level_cursor_set(tpos x, tpos y)
871
1018
if((state = level.coord_in_level(x,y))) {
872
1019
level.coord_to_cell(&x,&y);
890
1037
tpos sx,sy,dx,dy;
892
1039
level.selection_rectangle_get(&sx,&sy,&dx,&dy);
893
level.cell_set(sx, sy, dx, dy, layer, sel.item, sel.variant, sel.rotation, TRUE, fill);
1040
level.cell_set(sx, sy, dx, dy, layer,
1041
selected_editor_item.item,
1042
selected_editor_item.variant,
1043
selected_editor_item.rotation,
895
1046
level.selection_rectangle_set(FALSE);
896
console.print(_("Inserted item %d at %dx%d - %dx%d layer %d"),sel.item,sx,sy,dx,dy,layer);
1047
console.print(_("Inserted item %d at %dx%d - %dx%d layer %d"),
1048
selected_editor_item.item,sx,sy,dx,dy,layer);
901
1053
level.selection_get(&x, &y);
902
level.cell_set(x, y, layer, sel.item, sel.variant, sel.rotation, TRUE);
1054
level.cell_set(x, y, layer,
1055
selected_editor_item.item,
1056
selected_editor_item.variant,
1057
selected_editor_item.rotation, TRUE);
904
console.print(_("Inserted item %d at %dx%d layer %d"),sel.item,x,y,layer);
1059
console.print(_("Inserted item %d at %dx%d layer %d"),
1060
selected_editor_item.item,x,y,layer);
907
1063
level_edited_set();
1045
1201
if(button == BUTTON_LEFT)
1046
1202
p_queue->add(LEVEL_EVENT(ED_LEVEL_DRAW_CURSOR_INSERT_ITEM));
1047
1203
else if(button == BUTTON_MIDDLE)
1049
1205
else if(button == BUTTON_RIGHT)
1050
p_queue->add(LEVEL_EVENT(ED_LEVEL_DRAW_CURSOR_CLEAR_ITEM));
1206
p_queue->add(LEVEL_EVENT(ED_LEVEL_DRAW_CURSOR_CLEAR_ITEM));
1053
1209
case SCREEN_HANDLE_ROTATE:
1054
direction = (ev.param_int_get(PARAM_4) == WHEEL_UP) ? -1 : 1;
1210
direction = (ev.param_int_get(PARAM_4) == WHEEL_UP) ? -1 : 1;
1055
1211
p_queue->add(LEVEL_EVENT(ED_LEVEL_SET_CURSOR,ev.param_get(PARAM_1),ev.param_get(PARAM_2)));
1056
1212
p_queue->add(LEVEL_EVENT(ED_LEVEL_DRAW_CURSOR_ROTATE_ITEM, ITEM_MODIFY, direction));
1057
1213
p_queue->commit();
1059
1215
case SCREEN_HANDLE_VARIATE:
1060
direction = (ev.param_int_get(PARAM_4) == WHEEL_UP) ? -1 : 1;
1216
direction = (ev.param_int_get(PARAM_4) == WHEEL_UP) ? -1 : 1;
1061
1217
p_queue->add(LEVEL_EVENT(ED_LEVEL_SET_CURSOR,ev.param_get(PARAM_1),ev.param_get(PARAM_2)));
1062
1218
p_queue->add(LEVEL_EVENT(ED_LEVEL_DRAW_CURSOR_VARIATE_ITEM,ITEM_MODIFY,direction));
1063
1219
p_queue->commit();