Initial commit

This commit is contained in:
HussienX72u
2026-07-21 08:56:10 +03:00
commit 4017028111
9410 changed files with 2150500 additions and 0 deletions
@@ -0,0 +1,98 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class CommandSaveHandler
{
private static CommandSaveHandler instance;
private LinkedList<CommandDTO> commandList = new LinkedList<CommandDTO>();
private string saveFilePath = Path.Combine(Application.persistentDataPath, "commands.json");
public static CommandSaveHandler getInstance()
{
if (instance == null)
{
instance = new CommandSaveHandler();
}
return instance;
}
public void setFileName(string fileName)
{
saveFilePath = Path.Combine(Application.persistentDataPath, fileName);
}
public void setAbsoluteFilePath(string path)
{
saveFilePath = path;
}
public void saveCommands()
{
CommandSaveUtil.saveLinkedList(commandList, saveFilePath);
}
public void saveCommandsToPath(string customPath)
{
CommandSaveUtil.saveLinkedList(commandList, customPath);
}
public void loadCommands()
{
commandList = CommandSaveUtil.loadLinkedList(saveFilePath);
}
public void loadCommandsFromPath(string customPath)
{
commandList = CommandSaveUtil.loadLinkedList(customPath);
}
public IEnumerator excuteAllCommands(Action action)
{
if (commandList == null || commandList.Count == 0)
{
action?.Invoke();
yield break;
}
yield return null; // Wait for the next frame
foreach (CommandDTO commandDTO in commandList)
{
if (commandDTO == null)
continue;
ICommand command = commandDTO.converToCommand();
if (command != null)
{
command.execute();
Debug.Log("Executed command from DTO: " + commandDTO.CommandName);
}
else
{
Debug.LogWarning("Failed to convert CommandDTO to ICommand.");
}
yield return null; // Wait for the next frame
}
action.Invoke();
}
public void addLastCommand(CommandDTO command)
{
commandList.AddLast(command);
}
public void removeLastCommand()
{
if (commandList.Count > 0)
{
commandList.RemoveLast();
}
}
public void clearCommandList()
{
commandList.Clear();
}
}