public void DoAnnouncement(string announceContent, Color txtColor, float stayTime = 1.25f) { theTxt.text = announceContent; theTxt.color = txtColor; desiredStayTime = stayTime; if (curState == AnnouncementState.inactive) { StartCoroutine(AnnouncementRoutine()); } else { curState = AnnouncementState.growing; elapsedStateTime = 0; } }
public void DeleteAnnouncements(int classId, int?classAnnouncementType, AnnouncementState state) { Trace.Assert(Context.PersonId.HasValue); DoUpdate(u => { var da = CreateClassAnnouncementDataAccess(u); var conds = new AndQueryCondition { { ClassAnnouncement.CLASS_REF_FIELD, classId }, { Announcement.STATE_FIELD, state } }; if (classAnnouncementType.HasValue) { conds.Add(ClassAnnouncement.CLASS_ANNOUNCEMENT_TYPE_REF_FIELD, classAnnouncementType); } var classAnns = da.GetAnnouncements(conds, Context.PersonId.Value); da.Delete(classAnns.Select(x => x.Id).ToList()); }); }
IEnumerator AnnouncementRoutine() { curState = AnnouncementState.growing; while (curState != AnnouncementState.inactive) { switch (curState) { case AnnouncementState.growing: transform.localScale = Vector3.Lerp(Vector3.zero, Vector3.one, elapsedStateTime / growAndShrinkTime); if (elapsedStateTime >= growAndShrinkTime) { curState = AnnouncementState.staying; elapsedStateTime = 0; } break; case AnnouncementState.staying: if (elapsedStateTime >= desiredStayTime) { curState = AnnouncementState.shrinking; elapsedStateTime = 0; } break; case AnnouncementState.shrinking: transform.localScale = Vector3.Lerp(Vector3.one, Vector3.zero, elapsedStateTime / growAndShrinkTime); if (elapsedStateTime >= growAndShrinkTime) { curState = AnnouncementState.inactive; elapsedStateTime = 0; } break; } elapsedStateTime += Time.deltaTime; yield return(null); } }