Lua scripts can have individual keyboard shortcuts (Issue 344)

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1532 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud
2010-07-24 16:51:56 +00:00
parent a2eade7203
commit 061eba29de
14 changed files with 470 additions and 105 deletions

View File

@@ -2125,6 +2125,49 @@ int Load_CFG(int reload_all)
goto Erreur_lecture_config;
}
break;
case CHUNK_SCRIPTS:
if (reload_all)
{
int current_size=0;
int current_script=0;
while(current_size<Chunk.Size)
{
byte size;
// Free (old) string
free(Bound_script[current_script]);
Bound_script[current_script]=NULL;
if (!Read_byte(Handle, &size))
goto Erreur_lecture_config;
if (size!=0)
{
// Alloc string
Bound_script[current_script]=malloc(size+1);
if (Bound_script[current_script]==NULL)
return ERROR_MEMORY;
// Init and load string
memset(Bound_script[current_script], 0, size+1);
if (!Read_bytes(Handle, Bound_script[current_script], size))
goto Erreur_lecture_config;
}
current_size+=size+1;
current_script++;
// Do not load more strings than hard-coded limit
if (current_script>=10)
break;
}
}
break;
default: // Chunk inconnu
goto Erreur_lecture_config;
}
@@ -2348,7 +2391,7 @@ int Save_CFG(void)
{
long total_size=0;
int index;
// Compute size: normal paintbrushes
// Compute size: monochrome paintbrushes
for (index=0; index<NB_PAINTBRUSH_SPRITES; index++)
{
total_size+=9+(Paintbrush[index].Width*Paintbrush[index].Height+7)/8;
@@ -2408,6 +2451,40 @@ int Save_CFG(void)
}
}
// Save script shortcuts
{
int i;
Chunk.Number=CHUNK_SCRIPTS;
// Compute size : Data stored as 10 pascal strings
Chunk.Size=0;
for (i=0; i<10; i++)
{
if (Bound_script[i]==NULL)
Chunk.Size+=1;
else
Chunk.Size+=strlen(Bound_script[i])+1;
}
// Header
if (!Write_byte(Handle, Chunk.Number) ||
!Write_word_le(Handle, Chunk.Size) )
goto Erreur_sauvegarde_config;
// Strings
for (i=0; i<10; i++)
{
byte size=0;
if (Bound_script[i]!=NULL)
size=strlen(Bound_script[i]);
if (!Write_byte(Handle, size))
goto Erreur_sauvegarde_config;
if (size)
if (!Write_bytes(Handle, Bound_script[i], size))
goto Erreur_sauvegarde_config;
}
}
if (fclose(Handle))
return ERROR_SAVING_CFG;