JD2022-TU1/main/phone_apps/JDCompanionApp/Assets/Scripts/ConsoleConnection/ConsoleCarouselController.cs

81 lines
2.6 KiB
C#

using Carousel;
using LightJSON;
using Network;
using UnityEngine;
namespace ConsoleConnection
{
[RequireComponent(typeof(Carousel.Carousel))]
public class ConsoleCarouselController : MonoBehaviour
{
private Carousel.Carousel carousel;
// console-side focus state
private int consoleFocusedRow;
private int consoleFocusedItem;
private int consoleFocusedAction;
private void Awake()
{
carousel = GetComponent<Carousel.Carousel>();
carousel.OnRowFocused += OnRowFocused;
carousel.OnItemFocused += OnItemFocused;
carousel.OnActionFocused += OnActionFocused;
carousel.OnActionTriggered += OnActionTriggered;
}
public void OnRowFocused(RowModel model, int index)
{
if (index == consoleFocusedRow)
return;
var changeRowCommand = JSONParseHelper.GetChangeRowCommand(index);
//Debug.LogFormat("ChangeRowCommand: {0}", index);
ConsoleNetworkManager.Instance.Send(changeRowCommand);
}
public void OnItemFocused(ItemModel model, int index)
{
var rowIndex = carousel.Model.FocusedRow;
if (rowIndex == consoleFocusedRow && index == consoleFocusedItem)
return;
consoleFocusedRow = rowIndex;
consoleFocusedItem = index;
consoleFocusedAction = 0;
//Debug.LogFormat("ChangeItemCommand: {0}, {1}", rowIndex, index);
ConsoleNetworkManager.Instance.Send(JSONParseHelper.GetChangeItemCommand(rowIndex, index));
}
public void OnActionFocused(ActionModel model, int index)
{
if (index == consoleFocusedAction)
return;
consoleFocusedAction = index;
var command = (JSON)model.UserData;
//Debug.LogFormat("ChangeActionCommand: {0}", index);
ConsoleNetworkManager.Instance.Send(JSONParseHelper.GetChangeActionCommand(command));
}
public void OnActionTriggered(ActionModel model, int index)
{
var command = (JSON)model.UserData;
ConsoleNetworkManager.Instance.Send(command);
}
public void OnConsoleFocusMessage(int rowIndex, int itemIndex, int actionIndex)
{
//Debug.LogFormat("OnConsoleFocusMessage: {0}, {1}, {2}", rowIndex, itemIndex, actionIndex);
consoleFocusedRow = rowIndex;
consoleFocusedItem = itemIndex;
consoleFocusedAction = actionIndex;
carousel.SetupFocus(rowIndex, itemIndex, actionIndex);
}
}
}