public ChapterViewModel ChapterOfStage(StageViewModel stage)
 {
     var chapters = App.ViewModel.Chapters;
     foreach (var chapter in chapters)
         if (chapter.Stages.Contains(stage))
             return chapter;
     return null;
 }
 public bool ChapterIsUnlocked(StageViewModel stageView)
 {
     var chapter = ChapterOfStage(stageView);
     if (chapter == null) return false;
     foreach (var stage in chapter.Stages) {
         if (stage.IsLocked == false) {
             foreach (var s in chapter.Stages)
                 s.IsChapterLocked = false;
             return true;
         }
     }
     return false;
 }
        public int IncrementTimesPlayed(StageViewModel stage)
        {
            var guid = stage.StageId;
            var key = "Played_" + guid;
            var times = 1;
            if (IsolatedStorageSettings.ApplicationSettings.TryGetValue(key, out times))
                IsolatedStorageSettings.ApplicationSettings[key] = ++times;
            else {
                times = 1;
                IsolatedStorageSettings.ApplicationSettings.Add(key, times);
            }

            return times;
        }
コード例 #4
0
        private void InitializeStageViewModel()
        {
            string chapterName = string.Empty, stageName = string.Empty;

            var parameters = NavigationContext.QueryString;
            if (!parameters.ContainsKey("StageId")) return;
            var stageId = Guid.Parse(parameters["StageId"]);
            foreach (var chapter in App.ViewModel.Chapters) {
                StageViewModel svm;
                if ((svm = chapter.Stages.FirstOrDefault(s => s.StageId == stageId)) == null) continue;
                _stage = svm;
                chapterName = chapter.LocalizedName;
                stageName = LocalizedResources.Stage(chapter.StageNumber(svm));
                break;
            }

            var chapterStageNameText = chapterName + " , " + stageName;
            WinChapterStageName.Text = chapterStageNameText;
            LoseChapterStageName.Text = chapterStageNameText;
        }
コード例 #5
0
 private void InitializeStageViewModel()
 {
     var parameters = NavigationContext.QueryString;
     if (!parameters.ContainsKey("StageId")) return;
     var stageId = Guid.Parse(parameters["StageId"]);
     foreach (var chapter in App.ViewModel.Chapters)
     {
         StageViewModel svm;
         if ((svm = chapter.Stages.FirstOrDefault(s => s.StageId == stageId)) == null) continue;
         _stage = svm;
         break;
     }
 }
 public int StageNumber(StageViewModel stage)
 {
     return Stages.IndexOf(stage) + 1;
 }
        public void MarkWon(StageViewModel stage)
        {
            var guid = stage.StageId;
            if (_finishedStages.Contains(guid))
                return;
            _finishedStages.Add(guid);
            IsolatedStorageSettings.ApplicationSettings[FinishedStageIdsKey] = _finishedStages;

            var nextStage = App.ViewModel.NextStage(stage.StageId);

            // no more stage to unlock for the last stage
            if (nextStage == null) return;

            // no need to unlock twice
            if (nextStage.IsLocked == false) return;

            var timesPlayed = GetTimesPlayed(stage);
            Utils.SendEvent(stage.Name, "First win", Utils.StageFirstWin(timesPlayed), 0);

            nextStage.IsLocked = false;
            var nextChapter = ChapterOfStage(nextStage);
            var chapter = ChapterOfStage(stage);
            if (chapter != nextChapter) {
                nextChapter.IsLocked = false;

                var totalTimesPlayed = 0;
                foreach (var stageInChapter in chapter.Stages) {
                    totalTimesPlayed += GetTimesPlayed(stageInChapter);
                }

                Utils.SendEvent("Times played to win chapter", chapter.Name, Utils.ChapterTimesPlayed(totalTimesPlayed), 0);
            }
        }
        public void MarkPlayed(StageViewModel stage)
        {
            var timesPlayed = IncrementTimesPlayed(stage);

            var timesPlayedString = Utils.TimesPlayedRange(timesPlayed);
            Utils.SendEvent(stage.Name, "Times played", timesPlayedString, 0);
        }
        private int GetTimesPlayed(StageViewModel stage)
        {
            var guid = stage.StageId;
            var key = "Played_" + guid;
            var times = 0;
            if (IsolatedStorageSettings.ApplicationSettings.TryGetValue(key, out times))
                return times;

            return 0;
        }
        public bool StageIsUnlocked(StageViewModel stageView)
        {
            if(_finishedStages == null)
                GetUnlockedStageIds();

            if (stageView.Prerequisites == Guid.Empty)
                return true;

            if (_finishedStages.Contains(stageView.Prerequisites))
                return true;

            return false;
        }
