Tanoda
SavedUser.cs
Go to the documentation of this file.
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.IO;
5using System.Linq;
6using GILES;
8using Newtonsoft.Json;
9using UnityEngine;
11using UnityEngine.UI;
12
13public class SavedUser : pb_MonoBehaviourSingleton<SavedUser>
14{
18 public bool isEditor = true;
19 public bool isTutorial = false;
20 public bool isVarjo = false;
22 public byte handTracking = 0; //0: 2 kéz, 1: jobbkéz, 2: bal kéz
23 internal int TrainingType;
24 internal string levelName;
25 [SerializeField] internal int loopCount = 0;
26 private List<UserManager.VRAction> actionTime = new List<UserManager.VRAction>();
27
28
29 [Serializable]
30 public enum CourseType
31 {
32 Normal,
33 Quality,
34 Dobot
35 }
36
37 void Start()
38 {
39 wsActions = default;
40 DontDestroyOnLoad(this);
41#if UNITY_WEBGL
42 isEditor = true;
43#elif USENETWORK && !DANA
44 isEditor = false;
45#endif
46
47 }
48
49 public bool isQuality => courseType == CourseType.Quality;
50
51 public void SetEditorBool(bool value)
52 {
53 isEditor = value;
54 }
55 public void SetTutorialBool(bool value)
56 {
57 isTutorial = value;
58 }
59 public void SetVarjoBool(bool value)
60 {
61 isVarjo = value;
62 }
63
64 public void LevelStarted()
65 {
66#if !UNITY_WEBGL
67 if (!currentUser.HasValue) return;
68 var currentUserValue = UserManager.instance.GetUserByName(currentUser.Value.Username);
69
70 if (currentUser.Value.addedTrainings == null)
71 {
72 currentUserValue.addedTrainings = new List<UserManager.AddedTrainings>();
73 }
74
75 if (currentUser.Value.trainings == null)
76 {
77 currentUserValue.trainings = new List<UserManager.Training>();
78 }
79 currentUserValue.trainings.Add(new UserManager.Training(){Name = levelName, Username = currentUser.Value.Username , Date = DateTime.Now, Success = false, Time = 0});
80 UserManager.instance.UpdateUser(currentUserValue);
81#endif
82 }
83
84 public void LevelFinished(bool success, float time, float handTrackingPercent = -1f)
85 {
86#if !UNITY_WEBGL
87#if !DANA
88 MiscLogicManager.instance.LevelEnded(time);
89#endif
90#if DANA
91 if (!currentUser.HasValue) return;
92 var currentUserValue = UserManager.instance.GetUserByName(currentUser.Value.Username);
93 var lastTraining = currentUserValue.trainings[currentUserValue.trainings.Count - 1];
94 lastTraining.Time = time;
95 lastTraining.Success = success;
96 CreateText(lastTraining, currentUserValue.Username);
97 //lastTraining.HandTrackingPercent = handTrackingPercent;
98 currentUserValue.trainings[currentUserValue.trainings.Count - 1] = lastTraining;
99 UserManager.instance.UpdateUser(currentUserValue);
100 StartCoroutine(ShowOptimization(lastTraining));
101 StartCoroutine(ShowResult(lastTraining));
102#else
103 StartCoroutine(NetworkManager.instance.SetUserCourseStatus(-1, success, isTutorial ? false : true, time,
104 null, null));
105 wsActions.userId = wsUser.Value.id;
106 if (wsActions.savedActions != null)
107 StartCoroutine(NetworkManager.instance.UploadJson(wsActions));
108#endif
109 //if (MiscLogicManager.instance.mode == MiscLogicManager.CurrentMode.Optimization)
110 //{
111 // OptimizerInitializer.Instance.ShowOptimizer(lastTraining);
112 //}
113#endif
114 }
115
116 [NaughtyAttributes.Button]
117 void forcesend()
118 {
119 StartCoroutine(NetworkManager.instance.UploadJson(wsActions));
120 }
121
122
123 public void ActionCompleted(string type, float time, float recognitionTime, float penaltyTime, string actionName, string comment, float takttime)
124 {
125#if DANA
126 if (!currentUser.HasValue) return;
127 var currentUserValue = UserManager.instance.GetUserByName(currentUser.Value.Username);
128 var lastTraining = currentUserValue.trainings[currentUserValue.trainings.Count - 1];
129 if (lastTraining.Actions == null) lastTraining.Actions = new List<UserManager.VRAction>();
130 lastTraining.Actions.Add(new UserManager.VRAction(){timeSpent = time, timeRecognition = recognitionTime, actionType = type, penaltyTime = penaltyTime, actionName = actionName});
131 actionTime.Add(new UserManager.VRAction(){timeSpent = time,timeRecognition = recognitionTime, actionType = type, penaltyTime = penaltyTime, actionName = actionName});
132 currentUserValue.trainings[currentUserValue.trainings.Count - 1] = lastTraining;
133 UserManager.instance.UpdateUser(currentUserValue);
134#endif
135#if !DANA
136 if (/*comment != null && */takttime > 0)
137 {
138 if (wsActions.savedActions == null)
139 {
140 wsActions.savedActions = new List<UserManager.WSAction>();
141 }
142 wsActions.savedActions.Add(new UserManager.WSAction() { actionComment = (comment != null) ? comment : actionName, tactTimeCurrent = time, tactTimeTarget = takttime });
143 }
144
145
146#endif
147 }
148 public IEnumerator ShowOptimization(UserManager.Training training)
149 {
150 yield return null;
151 if (MiscLogicManager.instance.mode == MiscLogicManager.CurrentMode.Optimization)
152 {
154 }
155
156 }
157
158 public IEnumerator ShowResult(UserManager.Training training)
159 {
160 yield return null;
162 }
163 public void QuizAnswered(bool success, string quizName, float quizTime)
164 {
165#if !UNITY_WEBGL
166 if (!currentUser.HasValue) return;
167 var currentUserValue = UserManager.instance.GetUserByName(currentUser.Value.Username);
168 var lastTraining = currentUserValue.trainings[currentUserValue.trainings.Count - 1];
169
170 if (lastTraining.Quizzes == null)
171 {
172 lastTraining.Quizzes = new List<UserManager.Quiz>();
173 }
174 lastTraining.Quizzes.Add(new UserManager.Quiz(){ Name = quizName, Success = success, Time = quizTime});
175 currentUserValue.trainings[currentUserValue.trainings.Count - 1] = lastTraining;
176 UserManager.instance.UpdateUser(currentUserValue);
177#endif
178 }
179
180 internal void CreateTaktJson(UserManager.WSActions? wsActions, string user)
181 {
182 string path = Application.persistentDataPath + "/TimeDataLog_" + user + "_teszt" + ".json";
183
184 string scenegraph = JsonConvert.SerializeObject(new[]
185 {
186 (object)wsActions,
187
188 },
189 Formatting.None, // Formatting.Indented -> tul sok helyet foglal
190 pb_Serialization.ConverterSettings);
191
192 if (!File.Exists(path))
193 {
194 File.WriteAllText(path, "Login log \n\n");
195 }
196
197
198 File.AppendAllText(path, scenegraph);
199 }
200 internal void CreateText(UserManager.Training training, string user)
201 {
202 string path = Application.persistentDataPath + "/TimeDataLog_" + user +"_" + training.Name + ".txt";
203
204 string scenegraph = JsonConvert.SerializeObject(new[]
205 {
206 (object)training,
207
208 },
209 Formatting.None, // Formatting.Indented -> tul sok helyet foglal
210 pb_Serialization.ConverterSettings);
211
212 if (!File.Exists(path))
213 {
214 File.WriteAllText(path, "Login log \n\n");
215 }
216
217
218 File.AppendAllText(path, scenegraph);
219 }
220}
static void ShowOptimizer(UserManager.Training lastTraining)
void ShowResultCanvas(UserManager.Training lastTraining)
Definition: ResultCanvas.cs:25
static ResultCanvas Instance
Definition: ResultCanvas.cs:10
IEnumerator ShowOptimization(UserManager.Training training)
Definition: SavedUser.cs:148
IEnumerator ShowResult(UserManager.Training training)
Definition: SavedUser.cs:158
CourseType courseType
Definition: SavedUser.cs:21
bool isVarjo
Definition: SavedUser.cs:20
UserManager.? WSUser wsUser
Definition: SavedUser.cs:16
bool isEditor
Definition: SavedUser.cs:18
void LevelStarted()
Definition: SavedUser.cs:64
void SetVarjoBool(bool value)
Definition: SavedUser.cs:59
void ActionCompleted(string type, float time, float recognitionTime, float penaltyTime, string actionName, string comment, float takttime)
Definition: SavedUser.cs:123
UserManager.WSActions wsActions
Definition: SavedUser.cs:17
void QuizAnswered(bool success, string quizName, float quizTime)
Definition: SavedUser.cs:163
UserManager.? User currentUser
Definition: SavedUser.cs:15
void SetEditorBool(bool value)
Definition: SavedUser.cs:51
void SetTutorialBool(bool value)
Definition: SavedUser.cs:55
bool isTutorial
Definition: SavedUser.cs:19
byte handTracking
Definition: SavedUser.cs:22
bool isQuality
Definition: SavedUser.cs:49
void LevelFinished(bool success, float time, float handTrackingPercent=-1f)
Definition: SavedUser.cs:84