public override void OnExit(params object[] argv) { GameObject nextLevelButton = argv[0] as GameObject; nextLevelButton.SetActive(false); int selectedDateTimeInt = XPlayerPrefs.GetInt(ChallengeController.selectedDateTimeStr); Debug.Log("sign:" + (selectedDateTimeInt - GameConfig.SignInDay).ToString()); SignInMgr.GetInstance().Sign(selectedDateTimeInt - GameConfig.SignInDay); }
private void ModiMapAndInfo() { updateFlag = false; //修改图片和信息的显示 //获得表 int dayId = TimeUtil.getIntByDateTime(m_selectedDateTime); SignInConfig signInConfig = SignInMgr.GetInstance().GetConfigByID((uint)dayId); m_selectedLevelID = signInConfig.LevelId; LevelData levelData = LevelMgr.GetInstance().GetLevelConfig(m_selectedLevelID); LevelConfig levelConfig = levelData.Config; if (levelConfig == null) { Debug.LogError("获取不到关卡 " + m_selectedLevelID + " 的Config"); return; } //TODO:修改mapIcon的图标,需要通过读表获取对应的图集 AltasConfig altasConfig = AltasMgr.GetInstance().GetConfigByID(m_selectedLevelID); string altasname = altasConfig.AltasName2; UIAtlas ats = UIAtlasUtil.GetAtlas(altasname); if (ats != null) { ats.Sp = mapIcon; if (SignInMgr.GetInstance().IsSign(dayId - GameConfig.SignInDay)) { ats.SetSprite("p_" + levelConfig.LevelPicture.ToString()); } else { ats.SetSprite("s_" + levelConfig.LevelPicture.ToString()); } } //TODO:修改info,包括了编号、名字、剩余时间和按钮的状态、文字等 levelNumText.text = "#" + (SignInMgr.GetInstance().GetIndexByID((uint)dayId) + 1).ToString(); LanguageMgr.GetInstance().GetLangStrByID(levelNameText, signInConfig.DailylevelName); StartCoroutine(TimeLeftUpdate(m_selectedDateTime.AddDays(1))); ModiTryButton(); }
public void InitDay(DateTime dateTime) { isLocked = false; isEmpty = false; this.dateTime = dateTime; this.dateTimeInt = TimeUtil.getIntByDateTime(dateTime); //TODO:首先获取配置表,如果今天没有配置任何信息,就不显示任何 SignInConfig signInConfig = SignInMgr.GetInstance().GetConfigByID((uint)dateTimeInt); if (signInConfig == null || LevelMgr.GetInstance().GetLevelConfig(signInConfig.LevelId).Config == null) { // InitInvisible(); dayBGSelectFinish.color = Color.clear; dayBGSelectUnFinish.color = Color.clear; dayBGUnSelectFinish.color = Color.clear; lockImage.color = Color.clear; dayText.text = dateTime.Day.ToString(); dayText.color = emptyColor; isEmpty = true; return; } //TODO:和今天对比,如果是今天,字體显示为todaycolor;如果是今天之后,就先上锁,字體顯示爲lockcolor;如果是今天之前,就顯示爲normalcolor DateTime todayDateTime = DateTime.Today; dayBGSelectFinish.color = Color.clear; dayBGSelectUnFinish.color = Color.clear; dayBGUnSelectFinish.color = Color.clear; dayText.text = dateTime.Day.ToString(); bool todayOrPast = false; if (dateTime == todayDateTime) { dayText.color = todayColor; lockImage.color = Color.clear; todayOrPast = true; } else if (dateTime > todayDateTime) { dayText.color = lockColor; lockImage.color = Color.white; isLocked = true; } else { dayText.color = normalColor; lockImage.color = Color.clear; todayOrPast = true; } //如果是今天或者今天之前才要读取当天的完成状态 if (todayOrPast) { //TODO:读取当天的完成状态 via 存档/如果存档中记录的是一系列二进制数,那么读取存档应该放在上层,获取当天的状态后,传入一个bool即可 // int isChallengedInt = XPlayerPrefs.GetInt(TimeUtil.getIntByDateTime(dateTime) + challengeStr); //!just for test // Debug.Log(dateTime.ToShortDateString() + " " + dateTimeInt.ToString()); // Debug.Log(GameConfig.SignInDay); // Debug.Log(dateTimeInt - GameConfig.SignInDay); isChallenged = SignInMgr.GetInstance().IsSign(dateTimeInt - GameConfig.SignInDay); //FINISH:判断当前日期是否被选中 bool isSelected = XPlayerPrefs.GetInt(ChallengeController.selectedDateTimeStr) == dateTimeInt ? true : false; if (isChallenged && isSelected) { //如果當前日期是選中+完成 dayBGSelectFinish.color = Color.white; dayText.color = Color.white; //还要通知一下ChallengeController LogicEvent.Broadcast(LogicEvent.CALENDAR_SELECTED, dateTime, this.gameObject); } else if (!isChallenged && isSelected) { //如果當前日期是選中+未完成 dayBGSelectUnFinish.color = Color.white; // Debug.Log("select unfinish:" + dateTime.ToShortDateString()); // Debug.Log("select unfinish color?:" + dayBGSelectUnFinish.color.ToString()); // Debug.Log("select finish color?:" + dayBGSelectFinish.color.ToString()); LogicEvent.Broadcast(LogicEvent.CALENDAR_SELECTED, dateTime, this.gameObject); } else if (isChallenged && !isSelected) { //如果當前日期是未選中+完成 dayBGUnSelectFinish.color = Color.white; dayText.color = Color.white; } } }
public void InitAllCalendars() { calendarList = new List <CalendarTest>(); int selectedDateTimeInt = XPlayerPrefs.GetInt(ChallengeController.selectedDateTimeStr); Debug.Log("selectedDay:" + selectedDateTimeInt); if (selectedDateTimeInt != 0) { currentCalendarDateTime = TimeUtil.getDateTimeByInt(selectedDateTimeInt); } else { currentCalendarDateTime = DateTime.Today; X.Res.SignInConfig todaySignInConfig = SignInMgr.GetInstance().GetConfigByID((uint)TimeUtil.getIntByDateTime(currentCalendarDateTime)); if (todaySignInConfig != null && LevelMgr.GetInstance().GetLevelConfig(todaySignInConfig.LevelId).Config != null) { XPlayerPrefs.SetInt(ChallengeController.selectedDateTimeStr, TimeUtil.getIntByDateTime(currentCalendarDateTime)); } else { XPlayerPrefs.SetInt(ChallengeController.selectedDateTimeStr, (int)SignInMgr.GetInstance().MaxValidDay); } } selectedDateTimeInt = XPlayerPrefs.GetInt(ChallengeController.selectedDateTimeStr); Debug.Log("selectedDay:" + selectedDateTimeInt); int calendarCount = transform.childCount; int centerCalendar = calendarCount / 2; int offsetMonth = 0; for (int i = centerCalendar; i >= 0; i--) { Transform calendarTrans = transform.GetChild(i); CalendarTest calendar = calendarTrans.GetComponent <CalendarTest>(); calendarList.Add(calendar); DateTime calendarDateTime = currentCalendarDateTime.AddMonths(offsetMonth); calendar.InitCalendar(calendarDateTime.Month, calendarDateTime.Year); offsetMonth--; } offsetMonth = 1; for (int i = centerCalendar + 1; i < calendarCount; i++) { Transform calendarTrans = transform.GetChild(i); CalendarTest calendar = calendarTrans.GetComponent <CalendarTest>(); calendarList.Add(calendar); DateTime calendarDateTime = currentCalendarDateTime.AddMonths(offsetMonth); calendar.InitCalendar(calendarDateTime.Month, calendarDateTime.Year); offsetMonth++; } currentCalendarDateTime = new DateTime(currentCalendarDateTime.Year, currentCalendarDateTime.Month, 1); Debug.Log(currentCalendarDateTime.Year + " " + currentCalendarDateTime.Month + " " + currentCalendarDateTime.Day); }
public void ShowBesideMonthCalendar(bool nextOrLast) { if (nextOrLast) { //跳至下一个月 DateTime nextCalendarDateTime = currentCalendarDateTime.AddMonths(1); DateTime firstDateOfNext = new DateTime(nextCalendarDateTime.Year, nextCalendarDateTime.Month, 1); if (firstDateOfNext > TimeUtil.getDateTimeByInt((int)(SignInMgr.GetInstance().MaxDay))) { //如果下一個月的第一天沒有配置 return; } //设置currentCalendarDateTime currentCalendarDateTime = currentCalendarDateTime.AddMonths(1); Debug.Log(currentCalendarDateTime.Year + " " + currentCalendarDateTime.Month + " " + currentCalendarDateTime.Day); nextCalendarDateTime = currentCalendarDateTime.AddMonths(1); //TODO:加入动画而非直接变换位置 StartCoroutine(moveRectTrans(rectTrans, rectTrans.anchoredPosition + Vector2.left * panelWidth, 0.2f, () => { // rectTrans.anchoredPosition = rectTrans.anchoredPosition + Vector2.left * panelWidth; //TODO:动画播完后,改变子节点的排序,即多个日历的排序,由于horizontalLayout的作用会改变每个日历的位置,将第一个日历放到最后时,当前展示的日历会往左移动,因此整个panel需要再往右移动 //TODO:原本的第一个子节点,即第一个日历放到最后之后,将第一个日历变为当前查看的日历的下一月份的日历 Transform firstCalendarTrans = rectTrans.GetChild(0); firstCalendarTrans.SetAsLastSibling(); CalendarTest firstCalendar = firstCalendarTrans.GetComponent <CalendarTest>(); firstCalendar.InitCalendar(nextCalendarDateTime.Month, nextCalendarDateTime.Year); Debug.Log("move back"); rectTrans.anchoredPosition = rectTrans.anchoredPosition + Vector2.right * panelWidth; })); } else { //跳至上一个月 DateTime lastCalendarDateTime = currentCalendarDateTime.AddMonths(-1); DateTime lastDateOfLast = new DateTime(currentCalendarDateTime.Year, currentCalendarDateTime.Month, 1).AddDays(-1); if (lastDateOfLast < TimeUtil.getDateTimeByInt((int)(SignInMgr.GetInstance().MinDay))) { //如果上一個月的最後一天也沒有配置 return; } //设置currentCalendarDateTime currentCalendarDateTime = currentCalendarDateTime.AddMonths(-1); Debug.Log(currentCalendarDateTime.Year + " " + currentCalendarDateTime.Month + " " + currentCalendarDateTime.Day); lastCalendarDateTime = currentCalendarDateTime.AddMonths(-1); //TODO:加入动画而非直接变换位置 StartCoroutine(moveRectTrans(rectTrans, rectTrans.anchoredPosition + Vector2.right * panelWidth, 0.2f, () => { //TODO:动画播完后,改变子节点的排序,即多个日历的排序,由于horizontalLayout的作用会改变每个日历的位置,将最后一个日历放到开头时,当前展示的日历会往右移动,因此整个panel需要再往左移动 //TODO:原本的最后一个子节点,即最后一个日历放到开头之后,将最后一个日历变为当前查看的日历的前一月份的日历 Transform lastCalendarTrans = rectTrans.GetChild(rectTrans.childCount - 1); lastCalendarTrans.SetAsFirstSibling(); CalendarTest lastCalendar = lastCalendarTrans.GetComponent <CalendarTest>(); lastCalendar.InitCalendar(lastCalendarDateTime.Month, lastCalendarDateTime.Year); rectTrans.anchoredPosition = rectTrans.anchoredPosition + Vector2.left * panelWidth; })); // rectTrans.anchoredPosition = rectTrans.anchoredPosition + Vector2.right * panelWidth; } }