using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
using UnityEngine.Networking;
using System.IO;
public class MainCanvasManager : PanelBasic
{
public static MainCanvasManager Instance;
///
/// 退出场景
///
public Button back_button;
///
/// 提交实验退出场景
///
public Button _back_button;
///
/// 查看api
///
public Button api_button;
///
/// 目标
///
public Button objective_button;
///
/// 小窗模式
///
public Button mini_mode_button;
///
/// 菜单按钮
///
public Button menu_button;
///
/// 星火大模型按钮
///
public Button spark_model_button;
///
/// 组件名
///
public TextMeshProUGUI part_name_text;
///
/// 场景名称
///
public TextMeshProUGUI scene_name_text;
///
/// 模式名称
///
public TextMeshProUGUI pattern_name_text;
///
/// 用户信息容器
///
public Image user_content;
///
/// 用户头像
///
public Image user_avatar;
///
/// 用户名
///
public TextMeshProUGUI user_name_text;
public static RectTransform MainCanvas;
#region Panels
///
/// 任务步骤面板
///
public static TaskPanel task_panel { get; set; }
///
/// 任务详情面板
///
public static TaskDetailPanel task_detail_panel { get; set; }
///
/// 控制台面板
///
public static ConsolePanel console_panel { get; set; }
///
/// 确认面板
///
public static ConfirmPanel confirm_panel { get; set; }
///
/// Api面板
///
public static ApiPanel api_panel { get; set; }
///
/// Api详情面板
///
public static ApiDetailPanel api_detail_panel { get; set; }
///
/// 目标
///
public static ObjectivePanel objective_panel { get; set; }
///
/// 媒体查看
///
public static MediaViwerPanel media_viwer_panel { get; set; }
///
/// 菜单面板
///
public static MenuPanel menu_panel { get; set; }
///
/// 媒体预览
///
public static MediaPreviewPanel media_preview_panel { get; set; }
///
/// 星火大模型
///
public static SparkModelPanel spark_model_panel { get; set; }
///
/// 摄像头画面面板
///
public static WebcamControllerPanel webcam_panel { get; set; }
#endregion
///
/// 面板列表
///
public PanelBasic[] panel_list;
public delegate void ResetScene();
///
/// 重置场景委托
///
public static ResetScene on_reset_scene;
///
/// ide设置按钮
///
public Button IDEsettingbtn;
///
/// buttonFunction脚本
///
public buttonFunctionAdd button_Function;
///
/// 返回主菜单功能
///
public Button 返回主菜单;
///
/// 返回主菜单取消功能
///
public Button 返回主菜单取消功能;
///
/// Ide设置脚本
///
public IDEsettingPanel ide;
protected override void Awake()
{
base.Awake();
Instance = this;
panel_list = GetComponentsInChildren(true);
Array.ForEach(panel_list, _panel => _panel.Init_Awake());
//初始化ide配置面板
transform.Find("ide设置面板").GetComponent().Init();
api_panel.Init(api_detail_panel);
}
// Start is called before the first frame update
void Start()
{
返回主菜单取消功能.onClick.AddListener(()=>
{
返回主菜单取消功能.transform.parent.gameObject.SetActive(false);
});
返回主菜单.onClick.AddListener(OnBack);
back_button.onClick.AddListener(quit);
api_button.onClick.AddListener(OnApi);
objective_button.onClick.AddListener(OnObjective);
mini_mode_button.onClick.AddListener(OnMiniMode);
menu_button.onClick.AddListener(OnMenu);
spark_model_button.onClick.AddListener(OnSparkModel);
IDEsettingbtn.onClick.AddListener(()=>
{
//打开ide配置面板
transform.Find("ide设置面板").gameObject.SetActive(true);
});
webcam_panel.open_camera_msg += (_msg, _type) => { ConsolePanel.ConsoleOutput(_msg, _type); };
//显示ui面板
switch (GameManager.current_main_menu_type)
{
case MainMenuType.课程任务:
//根据类型:练习、作业、考核等分类(如有)进行详细控制
break;
case MainMenuType.案例中心:
//需要根据具体案例展示对应内容
task_panel.gameObject.SetActive(false);
break;
case MainMenuType.自由编程:
objective_button.gameObject.SetActive(false);
task_panel.gameObject.SetActive(false);
break;
default:
break;
}
//显示人员信息框
if (GameManager.Instance == null || !GameManager.is_login)
{
user_content.gameObject.SetActive(false);
}
else
{
user_name_text.text = CallForTest.instance.user.nickName;
if (!string.IsNullOrEmpty(CallForTest.instance.user.avatar))
{
StartCoroutine(InterfaceManager.GetSprite(CallForTest.instance.user.avatar,(_sprite)=>
{
user_avatar.sprite = _sprite;
}));
}
}
//左上角数据展示
part_name_text.text = GameManager.part_name;
//场景名称
//if (GameManager.scene_name == "深圳市民中心")
//{
// scene_name_text.text = "广场1";
//}
//else if (GameManager.scene_name == "西丽湖校区")
//{
// scene_name_text.text = "广场2";
//}
//else
{
scene_name_text.text = GameManager.scene_name;
}
pattern_name_text.text = GameManager.parttern_name;
}
private ConsoleItem currentConsoleItem_download;
private UnityWebRequest currentRequest_download;
private ConsoleItem currentConsoleItem_upload;
private UnityWebRequest currentRequest_upload;
private void Update()
{
//下载进度
if (currentRequest_download != null && currentConsoleItem_download != null)
{
currentConsoleItem_download.text_mesh_pro.text = "下载中:"+(currentRequest_download.downloadProgress*100).ToString() + "%";
}
//上传进度
if (currentRequest_upload != null && currentConsoleItem_upload != null)
{
currentConsoleItem_upload.text_mesh_pro.text = "上传中:" + (currentRequest_upload.uploadProgress * 100).ToString() + "%";
}
#region Shortcut keys
if ((Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)))
{
if (Input.GetKeyDown(KeyCode.F)&&(!Input.GetKey(KeyCode.LeftShift) &&!Input.GetKey(KeyCode.RightShift)))
{
if (!menu_panel.isCapture)
{
menu_panel.StartVideoRecord();
menu_panel.UI_录.SetActive(true);
menu_panel.UI_主.SetActive(false);
}
else
{
menu_panel.StopVideoRecord();
menu_panel.UI_录.SetActive(false);
menu_panel.UI_主.SetActive(true);
}
}
else if (Input.GetKeyDown(KeyCode.M))//浏览媒体
{
media_viwer_panel.OnPopup();
}
else if (Input.GetKeyDown(KeyCode.I))//导入媒体
{
menu_panel.OnImportMedia();
}
else if (Input.GetKeyDown(KeyCode.T))//重置场景
{
button_Function.ChangePicture(2);
button_Function.seset_();
button_Function.Function_打开重置菜单();
}
else if ((Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)) && Input.GetKeyDown(KeyCode.S))
{
}
else if ((Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) && Input.GetKeyDown(KeyCode.F))
{
//功能只会在课程任务模式下触发
if (GameManager.current_main_menu_type == MainMenuType.课程任务 &&WebSocketServerManager.Instance.number == 0)
{
button_Function.ChangePicture(7);
button_Function.seset_();
button_Function.Function_确认提交云端代码菜单();
}
}
else if (Input.GetKeyDown(KeyCode.S))
{
//功能只会在课程任务模式下触发
if (GameManager.current_main_menu_type == MainMenuType.课程任务 && WebSocketServerManager.Instance.number == 0)
{
//添加打开暂存菜单的功能
button_Function.ChangePicture(4);
button_Function.seset_();
button_Function.Function_确认暂存代码到云端菜单();
}
}
else if (Input.GetKeyDown(KeyCode.D))
{
//功能只会在课程任务模式下触发
if (GameManager.current_main_menu_type == MainMenuType.课程任务 && WebSocketServerManager.Instance.number == 0)
{
//添加打开读取菜单的功能
button_Function.ChangePicture(5);
button_Function.seset_();
button_Function.Function_确认读取云端代码菜单();
}
}
}
#endregion
}
///
/// 设置下载进度条
///
///
///
public void Set_DownLoad_Process(ConsoleItem item, UnityWebRequest request)
{
Debug.Log("设置下载进度");
currentConsoleItem_download = item;
currentRequest_download = request;
}
///
/// 移除下载进度条
///
public void Remove_DownLoad_Process()
{
Debug.Log("移除下载进度");
currentConsoleItem_download = null;
currentRequest_download = null;
}
///
/// 设置上传进度条
///
///
///
public void Set_UpLoad_Process(ConsoleItem item, UnityWebRequest request)
{
Debug.Log("设置上传进度");
currentConsoleItem_upload = item;
currentRequest_upload = request;
}
///
/// 移除上传进度条
///
public void Remove_UpLoad_Process()
{
Debug.Log("移除上传进度");
currentConsoleItem_upload = null;
currentRequest_upload = null;
}
///
/// 截图
///
///
public void ScreemShot(string filePath)
{
if (GameManager.current_main_menu_type == MainMenuType.课程任务)
{
string name=Path.GetFileName(filePath);
if (name != "任务.png")
{
//检查是否有该步骤
var tmp=task_panel.task_item_data.task_steplist.Find(a => "步骤_" + a.stepName+".png"== name);
if(tmp==null)
{
ConsolePanel.ConsoleOutput("不存在此步骤:"+ name.Replace(".png",""), "error");
return;
}
}
ConsolePanel.ConsoleOutput(Path.GetFileName(filePath), "log");
ScreenCapture.CaptureScreenshot(filePath);
}
}
public void Init()
{
}
///
/// 返回登录场景
///
public void OnBack()
{
ide.kill();
if (menu_panel.isCapture)
menu_panel.StopVideoRecord();
SceneManager.LoadScene("LoginScene");
}
///
/// 退出场景
///
public void quit()
{
if (menu_panel.isCapture)
menu_panel.StopVideoRecord();
Application.Quit();
}
///
/// 开关API面板
///
public void OnApi()
{
api_panel.OnSwitch();
}
///
/// 开关目标面板
///
public void OnObjective()
{
objective_panel.OnActive();
}
///
/// 切换迷你模式
///
public void OnMiniMode()
{
//切换分辨率
WindowManager.Instance.SwitchResolution(WindowManager.ScreenResolution.MINI_SCREEN);
}
//切换窗口模式
public void OnMax()
{
WindowManager.Instance.SwitchResolution(WindowManager.ScreenResolution.MAX_SCREEN);
//切换回大窗口后取消置顶状态
WindowManager.Instance.Topping(false);
}
private void OnMenu()
{
menu_panel.OnSwitch();
}
private void OnSparkModel()
{
spark_model_panel.OnSwitch();
}
}