99 lines
3.0 KiB
C#
99 lines
3.0 KiB
C#
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
public class CheckSettingsPasswordState : IState
|
||
{
|
||
//EnterPasswordPanel panel;
|
||
public void enter()
|
||
{
|
||
//panel = GameManager.instance.enterPasswordPanel;
|
||
Debug.Log("[Проход в настройки]");
|
||
|
||
//Пароль не установлен.
|
||
//bool Pwd = SettingsManager.GetBool(SettingKey.PASSWORD_ON_SETTINGS, false);
|
||
//if (!Pwd)
|
||
//{
|
||
// Debug.Log("[Пароля нет, заходим братья]");
|
||
// GameManager.instance.stateMachine.ChangeState(new SettingsState());
|
||
// return;
|
||
//}
|
||
|
||
//Пароль есть.
|
||
//Получить пароль.
|
||
string password = ExternalFilesGetter.GetSettingsPassword();
|
||
//Если он не валидный, то сбросить настройку и пропустить.
|
||
if (password == null)
|
||
{
|
||
Debug.Log("[Файла пароля нет. Сброс пароля. Заход в настройки]");
|
||
disableCheck();
|
||
|
||
GameManager.Instance.stateMachine.ChangeState(new SettingsState());
|
||
return;
|
||
}
|
||
|
||
if (PasswordValid(password))
|
||
{
|
||
// если валидный, то запускаем ввод пароля
|
||
//panel.gameObject.SetActive(true);
|
||
//panel.Initialize(password);
|
||
}
|
||
else
|
||
{
|
||
Debug.Log("[пароль невалидный. Сброс пароля. Заход в настройки]");
|
||
disableCheck();
|
||
ExternalFilesGetter.SetPassword("");
|
||
GameManager.Instance.stateMachine.ChangeState(new SettingsState());
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
private static void disableCheck()
|
||
{
|
||
//Setting setting = SettingsManager.Container.TryGetSetting(SettingKey.PASSWORD_ON_SETTINGS);
|
||
//setting.ChangeValue(-1);//ставим false
|
||
//SettingsManager.OnSettingsChanged?.Invoke();
|
||
}
|
||
|
||
public void exit()
|
||
{
|
||
//panel.gameObject.SetActive(false);
|
||
}
|
||
|
||
public void update()
|
||
{
|
||
//panel._Update();
|
||
//if (panel.truePassword)
|
||
//{
|
||
// GameManager.instance.stateMachine.ChangeState(new SettingsState());
|
||
//}
|
||
GameManager.Instance.stateMachine.ChangeState(new SettingsState());
|
||
}
|
||
|
||
private bool PasswordValid(string password)
|
||
{
|
||
if(password.Length!=12) return false;
|
||
List<string> combinations = SplitPasswordIntoPairs(password);
|
||
List<string> validCombinations = new List<string> { "L1", "L2", "R1", "R2", "A1", "A2", "P1", "P2" };
|
||
|
||
foreach (string combination in combinations)
|
||
{
|
||
if (!validCombinations.Contains(combination)) return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
List<string> SplitPasswordIntoPairs(string password)
|
||
{
|
||
List<string> result = new List<string>();
|
||
for (int i = 0; i < password.Length; i += 2)
|
||
{
|
||
result.Add(password.Substring(i, 2));
|
||
}
|
||
|
||
return result;
|
||
}
|
||
} |