private async Task BreakCurrentState() { Task task; lock (critical) { if (state == null) { return; } state.Session.Completed = true; state.TokenSource.Cancel(); task = state.LearingTask; state = null; } try { await task; } catch (OperationCanceledException) { } catch (Exception ex) { logger.Value.Info("Break learning is failed"); logger.Value.Error(ex.Message, ex); } }
public async Task StartLearning() { if (IsStarted()) { logger.Value.Info("Learning is already run"); return; } logger.Value.Info("Learning is started"); try { state = await Task.Run(() => InitState()).ConfigureAwait(false); state.LearingTask = Task.WhenAll(IterateLearningTask(), UpdateLearningTask(), UpdateSessionTask()); await state.LearingTask; logger.Value.Info("Learning is completed"); } catch (OperationCanceledException) { logger.Value.Info("Learning is cancelled"); } catch (Exception ex) { logger.Value.Info("Learning is failed"); logger.Value.Error(ex.Message, ex); BreakCurrentState().Wait(); } }
public void BackLesson() { if (Chapter > 0) { Chapter--; LearningState.SetLesson(Chapter); } }
public void NextLesson() { if (Chapter < LearningState.Learning.maxLesson) { Chapter++; LearningState.SetLesson(Chapter); } }
private bool IsBetterThanOtherConsideringPlanetSize(LearningState previousState) { if (playerCanSwallowClosestPlayer) { return(distanceToClosestPlayer < previousState.distanceToClosestPlayer); } return(distanceToClosestPlayer > previousState.distanceToClosestPlayer); }
private void AddReward() { var currentState = new LearningState(player, planet); if (previousState != null) { var rewardStep = currentState.CalculateRewardFrom(previousState); AddReward(rewardStep); //Debug.Log("Reward: " + rewardStep + " || Total: " + GetCumulativeReward()); } previousState = currentState; }
private LearningState InitState() { lock (critical) { var newState = new LearningState(); dataFactory.Value.WithRepository <ISettingsRepository>(repo => { newState.Session.CalcTime = repo.GetCalcTime() ?? TimeSpan.Zero; newState.Session.Velocity = repo.GetCalcVelocity() ?? 1.0; newState.Session.AllTime = repo.GetAllTime() ?? TimeSpan.MaxValue; }); logger.Value.InfoFormat("Init learning session: AllTime: {0}\tCalcTime: {1}\tVelocity: {2}", newState.Session.AllTime, newState.Session.CalcTime, newState.Session.Velocity); return(newState); } }
public static IHtmlString GetCourseSubscriptionMarker(LearningState learningState) { if (!HttpContext.Current.User.Identity.IsAuthenticated) { return(MvcHtmlString.Create(string.Empty)); } string cssClass; string markerText; string toolTip; switch (learningState) { case LearningState.Planned: markerText = "P"; toolTip = "Planned"; cssClass = "label-warning"; break; case LearningState.InProgress: markerText = "S"; toolTip = "Started"; cssClass = "label-primary"; break; case LearningState.Finished: markerText = "F"; toolTip = "Finished"; cssClass = "label-success"; break; default: markerText = "A"; toolTip = "Available"; cssClass = "label-info"; break; } var marker = string.Format("<span class='tm-sb-marker label {0}' data-toggle='tooltip' title={1}>{2}</span>", cssClass, toolTip, markerText); return(MvcHtmlString.Create(marker)); }
public float CalculateRewardFrom(LearningState previousState) { var reward = 0.0f; if (SameAction(previousState)) { if (IsBetterThanOtherConsideringPlanetSize(previousState)) { // No penalty! Good! } else { reward -= 10.0f * Mathf.Abs(previousState.distanceToClosestPlayer - distanceToClosestPlayer); } } // Try to minimize the distance to the black hole. reward += 0.01f * (distanceToTheBlackHole - previousState.distanceToTheBlackHole); return(reward); }
void Start() { g_badgeDescription = GameObject.FindGameObjectsWithTag("badgeDescription");//抓取所有獎章描述的物件 for (int i = 0; i < g_badgeDescription.Length; i++) { g_badgeDescription[i].gameObject.SetActive(false);//隱藏全部 } LearningPanel.SetActive(true); CompetePanel.SetActive(false); ClickBtn = GetComponent <AudioSource>(); StartCoroutine(getLearningBadges());//預設顯示學習區 btn_learningBadge.onClick.AddListener(delegate() { StartCoroutine(getLearningBadges()); }); btn_competeBadge.onClick.AddListener(getCompeteBadges); btn_close.onClick.AddListener(closeAchieveUI); for (int i = 0; i < s_LearningState.Length; i++) { LearningState.GetComponentsInChildren <Text>()[i].text = s_LearningState[i]; CompeteState.GetComponentsInChildren <Text>()[i].text = s_CompeteState[i]; } }
private void Reset() { player.Respawn(player.GetValidRandomPositionInsideArena(), 7); swallowedCount = 0; previousState = null; }
private bool SameAction(LearningState other) { return(ReferenceEquals(closestPlayer, other.closestPlayer) && playerCanSwallowClosestPlayer == other.playerCanSwallowClosestPlayer); }
public static IHtmlString DisplayCourseSubscriptionToken(this HtmlHelper html, LearningState learningState) { string token; switch (learningState) { case LearningState.Planned: token = "plan"; break; case LearningState.InProgress: token = "start"; break; case LearningState.Finished: token = "finish"; break; default: token = "available"; break; } return(MvcHtmlString.Create(token)); }
public static IHtmlString DisplayCourseSubscriptionMarker(this HtmlHelper html, LearningState learningState) { return(GetCourseSubscriptionMarker(learningState)); }
protected override async Task OnInitAsync() { await LearningState.PrepareJupyter(); await LearningState.PrepareLesson(); }