コード例 #11
0
		private void CreateXML() {
			var fileNames = new List<string> {
                    "Animal01",
                    "Animal02",
                    "Animal03",
                    "Animal04",
                    "Animal05",
                    "Animal06",
                    "Animal07",
                    "Animal08",
                    "Animal09",
                    "Animal10",
                    "Animal11",
                    "Animal12",
                    "Animal13",
                    "Animal14",
                    "Animal15",
                    "Animal16",
                    "Animal17",
                    "Animal18",
                    "Animal19",
                    "Animal20",
                    "Animal21",
                    "Animal22",
                    "Animal23",
                    "Animal24",
                    "Animal25",
                    "Animal26",
                    "Animal27",
                    "Animal28",
                    "Animal29",
                    "Animal30",
                    "Animal31",
                    "Animal32",
                    "Animal33",
                    "Animal34",
                    "Animal35",
                    "Animal36",
                    "Animal37",
                    "Animal38",
                    "Animal39",
                    "Animal40",
                    "Animal41",
                    "Animal42",
                    "Animal43",
                    "Animal44",
                    "Animal45",
                    "Animal46",
                    "Animal47",
                    "Animal48",
                    "Animal49",
                    "Animal50",
                    "Animal51",
                    "Animal52"
                };

			var cl = new List<ChapterViewModel>();
			var lastStageId = Guid.Empty;
			const int stagesPerChapter = 6;
			ChapterViewModel currentChapter = null;
			for (var i = 0; i < fileNames.Count; i++) {
				if (i % stagesPerChapter == 0) {
					currentChapter = new ChapterViewModel { Name = "Chapter " + i, Stages = new List<StageViewModel>() };
					cl.Add(currentChapter);
				}
				if (currentChapter != null) {
					var stage = new StageViewModel {
						Name = fileNames[i],
						GameFile = string.Format("https://photohunt.blob.core.windows.net/animal/{0}.zip", fileNames[i]),
						StageId = Guid.NewGuid(),
						Thumbnail = string.Format("https://photohunt.blob.core.windows.net/animal/thumbnails/{0}.jpg", fileNames[i]),
						GameEffect = Effect.None,
						Prerequisites = lastStageId
					};
					currentChapter.Stages.Add(stage);
					lastStageId = stage.StageId;
				}
			}

			var xmlSerializer = new XmlSerializer(typeof(List<ChapterViewModel>));
			var textWriter = new StringWriter();

			xmlSerializer.Serialize(textWriter, cl);
			var result = textWriter.ToString();
		}
コード例 #12
0
        private void CreateSampleData()
        {
            var fileNames = new List<string>
                {
                    "Animal01",
                    "Animal02",
                    "Animal03",
                    "Animal04",
                    "Animal05",
                    "Animal06",
                    "Animal07",
                    "Animal08",
                    "Animal09",
                    "Animal10",
                    "Animal11",
                    "Animal12",
                    "Animal13",
                    "Animal14",
                    "Animal15",
                    "Animal16",
                    "Rio01",
                    "Rio02",
                    "Rio03",
                    "Rio04",
                    "Rio05",
                    "Rio06",
                    "Rio07",
                    "Rio08",
                    "Rio09"
                };

            var cl = new List<ChapterViewModel>();
            var lastStageId = Guid.Empty;
            const int stagesPerChapter = 6;

            ChapterViewModel currentChapter = null;

            for (var i = 0; i < fileNames.Count; i++)
            {
                if (i%stagesPerChapter == 0)
                {
                    currentChapter = new ChapterViewModel {Name = "Chapter " + i, Stages = new List<StageViewModel>()};
                    cl.Add(currentChapter);
                }
                if (currentChapter != null)
                {
                    var stage = new StageViewModel
                        {
                            Name = fileNames[i],
                            GameFile = string.Format("https://appusage.blob.core.windows.net/photohuntinfinity/{0}.zip", fileNames[i]),
                            StageId = Guid.NewGuid(),
                            Thumbnail = "https://appusage.blob.core.windows.net/photohuntav1/Intro%20Video%201_icon.jpg",
                            GameEffect = Effect.None,
                            Prerequisites = lastStageId
                        };
                    currentChapter.Stages.Add(stage);
                    lastStageId = stage.StageId;
                }
            }

            var xmlSerializer = new XmlSerializer(typeof(List<ChapterViewModel>));
            var textWriter = new StringWriter();

            xmlSerializer.Serialize(textWriter, cl);
            var result = textWriter.ToString();
        }