⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readobj.c

📁 J2ME游戏地图编辑器。不错
💻 C
字号:
/* Example code segment for reading objects (add to playback lib)
 * (C)2004 R Burrows
 *
 * You should be able to call these funcs from the MapLoad
 * part of a playback lib
 * MapGetchksz and MapGetlong should be in the playback lib
 */ 

#define MAXOBJSTR 4096
#define MAXIMGSTR 4096

typedef struct { /* Object structure */
int xpos, ypos;	/* pixel position in map to handle */
int gfxid, tileid;
int gxoff, gyoff; /* offset into graphic */
int gwidth, gheight;
int ghandlexoff, ghandleyoff; /* handle pos, from gxoff, gyoff */
int show; /* display mode */
int user1, user2, user3, user4, user5, user6, user7;
int flags;
} OBJSTR;

typedef struct { /* External image structure */
char * fname;
unsigned char * imgpt;
int w, h, pitch;
} OBJIMGSTR;

int curobj, numobjstr;
OBJSTR * objstrpt = NULL;
OBJIMGSTR * objimgpt = NULL;

int DecodeOBFNChunk (unsigned char * mdatpt)
{
int i, obfnsz;
OBJIMGSTR * myobjimgpt;

	if (objimgpt != NULL) free (objimgpt);
	
	objimgpt = malloc (sizeof(OBJIMGSTR)*MAXIMGSTR);
	memset (objimgpt, 0, sizeof(OBJIMGSTR)*MAXIMGSTR);
	myobjimgpt = (OBJIMGSTR *) objimgpt;

	obfnsz = MapGetchksz (mdatpt+4);
	mdatpt += 8;
	i = 0; while (obfnsz > 2) {
		myobjimgpt[i].fname = malloc (strlen(mdatpt)+1);
		strcpy (myobjimgpt[i].fname, mdatpt);
		myobjimgpt[i].imgpt = NULL;
		obfnsz -= (strlen(mdatpt)+1);
		mdatpt += (strlen(mdatpt)+1);
		i++;
	}
	
	return 0;
}

int DecodeOBDTChunk (unsigned char * mdatpt)
{
int i, obstrsz;

	if (objstrpt != NULL) free (objstrpt);
	
	objstrpt = malloc (sizeof(OBJSTR)*MAXOBJSTR);
	memset (objstrpt, 0, sizeof(OBJSTR)*MAXOBJSTR);
	numobjstr = 1; curobj = 0;
	
	mdatpt += 8;
	i = MapGetlong (mdatpt); /* Offset to OBJSTR */
	if (i < 16) return -1;
	numobjstr = MapGetlong (mdatpt+4);
	curobj = MapGetlong (mdatpt+8);
	obstrsz = MapGetlong (mdatpt+12);
	mdatpt += i;
	
	for (i=0;i<numobjstr;i++) {
		((OBJSTR *) objstrpt)[i].xpos = MapGetlong (mdatpt);
		((OBJSTR *) objstrpt)[i].ypos = MapGetlong (mdatpt+4);
		((OBJSTR *) objstrpt)[i].gfxid = MapGetlong (mdatpt+8);
		((OBJSTR *) objstrpt)[i].tileid = MapGetlong (mdatpt+12);
		((OBJSTR *) objstrpt)[i].gxoff = MapGetlong (mdatpt+16);
		((OBJSTR *) objstrpt)[i].gyoff = MapGetlong (mdatpt+20);
		((OBJSTR *) objstrpt)[i].gwidth = MapGetlong (mdatpt+24);
		((OBJSTR *) objstrpt)[i].gheight = MapGetlong (mdatpt+28);
		((OBJSTR *) objstrpt)[i].ghandlexoff = MapGetlong (mdatpt+32);
		((OBJSTR *) objstrpt)[i].ghandleyoff = MapGetlong (mdatpt+36);
		((OBJSTR *) objstrpt)[i].show = MapGetlong (mdatpt+40);
		((OBJSTR *) objstrpt)[i].user1 = MapGetlong (mdatpt+44);
		((OBJSTR *) objstrpt)[i].user2 = MapGetlong (mdatpt+48);
		((OBJSTR *) objstrpt)[i].user3 = MapGetlong (mdatpt+52);
		((OBJSTR *) objstrpt)[i].user4 = MapGetlong (mdatpt+56);
		((OBJSTR *) objstrpt)[i].user5 = MapGetlong (mdatpt+60);
		((OBJSTR *) objstrpt)[i].user6 = MapGetlong (mdatpt+64);
		((OBJSTR *) objstrpt)[i].user7 = MapGetlong (mdatpt+68);
		((OBJSTR *) objstrpt)[i].flags = MapGetlong (mdatpt+72);
		mdatpt += obstrsz;
	}

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -