public Activity CreateActivity(MissionScore score, ActivityScore activityScore) { if (activityScore == null) { return(CreateStartActivity(score)); } var difficulty = CalculateActivityDifficulty(activityScore.NextActivity, activityScore.ActivityResult, activityScore.P); return(Instantiate(activityScore.NextActivity, _groupFactory.GetGroup1(), difficulty)); }
public void SubmitMissionScore(string login, string passwordHash, string missionName, int score, int gameSeconds, string missionVars = "") { missionName = Mission.GetNameWithoutVersion(missionName); using (var db = new ZkDataContext()) { var acc = AuthServiceClient.VerifyAccountHashed(login, passwordHash); if (acc == null) { throw new ApplicationException("Invalid login or password"); } acc.Xp += GlobalConst.XpForMissionOrBots; var mission = db.Missions.Single(x => x.Name == missionName); if (score != 0) { var scoreEntry = mission.MissionScores.FirstOrDefault(x => x.AccountID == acc.AccountID); if (scoreEntry == null) { scoreEntry = new MissionScore() { MissionID = mission.MissionID, AccountID = acc.AccountID, Score = int.MinValue }; mission.MissionScores.Add(scoreEntry); } if (score > scoreEntry.Score) { var max = mission.MissionScores.Max(x => (int?)x.Score); if (max == null || max <= score) { mission.TopScoreLine = login; acc.Xp += 150; // 150 for getting top score } scoreEntry.Score = score; scoreEntry.Time = DateTime.UtcNow; scoreEntry.MissionRevision = mission.Revision; scoreEntry.GameSeconds = gameSeconds; } } acc.CheckLevelUp(); db.SubmitChanges(); // ==================== // campaign stuff ProgressCampaign(acc.AccountID, mission.MissionID, missionVars); } }
public Type GetNextActivityType(MissionScore score, Percentage newScore, ActivityResult newActivityResult, P p) { if (newActivityResult == null) { return(score.GetCurrentActivity()); } var previousActivity = newActivityResult.ActivityType; var scoreBasedActivity = previousActivity; if (newScore >= Percentage.OneHundred) { var nextNode = _activityOrder.Find(previousActivity).Next; if (nextNode == null) { //nextNode = _activityOrder.Last; return(HackToShowActivityTransitionAtTheEnd()); } scoreBasedActivity = nextNode.Value; } else if (newScore <= Percentage.Zero) { var previousNode = _activityOrder.Find(previousActivity).Previous; if (previousNode == null) { previousNode = _activityOrder.First; } scoreBasedActivity = previousNode.Value; } return(scoreBasedActivity); }
public void SubmitMissionScore(string login, string passwordHash, string missionName, int score, int gameSeconds, string missionVars = "") { missionName = Mission.GetNameWithoutVersion(missionName); using (var db = new ZkDataContext()) { var acc = AuthServiceClient.VerifyAccountHashed(login, passwordHash); if (acc == null) { Trace.TraceWarning("Invalid login attempt for {0}", login); System.Threading.Thread.Sleep(new Random().Next(2000)); } acc.Xp += GlobalConst.XpForMissionOrBots; var mission = db.Missions.Single(x => x.Name == missionName); if (score != 0 || mission.RequiredForMultiplayer) { var scoreEntry = mission.MissionScores.FirstOrDefault(x => x.AccountID == acc.AccountID); if (scoreEntry == null) { scoreEntry = new MissionScore() { MissionID = mission.MissionID, AccountID = acc.AccountID, Score = int.MinValue }; mission.MissionScores.Add(scoreEntry); } if (score > scoreEntry.Score) { var max = mission.MissionScores.Max(x => (int?)x.Score); if (max == null || max <= score) { mission.TopScoreLine = login; acc.Xp += 150; // 150 for getting top score } scoreEntry.Score = score; scoreEntry.Time = DateTime.UtcNow; scoreEntry.MissionRevision = mission.Revision; scoreEntry.GameSeconds = gameSeconds; } } acc.CheckLevelUp(); db.SaveChanges(); if (!acc.CanPlayMultiplayer) { if ( db.Missions.Where(x => x.RequiredForMultiplayer) .All(y => y.MissionScores.Any(z => z.AccountID == acc.AccountID))) { acc.CanPlayMultiplayer = true; db.SaveChanges(); Global.Server.PublishAccountUpdate(acc); Global.Server.GhostPm(acc.Name, "Congratulations! You are now authorized to play MultiPlayer games!"); } } } }
public GameState() { LetterProficiency = new List <LetterProficiency>(); Score = new MissionScore(); }
Activity CreateStartActivity(MissionScore score) { var type = score.GetCurrentActivity(); return(Instantiate(type, _groupFactory.GetGroup1(), ActivityDifficulty.Normal)); }