public Map InferMap(MatchMetadata matchMetadata) { // Check if any players have killed jungle creeps, Rules out HowlingAbyss var JungleCheck = (from player in matchMetadata.AllPlayers where int.Parse(player["NEUTRAL_MINIONS_KILLED"]) > 0 select player); // Check if any players have placed wards, Rules out TwistedTreeline and HowlingAbyss var WardCheck = (from player in matchMetadata.AllPlayers where int.Parse(player["WARD_PLACED"]) > 0 select player); // Double check between TwistedTreeline and SummonersRift var DragonCheck = (from player in matchMetadata.AllPlayers where int.Parse(player["DRAGON_KILLS"]) > 0 select player); if (JungleCheck.Count() > 0) { if (WardCheck.Count() == 0 && DragonCheck.Count() == 0) { return(Map.TwistedTreeline); } else { return(Map.SummonersRift); } } else { return(Map.HowlingAbyss); } }
// check if any player has killed a dragon, SummonersRift only private bool HasDragon(MatchMetadata metadata) { return(( from player in metadata.AllPlayers where int.Parse(player["DRAGON_KILLS"]) > 0 select player ).Count() > 0); }
// check if any players have placed wards, rules out TwistedTreeline and HowlingAbyss private bool HasWards(MatchMetadata metadata) { return(( from player in metadata.AllPlayers where int.Parse(player["WARDS_PLACED"]) > 0 select player ).Count() > 0); }
// check if any players have killed jungle creeps, rules out HowlingAbyss private bool HasJungle(MatchMetadata metadata) { return(( from player in metadata.AllPlayers where int.Parse(player["NEUTRAL_MINIONS_KILLED"]) > 0 select player ).Count() > 0); }
/// <summary> /// Fill the Combo Box with player names /// </summary> /// <param name="data"></param> /// <param name="form"></param> public static void PopulatePlayerData(MatchMetadata data, Form form) { var playernames = from player in data.AllPlayers select player.SafeGet("NAME"); form.BeginInvoke((Action)(() => { ((ComboBox)form.Controls.Find("PlayerSelectComboBox", true)[0]).Items.AddRange(playernames.ToArray()); })); }
private static void LowHealthSmokeParticle(Vector2 position, string smokePath) { Flipbook fb = new Flipbook(position, new Vector2(16, 16), 32, 32, smokePath, new AnimationInstance() { StartingFrame = 0, EndingFrame = 7, TimePerFrame = 1 / 15f }, DepthParameter.ProjectileSFX, (float)Parameter.Random.NextDouble() * MathHelper.TwoPi); float density = (float)(1 / 3f + 2 * Parameter.Random.NextDouble() / 3); fb.SetTransparency(density); fb.Scale *= density; SpecialEffect se = new SpecialEffect(fb, 1); MatchMetadata mm = LevelScene.MatchMetadata; Vector2 posFactor = -Vector2.UnitY * 2 + Vector2.Transform( Vector2.UnitX, Matrix.CreateRotationZ( mm.WindAngleRadians + MathHelper.ToRadians( (0.5f - (float)Parameter.Random.NextDouble()) * 30)) * mm.WindForce / 5); if (Math.Abs(posFactor.Y) < 1) { posFactor = new Vector2(posFactor.X, (posFactor.Y < 0) ? -1 : 1); } float rotationFactor = (mm.WindForce / 10) * (0.5f - (float)Parameter.Random.NextDouble()); float scaleFactor = (float)Parameter.Random.NextDouble(); se.UpdateAction += (specialEffect, gameTime) => { float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds; se.Flipbook.Position += posFactor; se.Flipbook.Rotation += rotationFactor; se.Flipbook.Scale *= 1 + scaleFactor * elapsedTime * 2; }; SpecialEffectHandler.Add(se); }
private void RequestNextPlayerTurnAsyncCallback(object answer) { try { lock (MobileList) { MatchManager manager = (MatchManager)answer; //A team have won if (answer == null) { return; } MatchMetadata = manager.MatchMetadata; //Weather Variations HUD.WeatherDisplay.AppendWeatherToList(MatchMetadata.IncomingWeatherList); //Change Wind (If Necessary) HUD.WindCompass.ChangeWind(MatchMetadata.WindAngleDegrees, MatchMetadata.WindForce); CurrentTurnOwner = manager.TurnOwner; } Thread.Sleep(Parameter.GameplayConstantDelayTimerWindChange); lock (MobileList) { //Grant Turn foreach (Mobile m in MobileList) { m.Regenerate(); if (m.Owner.ID == CurrentTurnOwner.Owner.ID) { m.GrantTurn(); } } } } catch (Exception ex) { Console.WriteLine("Dsync at RequestNextPlayerTurnAsyncCallback: " + ex.Message); } }
public Map InferMap(MatchMetadata matchMetadata) { Map inferredMap; if (!HasJungle(matchMetadata)) { inferredMap = Map.HowlingAbyss; } else if (!HasWards(matchMetadata) && !HasDragon(matchMetadata)) { inferredMap = Map.TwistedTreeline; } else { inferredMap = Map.SummonersRift; } return(inferredMap); }
private static MatchMetadata ParseMetadata(byte[] bytedata) { var result = new MatchMetadata { }; var jsonstring = Encoding.UTF8.GetString(bytedata); var jsonobject = JObject.Parse(jsonstring); result.GameDuration = (ulong)jsonobject["gameLength"]; result.GameVersion = (string)jsonobject["gameVersion"]; result.LastGameChunkID = (uint)jsonobject["lastGameChunkId"]; result.LastKeyframeID = (uint)jsonobject["lastKeyFrameId"]; // Create new lists of player dictionaries for sorting var blueTeam = new List <Dictionary <string, string> >(); var redTeam = new List <Dictionary <string, string> >(); // Read player stats string playerJson = ((string)jsonobject["statsJson"]).Replace(@"\", ""); var players = JsonConvert.DeserializeObject <Player[]>(playerJson); // Sort players into teams var teams = (from player in players group player by player.TEAM into t orderby t.Key select t); // Set teams by key foreach (var team in teams) { if (team.Key == "100") { result.BluePlayers = team.ToArray(); } if (team.Key == "200") { result.RedPlayers = team.ToArray(); } } return(result); }
private static (MatchMetadata, JObject) ParseMetadata(byte[] bytedata) { var result = new MatchMetadata { }; var jsonstring = Encoding.UTF8.GetString(bytedata); var jsonobject = JObject.Parse(jsonstring); result.GameDuration = ((ulong)jsonobject["matchLength"] * 1000); result.GameVersion = (string)jsonobject["clientVersion"]; result.LastGameChunkID = 0; result.LastKeyframeID = 0; // Create new lists of player dictionaries for sorting var blueTeam = new List <Dictionary <string, string> >(); var redTeam = new List <Dictionary <string, string> >(); // Sort blue and red teams foreach (JObject player in (JArray)jsonobject["players"]) { if (player["team"].ToString() == "1") { var playerDict = player.ToObject <Dictionary <string, string> >(); playerDict = TranslatePlayerDictionary(playerDict, (string)jsonobject["map"]); blueTeam.Add(playerDict); } else if (player["team"].ToString() == "2") { var playerDict = player.ToObject <Dictionary <string, string> >(); playerDict = TranslatePlayerDictionary(playerDict, (string)jsonobject["map"]); redTeam.Add(playerDict); } } result.BluePlayers = blueTeam.ToArray(); result.RedPlayers = redTeam.ToArray(); //result.Players = JArray.Parse(((string)jsonobject["statsJson"]).Replace(@"\", "")); return(result, jsonobject); }
private static MatchMetadata ParseMetadata(byte[] bytedata) { var result = new MatchMetadata { }; var jsonstring = Encoding.UTF8.GetString(bytedata); var jsonobject = JObject.Parse(jsonstring); result.GameDuration = (ulong)jsonobject["gameLength"]; result.GameVersion = (string)jsonobject["gameVersion"]; result.LastGameChunkID = (uint)jsonobject["lastGameChunkId"]; result.LastKeyframeID = (uint)jsonobject["lastKeyFrameId"]; // Create new lists of player dictionaries for sorting var blueTeam = new List <Dictionary <string, string> >(); var redTeam = new List <Dictionary <string, string> >(); // Sort blue and red teams foreach (JObject player in JArray.Parse(((string)jsonobject["statsJson"]).Replace(@"\", ""))) { if (player["TEAM"].ToString() == "100") { blueTeam.Add(player.ToObject <Dictionary <string, string> >()); } else if (player["TEAM"].ToString() == "200") { redTeam.Add(player.ToObject <Dictionary <string, string> >()); } } result.BluePlayers = blueTeam.ToArray(); result.RedPlayers = redTeam.ToArray(); //result.Players = JArray.Parse(((string)jsonobject["statsJson"]).Replace(@"\", "")); return(result); }
//static List<Mobile> mobList; public DebugScene() { sceneTimespan = 1f; hasRequestedNextScene = false; Camera.Zoom = new Vector2(1, 1); #region Mobile List /* * mobList = new List<Mobile>(); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[0].Owner, new Vector2(100 * 1, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[1].Owner, new Vector2(100 * 2, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[2].Owner, new Vector2(100 * 3, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[3].Owner, new Vector2(100 * 4, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[4].Owner, new Vector2(100 * 5, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[5].Owner, new Vector2(100 * 6, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[6].Owner, new Vector2(100 * 7, 100))); * mobList.Add(ActorBuilder.BuildMobile(MobileType.Knight, sMobList[7].Owner, new Vector2(100 * 8, 100))); * * for (int i = 0; i < 8; i++) ;*/ MobileList.ForEach((x) => { x.SyncMobile = sMobList[MobileList.IndexOf(x)]; }); #endregion MatchMetadata = new MatchMetadata(); //MatchMetadata.CurrentTurnOwner = MobileList[0].SyncMobile; //optionsMenu.ShouldRender = true; //Popup create char popupSelectMobile = new PopupSelectMobile((x) => { }, () => { }); PopupHandler.Add(popupSelectMobile); //MobFlipbook mFlipbook = new List <MobileFlipbook>(); for (int k = 0; k < 21; k++) { mFlipbook.Add(MobileFlipbook.CreateMobileFlipbook(MobileType.RaonLauncher, new Vector2(-500 + 100 * (k % 5), -500 + 100 * (k / 5)))); } int i = 0; mFlipbook[i++].ChangeState(ActorFlipbookState.Stand, true); mFlipbook[i++].ChangeState(ActorFlipbookState.StandLowHealth, true); mFlipbook[i++].ChangeState(ActorFlipbookState.Moving, true); mFlipbook[i++].ChangeState(ActorFlipbookState.MovingLowHealth, true); mFlipbook[i++].ChangeState(ActorFlipbookState.UnableToMove, true); mFlipbook[i++].ChangeState(ActorFlipbookState.Emotion1, true); mFlipbook[i++].ChangeState(ActorFlipbookState.Emotion2, true); mFlipbook[i++].ChangeState(ActorFlipbookState.BeingDamaged1, true); mFlipbook[i++].ChangeState(ActorFlipbookState.BeingDamaged2, true); mFlipbook[i++].ChangeState(ActorFlipbookState.BeingShocked, true); mFlipbook[i++].ChangeState(ActorFlipbookState.BeingFrozen, true); mFlipbook[i++].ChangeState(ActorFlipbookState.ChargingS1, true); mFlipbook[i++].ChangeState(ActorFlipbookState.ShootingS1, true); mFlipbook[i++].ChangeState(ActorFlipbookState.ChargingS2, true); mFlipbook[i++].ChangeState(ActorFlipbookState.ShootingS2, true); mFlipbook[i++].ChangeState(ActorFlipbookState.ChargingSS, true); mFlipbook[i++].ChangeState(ActorFlipbookState.ShootingSS, true); mFlipbook[i++].ChangeState(ActorFlipbookState.UsingItem, true); mFlipbook[i++].ChangeState(ActorFlipbookState.Dead, true); mFlipbook[i++].ChangeState(ActorFlipbookState.Falling, true); mFlipbook[i++].ChangeState(ActorFlipbookState.All, true); }
private Map InferMap(MatchMetadata metadata) { GameDetailsInferrer detailsInferrer = new GameDetailsInferrer(); return detailsInferrer.InferMap(metadata) }