partial void DeleteMissionScore(MissionScore instance);
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); } }
partial void UpdateMissionScore(MissionScore instance);
partial void InsertMissionScore(MissionScore instance);
private void detach_MissionScores(MissionScore entity) { this.SendPropertyChanging(); entity.Account = null; }
private void attach_MissionScores(MissionScore entity) { this.SendPropertyChanging(); entity.Mission = this; }
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!"); } } // ==================== // campaign stuff ProgressCampaign(acc.AccountID, mission.MissionID, missionVars); } }