Adilson,
Eu criaria algumas
listas para cada save e salvaria cada lista em uma chave diferente no INI. Seria mais simples de lidar com os dados, além de abrir apenas um arquivo.
Usando Vários INIS
Basta criar um prefixo para os arquivos, como 'save', por exemplo. Usar a função
file_exists em um loop que verificaria o prefixo + número (save0, save1, save2 e etc) numa string. Caso o aquivo existir, desenhá-lo na tela. A função de verificação de existência seria algo assim:
Código: Selecionar todos
while (file_exists('save' + string(nSaves) + ".ini"))
{
//Aqui estamos apenas contando quantos saves existem
//Caso necessite de algum dado a mais, abra o INI aqui('save' + string(nSaves) + ".ini")
//E guarde os dados que deseja ixibir em vetores
nSaves++;
}
Usando listas e apenas 1 INI
Na lista você colocaria, os dados que precisa em uma posição especifica (A posição 0 seria o nome do save, a 1 seria da pontuação e assim por diante). Recomendo que use
ds_lis_add para acrescentar em sequência. Lembrando que uma lista suporta mesclagem de dados, ou seja, você pode ter textos e números na mesma lista.
No processo de salvar o jogo você criaria um lista temporária, adicionaria os dados e por fim guardaria a lista em uma string com
ds_list_write. Dai sim você utilizaria um arquivo INI e salvaria o jogo.
Porém, nesta etapa você teria que verificar a existência das chaves antes de salvar. Logo você teria que ler o arquivo antes.
Recomendaria que as chaves do INI tivessem algum prefixo, como 'sv' por exemplo:
Código: Selecionar todos
[GAMEDATA]
sv0="ASUHA15S4D5A4DA56SF4DA65SD4AS65D4AS56D4ASSDS"
sv1="ASUHA15S4D5A4DA56SF4DA65SD4AS65D4AS56D4ASSDS"
sv2="FDSKJFADUFDS51AD7SDFFBSAUDSAD55D5ASDSA5DDD"
Lembrando que é salva uma string codificada (Que eu digitei genericamente acima nos 3 saves).
Para carregar os saves tu faria algo assim logo após abrir o INI para leitura:
Código: Selecionar todos
ini_open("game.ini");
nSaves = 0;
while (ini_key_exists("GAMEDATA", 'sv' + string(nSaves)))
{
lista[nSaves] = ds_list_create();
ds_list_read(lista[nSaves], ini_read_string("GAMEDATA", 'sv' + string(nSaves), ""))
nSaves++;
}
ini_close();
Com isso você já pode desenhar as informações na tela, já que tem o número total de saves guardados na variável
nSaves e as informações dos saves gravados nas listas que estão no vetor
lista.
Agora que você pode ler e desenhar os saves, basta usar essas informações e criar o procedimento para salvar.
Resumindo: clicaria no save desejado e salvaria (criava uma nova string de lista com os dados e guardava no INI na posição
nSaves), caso não existisse (checar com a função
ini_key_exists()) já iria direto para salvar no 'sv0' (Basta saber que na leitura
nSaves == 0).
Bom, essa seria uma forma de fazer. Caso tenha dúvidas com ds_list veja
este tutorial.
Nesse FDS postarei um vídeo sobre listas também, fica a dica.
Não testei os códigos ainda, mas deve funcionar sim.
FLWS!