mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-11 07:11:39 +00:00
Rawr
git-svn-id: https://svn.eduke32.com/eduke32@537 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
fc287ec735
commit
fecedb9ad1
2 changed files with 69 additions and 51 deletions
|
@ -2235,7 +2235,10 @@ static long OnSelectTile(long iTile)
|
||||||
for (i = 0; (unsigned)i < NUM_TILE_GROUPS; i++)
|
for (i = 0; (unsigned)i < NUM_TILE_GROUPS; i++)
|
||||||
{
|
{
|
||||||
if (s_TileGroups[i].szText != NULL)
|
if (s_TileGroups[i].szText != NULL)
|
||||||
printext256(10L, (i+1)*16, whitecol, -1, s_TileGroups[i].szText, 0);
|
{
|
||||||
|
Bsprintf(tempbuf,"(%c) %s",s_TileGroups[i].key1,s_TileGroups[i].szText);
|
||||||
|
printext256(10L, (i+1)*16, whitecol, -1, tempbuf, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
showframe(1);
|
showframe(1);
|
||||||
|
|
||||||
|
@ -2257,7 +2260,7 @@ static long OnSelectTile(long iTile)
|
||||||
|
|
||||||
for (i = 0; (unsigned)i < NUM_TILE_GROUPS; i++)
|
for (i = 0; (unsigned)i < NUM_TILE_GROUPS; i++)
|
||||||
{
|
{
|
||||||
if (s_TileGroups[i].pIds != NULL)
|
if (s_TileGroups[i].pIds != NULL && s_TileGroups[i].key1)
|
||||||
if ((ch == s_TileGroups[i].key1) || (ch == s_TileGroups[i].key2))
|
if ((ch == s_TileGroups[i].key1) || (ch == s_TileGroups[i].key2))
|
||||||
{
|
{
|
||||||
iTile = LoadTileSet(iTile, s_TileGroups[i].pIds, s_TileGroups[i].nIds);
|
iTile = LoadTileSet(iTile, s_TileGroups[i].pIds, s_TileGroups[i].nIds);
|
||||||
|
@ -5457,10 +5460,10 @@ enum {
|
||||||
T_DEFINE = 1,
|
T_DEFINE = 1,
|
||||||
T_LOADGRP,
|
T_LOADGRP,
|
||||||
T_TILEGROUP,
|
T_TILEGROUP,
|
||||||
T_NAME,
|
|
||||||
T_TILE,
|
T_TILE,
|
||||||
T_TILERANGE,
|
T_TILERANGE,
|
||||||
T_KEY
|
T_KEYPRESS,
|
||||||
|
T_TILES
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -5487,18 +5490,18 @@ static int getatoken(scriptfile *sf, tokenlist *tl, int ntokens)
|
||||||
return T_ERROR;
|
return T_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static tokenlist grptokens[] =
|
|
||||||
{
|
|
||||||
{ "include", T_INCLUDE },
|
|
||||||
{ "#include", T_INCLUDE },
|
|
||||||
{ "loadgrp", T_LOADGRP },
|
|
||||||
};
|
|
||||||
|
|
||||||
int parsegroupfiles(scriptfile *script)
|
int parsegroupfiles(scriptfile *script)
|
||||||
{
|
{
|
||||||
int tokn;
|
int tokn;
|
||||||
char *cmdtokptr;
|
char *cmdtokptr;
|
||||||
|
|
||||||
|
tokenlist grptokens[] =
|
||||||
|
{
|
||||||
|
{ "include", T_INCLUDE },
|
||||||
|
{ "#include", T_INCLUDE },
|
||||||
|
{ "loadgrp", T_LOADGRP },
|
||||||
|
};
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
tokn = getatoken(script,grptokens,sizeof(grptokens)/sizeof(tokenlist));
|
tokn = getatoken(script,grptokens,sizeof(grptokens)/sizeof(tokenlist));
|
||||||
|
@ -5564,29 +5567,20 @@ int loadgroupfiles(char *fn)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static tokenlist tgtokens[] =
|
|
||||||
{
|
|
||||||
{ "include", T_INCLUDE },
|
|
||||||
{ "#include", T_INCLUDE },
|
|
||||||
{ "define", T_DEFINE },
|
|
||||||
{ "#define", T_DEFINE },
|
|
||||||
{ "tilegroup", T_TILEGROUP },
|
|
||||||
};
|
|
||||||
|
|
||||||
static tokenlist tgtokens2[] =
|
|
||||||
{
|
|
||||||
{ "tilegroup", T_TILEGROUP },
|
|
||||||
{ "name", T_NAME },
|
|
||||||
{ "tile", T_TILE },
|
|
||||||
{ "tilerange", T_TILERANGE },
|
|
||||||
{ "key", T_KEY },
|
|
||||||
};
|
|
||||||
|
|
||||||
int parsetilegroups(scriptfile *script)
|
int parsetilegroups(scriptfile *script)
|
||||||
{
|
{
|
||||||
int tokn;
|
int tokn;
|
||||||
char *cmdtokptr;
|
char *cmdtokptr;
|
||||||
|
|
||||||
|
tokenlist tgtokens[] =
|
||||||
|
{
|
||||||
|
{ "include", T_INCLUDE },
|
||||||
|
{ "#include", T_INCLUDE },
|
||||||
|
{ "define", T_DEFINE },
|
||||||
|
{ "#define", T_DEFINE },
|
||||||
|
{ "tilegroup", T_TILEGROUP },
|
||||||
|
};
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
tokn = getatoken(script,tgtokens,sizeof(tgtokens)/sizeof(tokenlist));
|
tokn = getatoken(script,tgtokens,sizeof(tgtokens)/sizeof(tokenlist));
|
||||||
|
@ -5629,37 +5623,43 @@ int parsetilegroups(scriptfile *script)
|
||||||
case T_TILEGROUP:
|
case T_TILEGROUP:
|
||||||
{
|
{
|
||||||
char *end, *name;
|
char *end, *name;
|
||||||
int g, i;
|
int i;
|
||||||
|
|
||||||
if (scriptfile_getnumber(script,&g)) break;
|
// if (scriptfile_getnumber(script,&g)) break;
|
||||||
|
|
||||||
if ((unsigned)g >= NUM_TILE_GROUPS) break;
|
if (tile_groups >= NUM_TILE_GROUPS) break;
|
||||||
|
|
||||||
if (s_TileGroups[g].pIds == NULL)
|
if (s_TileGroups[tile_groups].pIds != NULL)
|
||||||
s_TileGroups[g].pIds = Bcalloc(MAX_TILE_GROUP_ENTRIES,sizeof(long));
|
Bfree(s_TileGroups[tile_groups].pIds);
|
||||||
|
s_TileGroups[tile_groups].pIds = Bcalloc(MAX_TILE_GROUP_ENTRIES,sizeof(long));
|
||||||
|
|
||||||
// if (scriptfile_getstring(script,&name)) break;
|
if (scriptfile_getstring(script,&name)) break;
|
||||||
|
|
||||||
|
if (s_TileGroups[tile_groups].szText != NULL)
|
||||||
|
Bfree(s_TileGroups[tile_groups].szText);
|
||||||
|
|
||||||
|
s_TileGroups[tile_groups].szText = strdup(name);
|
||||||
|
|
||||||
if (scriptfile_getbraces(script,&end)) break;
|
if (scriptfile_getbraces(script,&end)) break;
|
||||||
while (script->textptr < end)
|
while (script->textptr < end)
|
||||||
{
|
{
|
||||||
|
tokenlist tgtokens2[] =
|
||||||
|
{
|
||||||
|
{ "tilegroup", T_TILEGROUP },
|
||||||
|
{ "tile", T_TILE },
|
||||||
|
{ "tilerange", T_TILERANGE },
|
||||||
|
{ "keypress", T_KEYPRESS },
|
||||||
|
{ "tiles", T_TILES },
|
||||||
|
};
|
||||||
|
|
||||||
int token = getatoken(script,tgtokens2,sizeof(tgtokens2)/sizeof(tokenlist));
|
int token = getatoken(script,tgtokens2,sizeof(tgtokens2)/sizeof(tokenlist));
|
||||||
switch (token)
|
switch (token)
|
||||||
{
|
{
|
||||||
case T_NAME:
|
|
||||||
{
|
|
||||||
if (scriptfile_getstring(script,&name)) break;
|
|
||||||
if (s_TileGroups[g].szText != NULL)
|
|
||||||
Bfree(s_TileGroups[g].szText);
|
|
||||||
|
|
||||||
s_TileGroups[g].szText = strdup(name);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case T_TILE:
|
case T_TILE:
|
||||||
{
|
{
|
||||||
if (scriptfile_getsymbol(script,&i)) break;
|
if (scriptfile_getsymbol(script,&i)) break;
|
||||||
if (i >= 0 && i < MAXTILES && s_TileGroups[g].nIds < MAX_TILE_GROUP_ENTRIES)
|
if (i >= 0 && i < MAXTILES && s_TileGroups[tile_groups].nIds < MAX_TILE_GROUP_ENTRIES)
|
||||||
s_TileGroups[g].pIds[s_TileGroups[g].nIds++] = i;
|
s_TileGroups[tile_groups].pIds[s_TileGroups[tile_groups].nIds++] = i;
|
||||||
// OSD_Printf("added tile %d to group %d\n",i,g);
|
// OSD_Printf("added tile %d to group %d\n",i,g);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -5669,23 +5669,39 @@ int parsetilegroups(scriptfile *script)
|
||||||
if (scriptfile_getsymbol(script,&i)) break;
|
if (scriptfile_getsymbol(script,&i)) break;
|
||||||
if (scriptfile_getsymbol(script,&j)) break;
|
if (scriptfile_getsymbol(script,&j)) break;
|
||||||
if (i < 0 || i >= MAXTILES || j < 0 || j >= MAXTILES) break;
|
if (i < 0 || i >= MAXTILES || j < 0 || j >= MAXTILES) break;
|
||||||
while (s_TileGroups[g].nIds < MAX_TILE_GROUP_ENTRIES && i < j)
|
while (s_TileGroups[tile_groups].nIds < MAX_TILE_GROUP_ENTRIES && i < j)
|
||||||
{
|
{
|
||||||
s_TileGroups[g].pIds[s_TileGroups[g].nIds++] = i++;
|
s_TileGroups[tile_groups].pIds[s_TileGroups[tile_groups].nIds++] = i++;
|
||||||
// OSD_Printf("added tile %d to group %d\n",i,g);
|
// OSD_Printf("added tile %d to group %d\n",i,g);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case T_KEY:
|
case T_KEYPRESS:
|
||||||
{
|
{
|
||||||
char *c;
|
char *c;
|
||||||
if (scriptfile_getstring(script,&c)) break;
|
if (scriptfile_getstring(script,&c)) break;
|
||||||
s_TileGroups[g].key1 = Btoupper(c[0]);
|
s_TileGroups[tile_groups].key1 = Btoupper(c[0]);
|
||||||
s_TileGroups[g].key2 = Btolower(c[0]);
|
s_TileGroups[tile_groups].key2 = Btolower(c[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case T_TILES:
|
||||||
|
{
|
||||||
|
char *end2;
|
||||||
|
if (scriptfile_getbraces(script,&end2)) break;
|
||||||
|
while (script->textptr < end2-1)
|
||||||
|
{
|
||||||
|
if (!scriptfile_getsymbol(script,&i))
|
||||||
|
{
|
||||||
|
if (i >= 0 && i < MAXTILES && s_TileGroups[tile_groups].nIds < MAX_TILE_GROUP_ENTRIES)
|
||||||
|
s_TileGroups[tile_groups].pIds[s_TileGroups[tile_groups].nIds++] = i;
|
||||||
|
// OSD_Printf("added tile %d to group %d\n",i,g);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
tile_groups++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case T_EOF:
|
case T_EOF:
|
||||||
|
|
|
@ -202,6 +202,8 @@ struct
|
||||||
#define NUM_TILE_GROUPS (sizeof(s_TileGroups)/sizeof(s_TileGroups[0]))
|
#define NUM_TILE_GROUPS (sizeof(s_TileGroups)/sizeof(s_TileGroups[0]))
|
||||||
#define MAX_TILE_GROUP_ENTRIES 128
|
#define MAX_TILE_GROUP_ENTRIES 128
|
||||||
|
|
||||||
|
static unsigned int tile_groups = 0;
|
||||||
|
|
||||||
|
|
||||||
#define FIRST_USER_ART_TILE 3584
|
#define FIRST_USER_ART_TILE 3584
|
||||||
// Some atomic tiles are sprinkled in the V1.3d's area but
|
// Some atomic tiles are sprinkled in the V1.3d's area but
|
||||||
|
|
Loading…
Reference in a new issue