- Fixed compile errors in the other targets. - Added three test save files: one with a party not in a scenario, one with a party who has just entered Valley of Dying things, and one with the same party just after leaving town. - Added the new menu file for the game that I'm working on (not yet used) git-svn-id: http://openexile.googlecode.com/svn/trunk@53 4ebdad44-0ea0-11de-aab3-ff745001d230
916 lines
31 KiB
C++
916 lines
31 KiB
C++
/*
|
||
* dloglowlevel.cpp
|
||
* BoE
|
||
*
|
||
* Created by Celtic Minstrel on 16/04/09.
|
||
*
|
||
*/
|
||
|
||
#include <stdio.h>
|
||
#include <string.h>
|
||
|
||
#include "dlgconsts.h"
|
||
#include "dlglowlevel.h"
|
||
#include "dlgtool.h"
|
||
|
||
#include "soundtool.h"
|
||
#include "graphtool.h"
|
||
#include "mathutil.h"
|
||
|
||
extern PixPatHandle bg[];
|
||
|
||
extern GWorldPtr dlg_buttons_gworld[NUM_BUTTONS][2];
|
||
extern map<char*,GWorldPtr*> dlg_gworlds;
|
||
|
||
extern dlg_t dlgs[ND];
|
||
extern dlg_item_t items[NI];
|
||
|
||
extern char text_long_str[10][256];
|
||
extern char text_short_str[140][40];
|
||
extern dlg_label_t labels[NL];
|
||
extern short dlg_bg;
|
||
|
||
extern short available_dlog_buttons[NUM_DLOG_B];
|
||
extern btn_t buttons[];
|
||
|
||
void process_new_window (short which_dlg) {
|
||
short i = -1,j,free_slot = -1,free_item = -1,type,flag;
|
||
//char but_str[30];
|
||
Str255 item_str;
|
||
bool str_stored = false;
|
||
//Rect dlg_rect;
|
||
Rect store_rect;
|
||
short win_height = 0, win_width = 0;
|
||
short the_type;
|
||
Handle the_handle = NULL;
|
||
Rect small_rect;
|
||
short num_items;
|
||
short str_offset = 1;
|
||
WindowPtr hDlg = dlgs[which_dlg].win;
|
||
|
||
free_slot = which_dlg;
|
||
num_items = CountDITL(GetDialogFromWindow(hDlg));
|
||
|
||
dlgs[free_slot].highest_item = 0;
|
||
|
||
// Now, give the window its items
|
||
for (i = 0; i < num_items; i++) {
|
||
str_offset = 1;
|
||
GetDialogItem( GetDialogFromWindow(hDlg), i + 1, &the_type, &the_handle, &small_rect);
|
||
if (the_type % 128 == 8) {
|
||
GetDialogItemText(the_handle,item_str);
|
||
p2cstr(item_str);
|
||
dlgs[free_slot].highest_item++;
|
||
str_stored = false;
|
||
if (strlen((char *)item_str) == 0) {
|
||
sprintf((char *) item_str, "+");
|
||
type = DLG_TEXT_BOLD;
|
||
flag = 1;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '+') { // default is framed text
|
||
type = DLG_TEXT_BOLD;
|
||
flag = 1;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '*') {
|
||
type = DLG_TEXT_BOLD;
|
||
flag = 0;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '~') {
|
||
type = DLG_TEXT_LARGE;
|
||
flag = 0;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '!') {
|
||
type = DLG_TEXT_PLAIN;
|
||
flag = 0;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '=') {
|
||
type = DLG_TEXT_DEFAULT;
|
||
flag = 1;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '^') {
|
||
type = DLG_CUSTOM_BTN;
|
||
flag = 1;
|
||
if (string_length((char *) item_str) > 55)
|
||
flag = 2;
|
||
str_stored = true;
|
||
}
|
||
else if (((item_str[0] >= 65) && (item_str[0] <= 122)) || (item_str[0] == '"')) {
|
||
type = DLG_TEXT_DEFAULT;
|
||
flag = 0;
|
||
str_offset = 0;
|
||
str_stored = true;
|
||
}
|
||
else if (item_str[0] == '&') {
|
||
type = DLG_CUSTOM_DEF_BTN;
|
||
flag = 1;
|
||
if (string_length((char *) item_str) > 55)
|
||
flag = 2;
|
||
str_stored = true;
|
||
}
|
||
// else if (item_str[0] == '@') { // For potential future use
|
||
// type = DLG_PUSH_BTN;
|
||
// flag = 1;
|
||
// if (string_length((char *) item_str) > 55)
|
||
// flag = 2;
|
||
// str_stored = true;
|
||
// }
|
||
else {
|
||
#ifndef EXILE_BIG_GUNS
|
||
sscanf((char *) item_str,"%hd_%hd",&type,&flag);
|
||
#endif
|
||
#ifdef EXILE_BIG_GUNS
|
||
sscanf((char *) item_str,"%hd_%hd",&type,&flag);
|
||
#endif
|
||
}
|
||
|
||
free_item = -1;
|
||
// find free item
|
||
if(type == DLG_BUTTON || type == DLG_DEFAULT_BTN || type == DLG_LED_BUTTON ||
|
||
type == DLG_OLD_PICTURE || type == DLG_HIDDEN_BUTTON || type >= DLG_NEW_PICTURE){
|
||
for (j = 150; j < NI; j++)
|
||
if (items[j].dlg < 0) {
|
||
free_item = j;
|
||
break;
|
||
}
|
||
}else if ((type == 9) || (str_stored && (strlen((char *) item_str) > 35))) {
|
||
for (j = 0; j < 10; j++)
|
||
if (items[j].dlg < 0) {
|
||
free_item = j;
|
||
break;
|
||
}
|
||
}else {
|
||
for (j = 10; j < 140; j++)
|
||
if (items[j].dlg < 0) {
|
||
free_item = j;
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (free_item >= 0) {
|
||
items[free_item].dlg = dlgs[free_slot].type;
|
||
items[free_item].type = type;
|
||
items[free_item].number = i + 1;
|
||
|
||
items[free_item].rect = get_item_rect(hDlg,i + 1);
|
||
|
||
items[free_item].flag = flag;
|
||
|
||
items[free_item].active = 1;
|
||
items[free_item].label = 0;
|
||
items[free_item].label_loc = -1;
|
||
items[free_item].key = 0;
|
||
switch (type) {
|
||
case DLG_BUTTON: case DLG_DEFAULT_BTN:
|
||
GetPortBounds(dlg_buttons_gworld[buttons[flag].type][0], &store_rect);
|
||
items[free_item].rect.right = items[free_item].rect.left + store_rect.right;
|
||
items[free_item].rect.bottom = items[free_item].rect.top + store_rect.bottom;
|
||
items[free_item].key = buttons[flag].def_key;
|
||
if (type == 1)
|
||
items[free_item].key = DLG_KEY_RETURN;
|
||
break;
|
||
case DLG_LED_BUTTON:
|
||
items[free_item].rect.right = items[free_item].rect.left + 14;
|
||
items[free_item].rect.bottom = items[free_item].rect.top + 10;
|
||
items[free_item].key = 255;
|
||
break;
|
||
case DLG_TEXT_BOLD: case DLG_TEXT_PLAIN: case DLG_TEXT_LARGE:
|
||
case DLG_TEXT_CLICKABLE: case DLG_TEXT_DEFAULT:
|
||
case DLG_CUSTOM_BTN: case DLG_CUSTOM_DEF_BTN:
|
||
//sprintf(((free_item < 10) ? text_long_str[free_item] : text_short_str[free_item - 10]),"");
|
||
if (str_stored == true) {
|
||
if (free_item < 10)
|
||
sprintf(text_long_str[free_item],"%s",(char *) (item_str + str_offset));
|
||
else
|
||
sprintf(text_short_str[free_item - 10],"%-39.39s", (char *) (item_str + str_offset));
|
||
}
|
||
items[free_item].key = 255;
|
||
if (type >= DLG_CUSTOM_BTN) {
|
||
GetPortBounds(dlg_buttons_gworld[1][0], &store_rect);
|
||
items[free_item].rect.right = items[free_item].rect.left + store_rect.right;
|
||
items[free_item].rect.bottom = items[free_item].rect.top + store_rect.bottom;
|
||
if (type == DLG_CUSTOM_DEF_BTN)
|
||
items[free_item].key = DLG_KEY_RETURN;
|
||
}
|
||
break;
|
||
}
|
||
win_height = max(win_height, items[free_item].rect.bottom + 5);
|
||
win_width = max(win_width, items[free_item].rect.right + 6);
|
||
}
|
||
}
|
||
}
|
||
ShortenDITL(GetDialogFromWindow(hDlg),dlgs[free_slot].highest_item);
|
||
SizeWindow(hDlg,win_width,win_height,false);
|
||
dlgs[free_slot].highest_item = num_items;
|
||
}
|
||
|
||
// LOW LEVEL
|
||
|
||
short cd_get_indices(short dlg_num, short item_num, short *dlg_index, short *item_index){
|
||
if ((*dlg_index = cd_get_dlg_index(dlg_num)) < 0) {
|
||
return -1;
|
||
}
|
||
if ((*item_index = cd_get_item_id(dlg_num,item_num)) < 0) {
|
||
return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
short cd_get_dlg_index(short dlog_num){
|
||
short i;
|
||
|
||
for (i = 0; i < ND; i++)
|
||
if ((dlgs[i].key >= 0) && (dlgs[i].type == dlog_num))
|
||
return i;
|
||
return -1;
|
||
}
|
||
|
||
short cd_find_dlog(WindowPtr window, short *dlg_num, short *dlg_key){
|
||
short i;
|
||
for (i = 0; i < ND; i++)
|
||
if ((dlgs[i].key >= 0) && (dlgs[i].win == window)) {
|
||
*dlg_num = dlgs[i].type;
|
||
*dlg_key = dlgs[i].key;
|
||
return i;
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
short cd_get_item_id(short dlg_num, short item_num){
|
||
short i;
|
||
|
||
for (i = 0; i < NI; i++)
|
||
if ((items[i].dlg == dlg_num) && (items[i].number == item_num))
|
||
return i;
|
||
return -1;
|
||
}
|
||
|
||
Rect get_item_rect(WindowPtr hDlg, short item_num){
|
||
short the_type;
|
||
Handle the_handle = NULL;
|
||
Rect small_rect;
|
||
|
||
GetDialogItem( GetDialogFromWindow(hDlg), item_num, &the_type, &the_handle, &small_rect);
|
||
|
||
return small_rect;
|
||
}
|
||
|
||
void frame_dlog_rect(GrafPtr hDlg, Rect rect, short val, short med_or_lt){
|
||
static RGBColor lt_gray = {57344,57344,57344},dk_gray = {12287,12287,12287},med_gray = {24574,24574,24574};
|
||
GrafPtr old_port;
|
||
|
||
GetPort(&old_port);
|
||
SetPort(hDlg);
|
||
|
||
InsetRect(&rect,-1 * val,-1 * val);
|
||
|
||
RGBForeColor(&dk_gray);
|
||
MoveTo(rect.left,rect.top);
|
||
LineTo(rect.right,rect.top);
|
||
if (med_or_lt) // hDlg == GetWindowPort(mainPtr) // ie for the pc editor only
|
||
RGBForeColor(&med_gray);
|
||
else RGBForeColor(<_gray);
|
||
LineTo(rect.right,rect.bottom);
|
||
LineTo(rect.left,rect.bottom);
|
||
RGBForeColor(&dk_gray);
|
||
LineTo(rect.left,rect.top);
|
||
ForeColor(blackColor);
|
||
SetPort(old_port);
|
||
}
|
||
|
||
// win_or_gworld: 0 - window 1 - gworld
|
||
// 0 - 300 number of terrain graphic -> PICT_TER (1), PICT_TER_ANIM (2)
|
||
// 400 + x - monster graphic num (uses index from scenario) -> PICT_MONST
|
||
// 400 is 1st monster from monster index, 401 is 2nd from m. index, and so on
|
||
// 700 + x dlog graphic -> PICT_DLG
|
||
// 800 + x pc graphic -> PICT_PC
|
||
// 900 + x B&W graphic -> PICT_BW
|
||
// 950 null item -> 0, PICT_BLANK (0)
|
||
// 1000 + x Talking face -> PICT_TALK
|
||
// 1100 - item info help -> PICT_INFO
|
||
// 1200 - pc screen help -> PICT_PC_HELP
|
||
// 1300 - combat ap -> PICT_COMBAT_AP
|
||
// 1400-1402 - button help -> PICT_HELP
|
||
// 1500 - stat symbols help -> PICT_STAT
|
||
// 1600 + x - scen graphics -> PICT_SCEN
|
||
// 1700 + x - anim / field graphic -> PICT_FIELD
|
||
// 1800 + x item graphic -> PICT_ITEM
|
||
// 2000 + x - custom graphics up to 2399
|
||
// 2400 + x - custom graphics up to 2799, BUT it's a split graphic ...
|
||
// it looks at the size of rect, and places a 32 x 32 or 36 x 36 graphic drawn
|
||
// from the custom gworld, depending on the size of rect. half of graphic is
|
||
// drawn from one custom slot, and half is drawn from next one.
|
||
// PICT_OLD (-1) to revert to the old behaviour
|
||
GrafPtr hDialog;
|
||
short w__gw;
|
||
bool fr;
|
||
void draw_dialog_graphic(GrafPtr hDlg, Rect rect, short which_g, short type_g, bool do_frame,short win_or_gworld){
|
||
RGBColor store_color;
|
||
|
||
if (which_g < 0)
|
||
return;
|
||
|
||
if (which_g >= 2000)
|
||
do_frame = false;
|
||
which_g = which_g % 2000;
|
||
|
||
if (type_g == PICT_OLD)
|
||
convert_pict(which_g,type_g,rect); // pass by reference
|
||
printf("Drawing graphic %i of type %i.\n",which_g,type_g);
|
||
|
||
if (type_g == PICT_BLANK) { // Empty. Maybe clear space.
|
||
if (win_or_gworld == 0) {
|
||
InsetRect(&rect, -3, -3);
|
||
FillCRect(&rect,bg[dlg_bg]);
|
||
}
|
||
return;
|
||
}
|
||
GetBackColor(&store_color);
|
||
|
||
BackColor(whiteColor);
|
||
|
||
hDialog = hDlg;
|
||
w__gw = win_or_gworld;
|
||
fr = do_frame;
|
||
switch (type_g) {
|
||
case PICT_TER: // terrain
|
||
draw_preset_ter_pic(which_g,rect);
|
||
break;
|
||
case PICT_TER_ANIM: // animated terrain
|
||
draw_preset_anim_ter_pic(which_g,rect);
|
||
break;
|
||
case PICT_MONST: // monster ... needs use index small_monst_rect
|
||
// There are 4 different ways to draw, depending on size of monster
|
||
if ((m_pic_index[which_g].x == 1) && (m_pic_index[which_g].y == 1))
|
||
draw_preset_monst_pic_small(which_g,rect);
|
||
else if ((m_pic_index[which_g].x == 2) && (m_pic_index[which_g].y == 1))
|
||
draw_preset_monst_pic_wide(which_g,rect);
|
||
else if ((m_pic_index[which_g].x == 1) && (m_pic_index[which_g].y == 2))
|
||
draw_preset_monst_pic_tall(which_g,rect);
|
||
else if ((m_pic_index[which_g].x == 2) && (m_pic_index[which_g].y == 2))
|
||
draw_preset_monst_pic_large(which_g,rect);
|
||
break;
|
||
|
||
case PICT_ITEM: // item
|
||
draw_preset_item_pic(which_g,rect);
|
||
break;
|
||
case PICT_DLG: // dialog
|
||
draw_preset_dlg_pic(which_g,rect);
|
||
break;
|
||
case PICT_DLG_LARGE:
|
||
draw_preset_dlg_pic_large(which_g,rect);
|
||
break;
|
||
case PICT_PC: // PC
|
||
draw_preset_pc_pic(which_g,rect);
|
||
break;
|
||
case PICT_TALK: // talk face
|
||
draw_preset_talk_pic(which_g,rect);
|
||
break;
|
||
case PICT_INFO_HELP: // item info help
|
||
draw_item_info_help_pic(rect);
|
||
break;
|
||
case PICT_PC_HELP: // item info help
|
||
draw_pc_info_help_pic(rect);
|
||
break;
|
||
case PICT_HELP: // button help
|
||
draw_help_pic(which_g,rect);
|
||
break;
|
||
case PICT_COMBAT_AP: // combat ap help
|
||
draw_combat_ap_help_pic(rect);
|
||
break;
|
||
case PICT_STAT: // stat symbols help
|
||
draw_pc_stat_help_pic(rect);
|
||
break;
|
||
case PICT_SCEN:
|
||
draw_preset_scen_pic(which_g,rect);
|
||
break;
|
||
case PICT_SCEN_LARGE:
|
||
draw_preset_scen_pic_large(which_g,rect);
|
||
break;
|
||
case PICT_FIELD: // dialog
|
||
draw_preset_field_pic(which_g,rect);
|
||
break;
|
||
case PICT_CUSTOM + PICT_MONST + PICT_WIDE_MONSTER:
|
||
draw_custom_monst_wide_pic(which_g,rect);
|
||
break;
|
||
case PICT_CUSTOM + PICT_MONST + PICT_TALL_MONSTER:
|
||
draw_custom_monst_tall_pic(which_g,rect);
|
||
break;
|
||
case PICT_CUSTOM + PICT_MONST + PICT_WIDE_MONSTER + PICT_TALL_MONSTER:
|
||
draw_custom_monst_large_pic(which_g,rect);
|
||
break;
|
||
case PICT_CUSTOM + PICT_DLG: // dialog, split
|
||
draw_custom_dlg_pic_split(which_g,rect);
|
||
break;
|
||
case PICT_CUSTOM + PICT_TALK: // facial graphic, split
|
||
case PICT_CUSTOM + PICT_SCEN: // Not currently possible; not sure it ever will be
|
||
draw_custom_talk_pic_split(which_g,rect);
|
||
break;
|
||
default: // PICT_CUSTOM + PICT_TER, PICT_TER_ANIM, PICT_MONST, PICT_ITEM, PICT_PC, PICT_FIELD, etc
|
||
if(type_g < PICT_CUSTOM) break; // not all of which are necessarily valid...
|
||
draw_custom_space_pic(which_g,rect);
|
||
break;
|
||
}
|
||
w__gw = 0;
|
||
hDialog = NULL;
|
||
fr = false;
|
||
|
||
if (do_frame == true) {
|
||
rect.bottom--;
|
||
rect.right--;
|
||
frame_dlog_rect(hDlg,rect,3);
|
||
}
|
||
RGBBackColor(&store_color);
|
||
}
|
||
|
||
void convert_pict(short& which_g, short& type_g,Rect& rect){
|
||
unsigned short r = which_g / 100;
|
||
printf("Parsing old-style graphic %i.\t",which_g);
|
||
if (r < 3){
|
||
type_g = PICT_TER;
|
||
}else if(r == 4){
|
||
type_g = PICT_TER_ANIM;
|
||
which_g -= 400;
|
||
}else if(r < 7){
|
||
type_g = PICT_MONST;
|
||
which_g -= 700;
|
||
}else if(r >= 20 && r <= 23){
|
||
type_g = PICT_CUSTOM + PICT_TER;
|
||
// It may not be a terrain graphic, but it's at least a terrain-sized graphic, so it matters not
|
||
which_g -= 2000;
|
||
}else if(r >= 24 && r <= 27){
|
||
type_g = PICT_CUSTOM;
|
||
which_g -= 2400;
|
||
if(rect.right - rect.left == 32){
|
||
type_g += PICT_TALK;
|
||
}else if(rect.right - rect.left == 36){
|
||
type_g += PICT_DLG;
|
||
}else{
|
||
type_g += PICT_TER; // This should never happen
|
||
}
|
||
}else if(which_g == 950){
|
||
type_g = PICT_BLANK;
|
||
}else switch(r){
|
||
case 7:
|
||
type_g = PICT_DLG;
|
||
which_g -= 700;
|
||
break;
|
||
case 10:
|
||
type_g = PICT_TALK;
|
||
which_g -= 1000;
|
||
break;
|
||
case 11:
|
||
type_g = PICT_INFO_HELP;
|
||
which_g -= 1100;
|
||
break;
|
||
case 12:
|
||
type_g = PICT_PC_HELP;
|
||
which_g -= 1200;
|
||
break;
|
||
case 13:
|
||
type_g = PICT_COMBAT_AP;
|
||
which_g -= 1300;
|
||
break;
|
||
case 14:
|
||
if(which_g > 10){
|
||
type_g = PICT_SCEN_LARGE;
|
||
}else{
|
||
type_g = PICT_HELP;
|
||
}
|
||
which_g -= 1400;
|
||
break;
|
||
case 15:
|
||
type_g = PICT_STAT;
|
||
which_g -= 1500;
|
||
break;
|
||
case 16:
|
||
type_g = PICT_SCEN;
|
||
which_g -= 1600;
|
||
break;
|
||
case 17:
|
||
type_g = PICT_FIELD;
|
||
which_g -= 1700;
|
||
case 18: case 19:
|
||
type_g = PICT_ITEM;
|
||
which_g -= 1800;
|
||
break;
|
||
}
|
||
printf("Reduced to type = %i, num = %i\n",type_g,which_g);
|
||
}
|
||
|
||
void draw_preset_ter_pic(short which_g,Rect& rect){ // terrain
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
printf("Getting terrain icon from sheet %i.\n",which_g / 50);
|
||
GWorldPtr from_gworld = dlg_gworlds["ter"][which_g / 50];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
which_g = which_g % 50;
|
||
Rect from_rect = calc_rect(which_g % 10, which_g / 10);
|
||
if (rect.right - rect.left > 28)
|
||
InsetRect(&rect,4,0);
|
||
rect_draw_some_item(from_gworld,from_rect, to_gworld, rect,0,draw_dest);
|
||
}
|
||
|
||
void draw_preset_anim_ter_pic(short which_g,Rect& rect){ // animated terrain
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
Rect from_rect = calc_rect(4 * (which_g / 5), which_g % 5);
|
||
GWorldPtr from_gworld = *dlg_gworlds["anim"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
printf("Getting animated terrain graphic %i from sheet 20", which_g);
|
||
//printf(" at {%i,%i,%i,%i}",from_rect.top,from_rect.left,from_rect.bottom,from_rect.right);
|
||
//printf(" – column %i, row %i.\n",from_rect.left/28,from_rect.top/36);
|
||
if (rect.right - rect.left > 28) {
|
||
InsetRect(&rect,4,0);
|
||
rect.right = rect.left + 28;
|
||
}
|
||
rect_draw_some_item(from_gworld ,from_rect, to_gworld,rect,0,draw_dest);
|
||
}
|
||
|
||
void draw_preset_monst_pic_small(short which_g,Rect& rect){ // monster
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
short m_start_pic = m_pic_index[which_g].i;
|
||
GWorldPtr from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
m_start_pic = m_start_pic % 20;
|
||
Rect from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
rect.right = rect.left + 28; rect.bottom = rect.top + 36;
|
||
if (w__gw == 0)
|
||
PaintRect(&rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_preset_monst_pic_wide(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
short m_start_pic = m_pic_index[which_g].i;
|
||
Rect small_monst_rect = {0,0,18,14};
|
||
rect.right = rect.left + 28; rect.bottom = rect.top + 36;
|
||
if (w__gw == 0)
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
m_start_pic = m_start_pic % 20;
|
||
Rect from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,rect.left,rect.top + 7);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
m_start_pic = m_pic_index[which_g].i + 1;
|
||
from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
m_start_pic = m_start_pic % 20;
|
||
from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,14,0);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_preset_monst_pic_tall(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
short m_start_pic = m_pic_index[which_g].i;
|
||
Rect small_monst_rect = {0,0,18,14};
|
||
rect.right = rect.left + 28; rect.bottom = rect.top + 36;
|
||
if (w__gw == 0)
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
m_start_pic = m_start_pic % 20;
|
||
Rect from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,rect.left + 7,rect.top);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
m_start_pic = m_pic_index[which_g].i + 1;
|
||
from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
m_start_pic = m_start_pic % 20;
|
||
from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,0,18);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_preset_monst_pic_large(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
short m_start_pic = m_pic_index[which_g].i;
|
||
Rect small_monst_rect = {0,0,18,14};
|
||
rect.right = rect.left + 28; rect.bottom = rect.top + 36;
|
||
if (w__gw == 0)
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
m_start_pic = m_start_pic % 20;
|
||
Rect from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,rect.left,rect.top);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
m_start_pic = m_pic_index[which_g].i + 1;
|
||
from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
m_start_pic = m_start_pic % 20;
|
||
from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,14,0);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
m_start_pic = m_pic_index[which_g].i + 2;
|
||
from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
m_start_pic = m_start_pic % 20;
|
||
from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,-14,18);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
m_start_pic = m_pic_index[which_g].i + 3;
|
||
from_gworld = dlg_gworlds["monst"][m_start_pic / 20];
|
||
m_start_pic = m_start_pic % 20;
|
||
from_rect = calc_rect(2 * (m_start_pic / 10), m_start_pic % 10);
|
||
OffsetRect(&small_monst_rect,14,0);
|
||
if (w__gw == 0)
|
||
PaintRect(&small_monst_rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_preset_item_pic(short which_g,Rect& rect){ // item
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
rect.right = rect.left + 28; rect.bottom = rect.top + 36;
|
||
Rect to_rect = rect;
|
||
if (w__gw == 0)
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld;
|
||
Rect from_rect = {0,0,18,18};
|
||
if (which_g < 45) {
|
||
from_gworld = *dlg_gworlds["items"];
|
||
from_rect = calc_rect(which_g % 5, which_g / 5);
|
||
}
|
||
else {
|
||
from_gworld = *dlg_gworlds["tiny-obj"];
|
||
//rect.top += 4; rect.bottom -= 4;
|
||
InsetRect(&to_rect,5,9);
|
||
OffsetRect(&from_rect,18 * (which_g % 10), 18 * (which_g / 10));
|
||
}
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_preset_dlg_pic(short which_g,Rect& rect){ // dialog
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = *dlg_gworlds["dlog"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,36,36};
|
||
OffsetRect(&from_rect,36 * (which_g % 4),36 * (which_g / 4));
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
}
|
||
|
||
void draw_preset_pc_pic(short which_g,Rect& rect){ // PC
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld;
|
||
if (*dlg_gworlds["pc"] != NULL)
|
||
from_gworld = *dlg_gworlds["pc"];
|
||
else from_gworld = load_pict(902);
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
//which_g -= 800;
|
||
Rect from_rect = calc_rect(2 * (which_g / 8), which_g % 8);
|
||
PaintRect(&rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,1,draw_dest);
|
||
if (*dlg_gworlds["pc"] == NULL)
|
||
DisposeGWorld(from_gworld);
|
||
}
|
||
|
||
void draw_preset_talk_pic(short which_g,Rect& rect){ // talk face
|
||
rect.right = rect.left + 32; rect.bottom = rect.top + 32;
|
||
GWorldPtr from_gworld = *dlg_gworlds["talkfaces"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,32,32};
|
||
OffsetRect(&from_rect,32 * ((which_g - 1) % 10),32 * ((which_g - 1) / 10));
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,0);
|
||
}
|
||
|
||
void draw_item_info_help_pic(Rect& rect){ // item info help
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
Rect from_rect = {0,174,113,312};
|
||
GWorldPtr from_gworld = *dlg_gworlds["mixed"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr)hDialog: *dlg_gworlds["mixed"]);
|
||
GWorldPtr to_gworld = (GWorldPtr)hDialog;
|
||
rect.right = rect.left + from_rect.right - from_rect.left;
|
||
rect.bottom = rect.top + from_rect.bottom - from_rect.top;
|
||
rect_draw_some_item(from_gworld ,from_rect, to_gworld ,rect,0,draw_dest);
|
||
}
|
||
|
||
void draw_pc_info_help_pic(Rect& rect){ // item info help
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
Rect from_rect = {130,0,157,106};
|
||
GWorldPtr from_gworld = *dlg_gworlds["mixed"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
rect.right = rect.left + from_rect.right - from_rect.left;
|
||
rect.bottom = rect.top + from_rect.bottom - from_rect.top;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
}
|
||
|
||
void draw_preset_scen_pic_large(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = load_pict(900 + which_g);
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,64,64};
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
DisposeGWorld(from_gworld);
|
||
}
|
||
|
||
void draw_help_pic(short which_g,Rect& rect){ // button help
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = load_pict(1401);
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,125,320};
|
||
rect.right = rect.left + from_rect.right;
|
||
rect.bottom = rect.top + from_rect.bottom;
|
||
OffsetRect(&from_rect,0,125 * which_g);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
DisposeGWorld(from_gworld);
|
||
}
|
||
|
||
void draw_combat_ap_help_pic(Rect& rect){ // combat ap help
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = load_pict(1402);
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,100,275};
|
||
rect.right = rect.left + from_rect.right;
|
||
rect.bottom = rect.top + from_rect.bottom;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
DisposeGWorld(from_gworld);
|
||
}
|
||
|
||
void draw_pc_stat_help_pic(Rect& rect){ // stat symbols help
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = load_pict(1400);
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,94,386};
|
||
rect.right = rect.left + from_rect.right;
|
||
rect.bottom = rect.top + from_rect.bottom;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
DisposeGWorld(from_gworld);
|
||
}
|
||
|
||
void draw_preset_scen_pic(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = load_pict(851);
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,32,32};
|
||
OffsetRect(&from_rect,32 * (which_g % 5),32 * (which_g / 5));
|
||
rect.right = rect.left + 32;
|
||
rect.bottom = rect.top + 32;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
DisposeGWorld(from_gworld);
|
||
}
|
||
|
||
void draw_preset_field_pic(short which_g,Rect& rect){ // dialog
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = *dlg_gworlds["fields"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = calc_rect(which_g % 8, which_g / 8);
|
||
if (w__gw == 0)
|
||
PaintRect(&rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
}
|
||
|
||
void draw_custom_space_pic(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
printf("Drawing graphic %i as a custom space pic.\n",which_g);
|
||
rect.right = rect.left + 28;
|
||
rect.bottom = rect.top + 32;
|
||
GWorldPtr from_gworld = *dlg_gworlds["custom"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = get_custom_rect(which_g);
|
||
if ((w__gw == 0) && (fr == true))
|
||
PaintRect(&rect);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_custom_monst_wide_pic(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
Rect small_monst_rect = {0,0,18,14};
|
||
rect.right = rect.left + 28;
|
||
rect.bottom = rect.top + 36;
|
||
if ((w__gw == 0) && (fr == true))
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld = *dlg_gworlds["custom"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = get_custom_rect(which_g);
|
||
OffsetRect(&small_monst_rect,rect.left,rect.top + 7);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
from_rect = get_custom_rect(which_g+1);
|
||
OffsetRect(&small_monst_rect,14,0);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_custom_monst_tall_pic(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
Rect small_monst_rect = {0,0,18,14};
|
||
rect.right = rect.left + 28;
|
||
rect.bottom = rect.top + 36;
|
||
if ((w__gw == 0) && (fr == true))
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld = *dlg_gworlds["custom"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = get_custom_rect(which_g);
|
||
OffsetRect(&small_monst_rect,rect.left + 7,rect.top);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
OffsetRect(&small_monst_rect,0,18);
|
||
from_rect = get_custom_rect(which_g+1);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_custom_monst_large_pic(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
Rect small_monst_rect = {0,0,18,14};
|
||
rect.right = rect.left + 28;
|
||
rect.bottom = rect.top + 36;
|
||
if ((w__gw == 0) && (fr == true))
|
||
PaintRect(&rect);
|
||
GWorldPtr from_gworld = *dlg_gworlds["custom"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = get_custom_rect(which_g);
|
||
OffsetRect(&small_monst_rect,rect.left,rect.top);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
OffsetRect(&small_monst_rect,14,0);
|
||
from_rect = get_custom_rect(which_g+1);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
OffsetRect(&small_monst_rect,-14,18);
|
||
from_rect = get_custom_rect(which_g+2);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
OffsetRect(&small_monst_rect,14,0);
|
||
from_rect = get_custom_rect(which_g+3);
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,small_monst_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_custom_dlg_pic_split(short which_g,Rect& rect){ // dialog, split
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = *dlg_gworlds["custom"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = get_custom_rect(which_g);
|
||
Rect to_rect = rect;
|
||
to_rect.right = to_rect.left + 18;
|
||
to_rect.bottom = to_rect.top + 36;
|
||
from_rect.right = from_rect.left + 18;
|
||
from_rect.bottom = from_rect.top + 36;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest);
|
||
from_rect = get_custom_rect(which_g + 1);
|
||
OffsetRect(&to_rect,18,0);
|
||
from_rect.right = from_rect.left + 18;
|
||
from_rect.bottom = from_rect.top + 36;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_custom_talk_pic_split(short which_g,Rect& rect){ // facial graphic, split
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = *dlg_gworlds["custom"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = get_custom_rect(which_g);
|
||
Rect to_rect = rect;
|
||
to_rect.right = to_rect.left + 16;
|
||
to_rect.bottom = to_rect.top + 32;
|
||
from_rect.right = from_rect.left + 16;
|
||
from_rect.bottom = from_rect.top + 32;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest);
|
||
from_rect = get_custom_rect(which_g + 1);
|
||
OffsetRect(&to_rect,16,0);
|
||
from_rect.right = from_rect.left + 16;
|
||
from_rect.bottom = from_rect.top + 32;
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,to_rect,1,draw_dest);
|
||
}
|
||
|
||
void draw_preset_dlg_pic_large(short which_g,Rect& rect){
|
||
short draw_dest = (w__gw == 1) ? 0 : 2;
|
||
GWorldPtr from_gworld = *dlg_gworlds["dlog"];
|
||
//GWorldPtr to_gworld = (GWorldPtr) ((w__gw == 1) ? (GWorldPtr) (hDialog): from_gworld);
|
||
GWorldPtr to_gworld = (GWorldPtr) hDialog;
|
||
Rect from_rect = {0,0,72,72};
|
||
OffsetRect(&from_rect,36 * (which_g % 4),36 * (which_g / 4));
|
||
rect_draw_some_item(from_gworld,from_rect,to_gworld,rect,0,draw_dest);
|
||
}
|