public static ExcelPost Create(PostIMatch postIMatch) { if (postIMatch.Post == null) { throw new InvalidOperationException("Kan ikke eksportere uten at postIMatch.Post er satt. Bruk Include(...)"); } var post = postIMatch.Post; var excelPost = new ExcelPost { PostId = post.PostId, Navn = post.Navn, Omraade = post.Omraade, Beskrivelse = post.Beskrivelse, Image = post.Image, Latitude = post.Latitude, Longitude = post.Longitude, Altitude = post.Altitude, DefaultPoengArray = post.DefaultPoengArray, HemmeligKode = post.HemmeligKode, SynligFra = postIMatch.SynligFraTid, SynligTil = postIMatch.SynligTilTid }; return(excelPost); }
public void StemplingerUtOverSpesifikasjonStempling_GirSistePoeng() { var poeng = "100,80"; var beregnet = PostIMatch.BeregnPoengForNesteRegistrering(poeng, 15); Assert.AreEqual(80, beregnet); }
public void AndreStempling_GirAndrePoeng() { var poeng = "100,80"; var beregnet = PostIMatch.BeregnPoengForNesteRegistrering(poeng, 1); Assert.AreEqual(80, beregnet); }
public void FørsteStempling_GirFørstePoeng() { var poeng = "100,80"; var beregnet = PostIMatch.BeregnPoengForNesteRegistrering(poeng, 0); Assert.AreEqual(100, beregnet); }
public void Opprett_spill_videre() { //Opprett_Våpen(); //Opprett_Arrangørlag(); //Opprett_LagForHelga(); using (var context = _dataContextFactory.Create()) { var match = new Match() { MatchId = Guid.NewGuid(), Navn = "Bouvet Battle Royale 2015 - nachpiel", StartTid = new DateTime(2015, 11, 07, 15, 00, 00), SluttTid = new DateTime(2045, 11, 07, 15, 00, 00) }; if (context.Matcher.Any(x => x.Navn == match.Navn)) { return; } var leggTilLag = context.Lag.Where(x => x.LagId.StartsWith("SUPPORT") || x.LagId.StartsWith("JAVA_") || x.LagId.StartsWith("MS_")).ToList(); foreach (var lag in leggTilLag) { var deltakelse = match.LeggTil(lag); var våpen = context.Våpen.ToList(); deltakelse.LeggTilVåpen(våpen[0]); deltakelse.LeggTilVåpen(våpen[1]); } context.Matcher.Add(match); foreach (var post in new PostFactory().Les(Constants.Område.Oscarsborg)) { context.Poster.Add(post); var postIMatch = new PostIMatch { Match = match, Post = post, PoengArray = post.DefaultPoengArray, SynligFraTid = match.StartTid, SynligTilTid = match.SluttTid }; if (post.Latitude < 59.67700) { postIMatch.SynligFraTid = match.SluttTid; } match.Poster.Add(postIMatch); } context.SaveChanges(); } }
public void Opprett_spill_fredag() { Opprett_Våpen(); //Opprett_Demolag(); Opprett_Arrangørlag(); Opprett_LagForHelga(); using (var context = _dataContextFactory.Create()) { var match = new Match { MatchId = Guid.NewGuid(), Navn = "Treningsrunde fredag", StartTid = new DateTime(2015, 11, 06, 10, 00, 00), SluttTid = new DateTime(2015, 11, 07, 10, 30, 00) }; if (context.Matcher.Any(x => x.Navn == match.Navn)) { return; } var leggTilLag = context.Lag.Where(x => x.LagId.StartsWith("BBR") || x.LagId.StartsWith("SUPPORT") || x.LagId.StartsWith("JAVA_") || x.LagId.StartsWith("MS_")).ToList(); foreach (var lag in leggTilLag) { var deltakelse = match.LeggTil(lag); var våpen = context.Våpen.ToList(); deltakelse.LeggTilVåpen(våpen[0]); deltakelse.LeggTilVåpen(våpen[1]); } context.Matcher.Add(match); foreach (var post in new PostFactory().Les(Constants.Område.OscarsborgFredag)) { post.HemmeligKode = post.Navn.Replace(" ", string.Empty); post.Navn = "Fredag" + post.Navn; context.Poster.Add(post); var postIMatch = new PostIMatch { Match = match, Post = post, PoengArray = post.DefaultPoengArray, SynligFraTid = match.StartTid, SynligTilTid = match.SluttTid }; match.Poster.Add(postIMatch); } context.SaveChanges(); } }
private void DisablePostIMatch(PostIMatch førstePost) { using (var context = _dataContextFactory.Create()) { var postIMatch = context.PosterIMatch .Include(x => x.Post) .Include(x => x.Match) .Single(x => x.Id == førstePost.Id); postIMatch.SynligFraTid = new DateTime(2001, 01, 01); postIMatch.SynligTilTid = new DateTime(2001, 01, 02); context.SaveChanges(); } }
private int KjørRiggedeVåpenOgReturnerPoeng(PostIMatch post, int poeng, string bruktVåpen, string lagId, string deltakerId) { if (post.RiggetVåpen == Constants.Våpen.Felle) { var riggetAvLag = post.RiggetVåpenParam; post.RiggetVåpen = null; // nullstill post.RiggetVåpenParam = null; post.SynligFraTid = TimeService.Now.AddSeconds(_settings.PostSkjulesISekunderEtterVåpen); _eventPublisher.UtløsteFelle(lagId, deltakerId, poeng, riggetAvLag); return(-poeng); } return(poeng); }
public Match EnMatchMedTreLagOgTrePoster() { using (var context = _dataContextFactory.Create()) { var lag1 = LagFactory.SettOppEtLagMedDeltakere(1, 2); var lag2 = LagFactory.SettOppEtLagMedDeltakere(2, 2); var lag3 = LagFactory.SettOppEtLagMedDeltakere(3, 2); context.Lag.Add(lag1); context.Lag.Add(lag2); context.Lag.Add(lag3); var alleLag = new List <Lag> { lag1, lag2, lag3 }; var match = new Match { MatchId = Guid.NewGuid(), Navn = "Unit Test Match", StartTid = new DateTime(2015, 10, 01), SluttTid = new DateTime(2020, 12, 01) }; context.Matcher.Add(match); if (!context.Våpen.Any()) { context.Våpen.Add(new Vaapen { VaapenId = Constants.Våpen.Bombe, Beskrivelse = "Sprenger posten for en tid" }); context.Våpen.Add(new Vaapen { VaapenId = Constants.Våpen.Felle, Beskrivelse = "Sprenger posten ved neste stempling. Laget som stempler får ikke poeng." }); context.SaveChanges(); } var alleVåpen = context.Våpen.ToList(); var felle = alleVåpen.Single(x => x.VaapenId == Constants.Våpen.Felle); var bombe = alleVåpen.Single(x => x.VaapenId == Constants.Våpen.Bombe); foreach (var l in alleLag) { var lagIMatch = new LagIMatch { Lag = l, Match = match }; lagIMatch.VåpenBeholdning.Add(new VaapenBeholdning { LagIMatch = lagIMatch, Våpen = felle }); lagIMatch.VåpenBeholdning.Add(new VaapenBeholdning { LagIMatch = lagIMatch, Våpen = bombe }); match.LeggTil(lagIMatch); } foreach (var post in HentTestPoster(3)) { context.Poster.Add(post); var postIMatch = new PostIMatch { Match = match, Post = post, PoengArray = post.DefaultPoengArray, SynligFraTid = match.StartTid, SynligTilTid = match.SluttTid }; match.Poster.Add(postIMatch); } context.SaveChanges(); OverrideMatchId(match); return(match); } }
public void Calculate() { var matchId = _currentMatchProvider.GetMatchId(); //using (With.ReadUncommitted()) using (var context = _dataContextFactory.Create()) { var sorterteLag = context.LagIMatch.Include(x => x.Lag.Deltakere).Include(x => x.VåpenBeholdning).Include("Våpenbeholdning.BruktIPostRegistrering") .Where(x => x.Match.MatchId == matchId) .OrderByDescending(x => x.PoengSum) .ToList(); // Legg på poeng fra Achievements var achievementsPoeng = from a in context.Achievements group a by a.LagId into g select new { LagId = g.Key, Poeng = g.Sum(x => x.Score), Achievements = g }; foreach (var lagPoeng in achievementsPoeng) { var p = lagPoeng; var lag = sorterteLag.Single(x => x.Lag.LagId == p.LagId); lag.PoengSum += p.Poeng; } var poster = (from p in context.PosterIMatch.Include(x => x.Post) where p.Match.MatchId == matchId select new TempPost { PostId = p.Post.PostId, Latitude = p.Post.Latitude, Longitude = p.Post.Longitude, CurrentPoengIndex = p.CurrentPoengIndex, PoengArray = p.PoengArray, Navn = p.Post.Navn, ErSynlig = p.SynligFraTid < TimeService.Now && TimeService.Now < p.SynligTilTid, SynligFra = p.SynligFraTid, SynligTil = p.SynligTilTid, RiggetMedVåpen = p.RiggetVåpen }).ToList(); var postRegistreringer = (from l in context.LagIMatch from p in l.PostRegistreringer where l.Match.MatchId == matchId select new { PostId = p.RegistertPost.Post.PostId, LagIMatchId = p.RegistertForLag.Id, Poeng = p.PoengForRegistrering, Deltaker = p.RegistrertAvDeltaker }).ToList(); var rankedeLag = (from l in sorterteLag select new { Id = l.Id, Lag = l.Lag, Rank = sorterteLag.Count(x => x.PoengSum > l.PoengSum) + 1, PoengSum = l.PoengSum, LagIMatch = l }).OrderBy(x => x.Rank).ToList(); var poengsummer = (from l in rankedeLag select l.PoengSum).Distinct().OrderByDescending(x => x).ToList(); var nyGameState = new Dictionary <string, GameStateForLag>(); var random = new Random(); foreach (var lag in rankedeLag) { var egenPoengIndex = poengsummer.IndexOf(lag.PoengSum); var poengForover = egenPoengIndex == 0 ? lag.PoengSum : poengsummer[egenPoengIndex - 1]; var poengBakover = egenPoengIndex == poengsummer.Count - 1 ? lag.PoengSum : poengsummer[egenPoengIndex + 1]; var state = new GameStateForLag { LagId = lag.Lag.LagId, LagNavn = lag.Lag.Navn, LagFarge = lag.Lag.Farge, LagIkon = lag.Lag.Ikon, Score = lag.PoengSum, Ranking = new GameStateRanking { Rank = lag.Rank, PoengBakLagetForan = poengForover - lag.PoengSum, PoengForanLagetBak = lag.PoengSum - poengBakover, }, Poster = (from p in poster.Where(x => x.ErSynlig) join r in postRegistreringer.Where(x => x.LagIMatchId == lag.Id) on p.PostId equals r.PostId into j from reg in j.DefaultIfEmpty() select new GameStatePost { PostId = p.PostId.ToString(), Navn = p.Navn, Latitude = p.Latitude, Longitude = p.Longitude, PoengVerdi = reg != null ? reg.Poeng : PostIMatch.BeregnPoengForNesteRegistrering(p.PoengArray, p.CurrentPoengIndex), HarRegistrert = reg != null, }).OrderBy(x => x.Navn).ToList(), Vaapen = lag.LagIMatch.VåpenBeholdning.Where(x => x.BruktIPostRegistrering == null).Select(x => new GameStateVaapen { VaapenId = x.VaapenId }).ToList(), Deltakere = lag.Lag.Deltakere.Select(x => new GameStateDeltaker { DeltakerId = x.DeltakerId, Navn = x.Navn }).ToList(), Achievements = new List <GameStateAchievement>()//achievementsPoeng.Where(x => x.LagId == lag.Lag.LagId).Select(x => x.Achievements) }; nyGameState.Add(state.LagId, state); } var scoreboard = new ScoreboardState(); scoreboard.Poster = (from p in poster select new ScoreboardPost { PostId = p.PostId.ToString(), Latitude = p.Latitude, Longitude = p.Longitude, ErSynlig = p.ErSynlig, Navn = p.Navn, Verdi = PostIMatch.BeregnPoengForNesteRegistrering(p.PoengArray, p.CurrentPoengIndex), AntallRegistreringer = postRegistreringer.Count(x => x.PostId == p.PostId), SynligFra = p.SynligFra, RiggetMedVåpen = p.RiggetMedVåpen }).OrderBy(x => x.Navn).ToList(); scoreboard.Lag = sorterteLag.Select(l => new ScoreboardLag { LagId = l.Lag.LagId, LagNavn = l.Lag.Navn, LagFarge = l.Lag.Farge, Score = l.PoengSum, Ranking = sorterteLag.Count(x => x.PoengSum > l.PoengSum) + 1, AntallRegistreringer = postRegistreringer.Count(x => x.LagIMatchId == l.Id) }).ToList(); var deltakerPoeng = postRegistreringer .GroupBy(p => p.Deltaker.DeltakerId) .Select(g => new { DeltakerId = g.Key, Navn = g.First().Deltaker.Navn, LagIMatchId = g.First().LagIMatchId, AntallRegistreringer = g.Count(), Poengsum = g.Sum(x => x.Poeng) }).ToList(); scoreboard.Deltakere = (from p in deltakerPoeng join l in sorterteLag on p.LagIMatchId equals l.Id select new ScoreboardDeltaker { DeltakerId = p.DeltakerId, Navn = p.Navn, AntallRegistreringer = p.AntallRegistreringer, Score = p.Poengsum, LagId = l.Lag.LagId, LagFarge = l.Lag.Farge, LagIkon = l.Lag.Ikon, LagNavn = l.Lag.Navn, MostValueablePlayerRanking = deltakerPoeng.Count(x => x.Poengsum > p.Poengsum) + 1 }).OrderByDescending(x => x.MostValueablePlayerRanking).ToList(); var førsteTidspunktEtterNå = (from p in poster from t in p.Tider where t > TimeService.Now select t).Union(new[] { DateTime.MaxValue }).Min(); scoreboard.Match = LagScoreboardMatchInfo(context, matchId); // swap current state _matchStates[matchId] = new MatchState(matchId, nyGameState, scoreboard, førsteTidspunktEtterNå); // IKKE SAVE CHANGES } }