using Newtonsoft.Json; using System; using System.Collections.Generic; using TMPro; using UnityEngine; using static LYTWebGLHelper; namespace QFramework.Example { public class UIScoreData : UIPanelData { /// /// 只显示当前模块的评分 /// public bool onlyCurModule = false; } public partial class UIScore : UIPanel { protected override void OnInit(IUIData uiData = null) { mData = uiData as UIScoreData ?? new UIScoreData(); TypeEventSystem.Global.Register((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject); DownLoad.onClick.AddListener(() => { if (string.IsNullOrEmpty(InputName.text) || string.IsNullOrEmpty(InputId.text)) { UITipWindowData data = new UITipWindowData(); data.txt = "姓名或者学号为空"; data.btns.Add(new UITipWindowData.ItemData() { txt = "确定" }); UIKit.OpenPanelAsync(canvasLevel: UILevel.PopUI, uiData: data).ToAction().Start(this); return; } #if UNITY_WEBGL ResLoader loader = ResLoader.Allocate(); loader.Add2Load(Global.reportDemoPath.ToLocalBytesResName(), (success, res) => { if (success) { byte[] bytes = res.As().bytes; WebGLDownLoadFile.Instance.DownloadDocx(bytes, GetScoreDataJson()); } }); loader.LoadAsync(); #elif UNITY_STANDALONE_WIN DownLoad.interactable = false; AsposeHelper.Writer(GetScoreDataJson(), () => { DownLoad.interactable = true; }); #endif }); Confirm.onClick.AddListener(Hide); } public string GetScoreDataJson() { return ScoreController.Instance.GetModuleDictJson(InputName.text); } protected override void OnOpen(IUIData uiData = null) { mData = uiData as UIScoreData ?? new UIScoreData(); Content.RemoveAllChildren(); float sum = 0; float score = 0; bool onlyCur = false; if (uiData == null) { if (bool.TryParse(Global.Instance.curModule.OnlyCurScore, out onlyCur) == false) { onlyCur = false; } } else { onlyCur = mData.onlyCurModule; } List datas = new List(); int seq = 1; if (onlyCur) { foreach (var item in ScoreController.Instance.GetCurScoreData()) { GameObject obj = GameObject.Instantiate(ItemPrefab.gameObject, Content); obj.transform.Find("Step").GetComponent().text = item.Value.step; obj.transform.Find("Name").GetComponent().text = item.Value.name; obj.transform.Find("Sum").GetComponent().text = item.Value.sum; obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; datas.Add(new Expstepvtwolist() { ExpStepName = item.Value.step + item.Value.name, maxScore = int.Parse(item.Value.sum), score = (int)item.Value.value, startTime = item.Value.time, endTime = item.Value.time, seq = seq, }); seq++; } } else { foreach (var moduleDict in ScoreController.Instance.moduleDict) { foreach (var item in moduleDict.Value.scoreDict) { GameObject obj = GameObject.Instantiate(ItemPrefab.gameObject, Content); obj.transform.Find("Step").GetComponent().text = item.Value.step; obj.transform.Find("Name").GetComponent().text = item.Value.name; obj.transform.Find("Sum").GetComponent().text = item.Value.sum; obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; datas.Add(new Expstepvtwolist() { ExpStepName = item.Value.step + item.Value.name, maxScore = int.Parse(item.Value.sum), score = (int)item.Value.value, startTime = item.Value.time, endTime = item.Value.time, seq = seq }); seq++; } } } this.Score.text = score.ToString(); this.Sum.text = sum.ToString(); #if UNITY_WEBGL LYTWebGLHelper.Instance.UpLoadData((int)score, datas.ToArray()); #endif } protected override void OnShow() { } protected override void OnHide() { } protected override void OnClose() { } } }