chip-gameV3/Assets/Scripts/Common/LightSystem.cs

156 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using CharacterSystem;
using UnityEngine;
//Зависит от ComWrapper
public static class LightSystem
{
private const string LIGHT_COMMAND_PREFIX = "80";
public static void Idle()
{
if (Random.Range(0, 2) == 0)
SendLightCommandToCom(LightMode.Idle1);
else
SendLightCommandToCom(LightMode.Idle2);
}
public static void Win()
{
SendLightCommandToCom(LightMode.Win);
}
public static void Lose()
{
SendLightCommandToCom(LightMode.Lose);
}
public static void Player(Team currentPlayer)
{
if (currentPlayer == Team.Player1)
SendLightCommandToCom(LightMode.Orange);
else
SendLightCommandToCom(LightMode.Blue);
}
public static void Prize()
{
SendLightCommandToCom(LightMode.Prize);
}
public static void Character(Character currentCharacter)
{
LightMode lightMode;
lightMode = currentCharacter.CharacterIndex switch
{
0 => LightMode.Toaster,
1 => LightMode.Tama,
2 => LightMode.Dog,
3 => LightMode.Sam,
4 => LightMode.Mistress,
_ => LightMode.Idle2
};
SendLightCommandToCom(lightMode);
}
public static void Promo()
{
string[] signals = { "521", "523", "524" };
string signal = signals[Random.Range(0, signals.Length)];
SendLightCommandToCom(signal);
}
private static void SendLightCommandToCom(LightMode lightMode)
{
try
{
string signal = GetLightString(lightMode);
ComWrapper.Send(signal);
}
catch { Debug.LogError("Ошибка отправки светового сигнала."); }
}
/// <summary>
/// Принимает сингнал без префикса. В процессе сам его добавляет.
/// </summary>
private static void SendLightCommandToCom(string signal)
{
try
{
ComWrapper.Send(LIGHT_COMMAND_PREFIX + signal);
}
catch { Debug.LogError("Ошибка отправки светового сигнала."); }
}
private static string GetLightString(LightMode lightMode)
{
string lightsingal;
//определить версию
int version = ConfigManager.Config.LightVersion;
if (version == 1)
{
//1 версия
lightsingal = lightMode switch
{
LightMode.Idle1 => "500",
LightMode.Idle2 => "507",
LightMode.Orange => "501",
LightMode.Blue => "502",
LightMode.Win => "503",
LightMode.Lose => "504",
LightMode.Prize => "509",
LightMode.Toaster => "500",
LightMode.Tama => "513",
LightMode.Dog => "514",
LightMode.Sam => "515",
LightMode.Mistress => "516",
_ => "500"
};
}
else
{
//2 версия (пока дефолт)
lightsingal = lightMode switch
{
LightMode.Idle1 => "500",
LightMode.Idle2 => "507",
LightMode.Orange => "501",
LightMode.Blue => "502",
LightMode.Win => "503",
LightMode.Lose => "504",
LightMode.Prize => "509",
LightMode.Toaster => "513",
LightMode.Tama => "514",
LightMode.Dog => "515",
LightMode.Sam => "516",
LightMode.Mistress => "517",
_ => "500"
};
}
return LIGHT_COMMAND_PREFIX + lightsingal;
}
}
public enum LightMode
{
Idle1,
Idle2,
Orange,
Blue,
Win,
Lose,
Prize,
Toaster,
Tama,
Dog,
Sam,
Mistress
}