Files
HDRobotics/Assets/Scripts/Presenter/ProgramPresenter.cs

62 lines
1.7 KiB
C#

using UnityEngine;
public class ProgramPresenter
{
private ProgramModel model;
private ProgramView view;
public ProgramPresenter(ProgramModel model, ProgramView view)
{
this.model = model;
this.view = view;
this.view.OnCreateProgramClicked += HandleCreateProgram;
this.view.OnLoadProgramListRequested += HandleLoadProgramList;
this.view.OnProgramSelectedToLoad += HandleProgramSelected;
this.view.OnSaveClicked += HandleSaveProgram;
this.view.OnAddPointClicked += HandleAddPoint;
}
private void HandleCreateProgram(string programId)
{
if (model.CreateNewProgram(programId))
{
view.DisplayProgram(model.CurrentProgram);
}
else
{
view.ShowMessage($"Error: Program ID '{programId}.job' already exists or is invalid.");
}
}
private void HandleLoadProgramList()
{
var programIds = model.GetAllProgramIds();
view.ShowProgramList(programIds);
}
private void HandleProgramSelected(string programId)
{
if (model.LoadProgram(programId))
{
view.DisplayProgram(model.CurrentProgram);
}
view.HideProgramList();
}
private void HandleSaveProgram()
{
model.SaveCurrentProgram();
// UI 갱신이 필요하다면 여기에 추가 (예: 저장 완료 메시지)
}
private void HandleAddPoint()
{
// 실제로는 UI상의 좌표나 로봇 엔드포인트 좌표를 받아와야 함
// 여기서는 예시로 랜덤 좌표를 사용
Vector3 newPoint = new Vector3(Random.Range(-1f, 1f), Random.Range(0f, 1f), Random.Range(-1f, 1f));
model.AddPointToCurrentProgram(newPoint);
view.DisplayProgram(model.CurrentProgram);
}
}