Beispiel #1
0
        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());
            }));
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        //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);
        }
Beispiel #13
0
        private Map InferMap(MatchMetadata metadata)
        {
            GameDetailsInferrer detailsInferrer = new GameDetailsInferrer();

            return detailsInferrer.InferMap(metadata)
        }