using System;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using UnityEngine;
public static class ExternalFilesGetter
{
const string GAMEDATA_FOLDER = "C4";
const string IMAGES_DIR = "Images";
const string SERIAL_PATH = "serialdata.dat";
const string OVERRIDES_FILE = "overrides/Light.conf";
const string ELEKTRO_VERSION_FILE = "elektro_version.rr";
const string SENSOR_VERSION_FILE = "HopperSensor.rr";
const string SETTINGS_PASSWORD = "SettingsPwd.rr";
///
///
///
/// передавать без расширения
///
public static Sprite GetChipSprite(string spriteName)
{
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string path = Path.Combine(docPath, GAMEDATA_FOLDER,IMAGES_DIR, spriteName+".png");
//проверить есть ли файл
if (File.Exists(path))
{
var bytes = File.ReadAllBytes(path);
var tex = new Texture2D(2,2,TextureFormat.ARGB32, false);
tex.LoadImage(bytes);
tex.filterMode = FilterMode.Point;
var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f),pixelsPerUnit: 625);
return sprite;
}
else
{
Debug.LogWarning($"Не найден файл {spriteName}");
return null;
}
}
///
/// Читает серийные данные из файла serialdata.dat
///
/// Текст из файла или "<не указано>", если файл не существует
public static string GetSerial()
{
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string filePath = Path.Combine(docPath, GAMEDATA_FOLDER, SERIAL_PATH);
try
{
// Проверяем существование файла
if (!File.Exists(filePath))
{
Debug.LogWarning($"Файл serialdata.dat не найден по пути: {filePath}");
return "<не указано>";
}
// Читаем весь текст из файла
string serialData = File.ReadAllText(filePath);
// Убираем лишние пробелы и проверяем на пустоту
if (string.IsNullOrWhiteSpace(serialData))
{
Debug.LogWarning("Файл serialdata.dat пуст");
return "<не указано>";
}
return serialData.Trim();
}
catch (Exception ex)
{
Debug.LogError($"Ошибка при чтении файла serialdata.dat: {ex.Message}");
return "<не указано>";
}
}
public static string GetLightVersion()
{
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string filePath = Path.Combine(docPath, GAMEDATA_FOLDER, OVERRIDES_FILE);
try
{
// Проверяем существование файла
if (!File.Exists(filePath))
{
Debug.LogWarning($"Файл не найден по пути: {filePath}");
return "";
}
// Читаем весь текст из файла
string serialData = File.ReadAllText(filePath);
// Убираем лишние пробелы и проверяем на пустоту
if (string.IsNullOrWhiteSpace(serialData))
{
Debug.LogWarning("Файл пуст");
return "";
}
return serialData.Trim();
}
catch (Exception ex)
{
Debug.LogError($"Ошибка при чтении файла: {ex.Message}");
return "";
}
}
public static string GetElektroVersion()
{
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string filePath = Path.Combine(docPath, GAMEDATA_FOLDER, ELEKTRO_VERSION_FILE);
try
{
// Проверяем существование файла
if (!File.Exists(filePath))
{
Debug.LogWarning($"Файл {ELEKTRO_VERSION_FILE} не найден по пути: {filePath}");
return string.Empty;
}
// Читаем содержимое файла
string versionData = File.ReadAllText(filePath).Trim();
// Убираем лишние пробелы и проверяем на пустоту
if (string.IsNullOrWhiteSpace(versionData))
{
Debug.LogWarning($"Файл {ELEKTRO_VERSION_FILE} пуст");
return string.Empty;
}
// Проверяем содержимое файла
Debug.Log($"Считана версия подключения кнопок: {versionData}");
return versionData;
}
catch (Exception ex)
{
Debug.LogError($"Ошибка при чтении файла {ELEKTRO_VERSION_FILE}: {ex.Message}");
return string.Empty;
}
}
public static char GetSensorPositiveValue()
{
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string filePath = Path.Combine(docPath, GAMEDATA_FOLDER, SENSOR_VERSION_FILE);
char china_hopper_positive = '0'; //позитивное значение для китайских хопперов (Нормально разомкнутый (по умолчанию)
char ru_hopper_positive = '1'; //позитивное значение для русского хоппера (Нормально замкнутый)
try
{
// Проверяем существование файла
if (!File.Exists(filePath))
{
Debug.LogWarning($"Файл {SENSOR_VERSION_FILE} не найден по пути: {filePath}");
return china_hopper_positive;
}
// Читаем содержимое файла
string versionData = File.ReadAllText(filePath).Trim();
// Убираем лишние пробелы и проверяем на пустоту
if (string.IsNullOrWhiteSpace(versionData))
{
Debug.LogWarning($"Файл {SENSOR_VERSION_FILE} пуст");
return china_hopper_positive;
}
char result = china_hopper_positive;
switch (versionData)
{
case "1":
result = china_hopper_positive;
break;
case "2":
result = ru_hopper_positive;
break;
default:
result = china_hopper_positive;
break;
}
return result;
}
catch (Exception ex)
{
Debug.LogError($"Ошибка при чтении файла {SENSOR_VERSION_FILE}: {ex.Message}");
return china_hopper_positive;
}
}
public static string GetSettingsPassword()
{
string filePath = Path.Combine(Application.persistentDataPath, SETTINGS_PASSWORD);
try
{
// Проверяем существование файла
if (!File.Exists(filePath))
{
Debug.LogWarning($"Файл {SETTINGS_PASSWORD} не найден по пути: {filePath}");
return null;
}
// Читаем содержимое файла
string password = File.ReadAllText(filePath).Trim();
// Убираем лишние пробелы и проверяем на пустоту
if (string.IsNullOrWhiteSpace(password))
{
Debug.LogWarning($"Файл {SETTINGS_PASSWORD} пуст");
return null;
}
return password;
}
catch (Exception ex)
{
Debug.LogError($"Ошибка при чтении файла {SETTINGS_PASSWORD}: {ex.Message}");
return null;
}
}
public static void SetPassword(string password)
{
string filePath = Path.Combine(Application.persistentDataPath, SETTINGS_PASSWORD);
try
{
File.WriteAllText(filePath, password);
Console.WriteLine($"Файл успешно записан: {filePath}");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при записи файла: {ex.Message}");
throw;
}
}
}