Ejemplo n.º 1
0
        /// <summary>
        /// Spawns all types of objects.
        /// </summary>
        private void SpawnObjects()
        {
            //Spawn Player objects
            foreach (var player in gameData.Players)
            {
                var clonedPlayer = prototypes.GetPlayerClone();

                var tempSize = (int)player.Health / 10;
                var calc     = tempSize > PlayerSettings.maxPlayerSize ? PlayerSettings.maxPlayerSize :
                               player.Health < PlayerSettings.minPlayerSize ? PlayerSettings.minPlayerSize : tempSize;

                clonedPlayer.Update(player.Uuid, player.XCoord, player.YCoord, calc);

                Controls.Add(clonedPlayer.objectControl);
                //playerList.Add(clonedPlayer.Uuid);
                playerObjects.AddObject(clonedPlayer);
            }

            //Spawn Food objects
            foreach (var food in gameData.Foods)
            {
                var clonedFood = prototypes.GetFoodClone();

                clonedFood.Update(food.Uuid, food.XCoord, food.YCoord, (int)food.HealthPoints);

                Controls.Add(clonedFood.objectControl);
                //foodList.Add(clonedFood.Uuid);
                foodObjects.AddObject(clonedFood);
            }

            //Spawn Obstacle objects
            foreach (var obstacle in gameData.Obstacles)
            {
                var clonedObstacle = prototypes.GetObstacleClone();

                clonedObstacle.Update(obstacle.Uuid, obstacle.XCoord, obstacle.YCoord, (int)obstacle.DamagePoints);

                Controls.Add(clonedObstacle.objectControl);
                //obstacleList.Add(clonedObstacle.Uuid);
                obstacleObjects.AddObject(clonedObstacle);
            }

            var clonedTimeTravel = prototypes.GetTimeTravelClone();

            clonedTimeTravel.Update(Guid.NewGuid().ToString(), new Random().Next(0, maxX), new Random().Next(0, maxY),
                                    20);

            Controls.Add(clonedTimeTravel.objectControl);

            timeTravelObjects.AddObject(clonedTimeTravel);
        }
Ejemplo n.º 2
0
        public GameWindow()
        {
            InitializeComponent();
            maxY = ClientSize.Height;
            maxX = ClientSize.Width;
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);

            ApiHelper.InitializeClient();

            playerPositions = new CareTaker();

            //Create
            objects = new ObjectGroup("All objects", "Every object in the scene:");

            playerObjects      = new ObjectGroup("Player Objects", "Every Player object in the scene:");
            eatenPlayerObjects =
                new ObjectGroup("Eaten Player objects", "All player objects that were eaten by you:");

            foodObjects      = new ObjectGroup("Food Objects", "Every food object in the scene:");
            eatenFoodObjects =
                new ObjectGroup("Eaten Food objects", "All food objects that were eaten by you:");

            obstacleObjects =
                new ObjectGroup("Obstacle Objects", "Every obstacle object in the scene:");
            eatenObstacleObjects =
                new ObjectGroup("Eaten Obstacle objects", "All obstacle objects that were eaten by you:");

            timeTravelObjects      = new ObjectGroup("Time travel Objects", "Every Time Travel objects in the scene");
            eatenTimeTravelObjects = new ObjectGroup("Eaten Time travel objects",
                                                     "All time travel objects that were eaten by you");


            playerObjects.AddObject(eatenPlayerObjects);
            foodObjects.AddObject(eatenFoodObjects);
            obstacleObjects.AddObject(eatenObstacleObjects);
            timeTravelObjects.AddObject(eatenTimeTravelObjects);

            objects.AddObject(playerObjects);
            objects.AddObject(foodObjects);
            objects.AddObject(obstacleObjects);
            objects.AddObject(timeTravelObjects);

            prototypes = new PrototypeHolder();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Checks for player collisions with other objects.
        /// </summary>
        private void CheckForCollision()
        {
            foreach (Control x in this.Controls)
            {
                if (x is PictureBox)
                {
                    if (x.Tag.Equals(ObjectType.Food))
                    {
                        // Jei susiduria su maistu
                        if (playerObject.objectControl.Bounds.IntersectsWith(x.Bounds))
                        {
                            //Add eaten food to eaten food hierarchy
                            ObjectComponent eatenFood = null;

                            foreach (var foodObject in foodObjects.GetLeafObjects().Cast <Food>()
                                     .Where(foodObject => foodObject.Uuid.Equals(x.Name)))
                            {
                                eatenFood = foodObject;
                            }

                            if (eatenFood != null)
                            {
                                eatenFoodObjects.AddObject(eatenFood);
                            }

                            foodObjects.RemoveObject(eatenFood);

                            var content = new Dictionary <string, string>
                            {
                                { "playerUuid", playerObject.Uuid },
                                { "foodUuid", x.Name }
                            };

                            //foodList.Remove(x.Name);
                            Controls.Remove(x);

                            updater.PostData("api/player/eat-food", Processor.PostDataType.Post, content);
                        }
                    }

                    if (playerObject.objectControl.Bounds.IntersectsWith(x.Bounds) && x.Tag.Equals(ObjectType.Player) &&
                        playerObject.Uuid != x.Name)
                    {
                        var currentPlayer = gameData.Players.Find(player => player.Uuid == playerObject.Uuid);
                        var targetPlayer  = gameData.Players.Find(player => player.Uuid == x.Name);

                        if (currentPlayer.Health >= targetPlayer.Health)
                        {
                            //Add eaten player to eaten player hierarchy
                            ObjectComponent eatenPlayer = null;

                            foreach (var player in playerObjects.GetLeafObjects().Cast <Player>()
                                     .Where(player => player.Uuid.Equals(x.Name)))
                            {
                                eatenPlayer = player;
                            }

                            if (eatenPlayer != null)
                            {
                                eatenPlayerObjects.AddObject(eatenPlayer);
                            }

                            playerObjects.RemoveObject(eatenPlayer);

                            //playerList.Remove(x.Name);
                            Controls.Remove(x);

                            var data = new Dictionary <string, string>
                            {
                                { "playerUuid", currentPlayer.Uuid },
                                { "secondPlayerUuid", targetPlayer.Uuid }
                            };
                            updater.PostData("api/player/eat-player", Processor.PostDataType.Post, data);
                        }
                        else
                        {
                            //playerList.Remove(playerObject.Uuid);
                            Controls.Remove(playerObject.objectControl);
                            targetPlayer.Health += currentPlayer.Health;

                            var data = new Dictionary <string, string>
                            {
                                { "playerUuid", targetPlayer.Uuid },
                                { "secondPlayerUuid", currentPlayer.Uuid }
                            };
                            updater.PostData("api/player/eat-player", Processor.PostDataType.Post, data);
                        }
                    }

                    if (x.Tag.Equals(ObjectType.Obstacle))
                    {
                        // If collides with obstacle
                        if (playerObject.objectControl.Bounds.IntersectsWith(x.Bounds))
                        {
                            //Add eaten obstacle to eaten obstacle hierarchy
                            ObjectComponent eatenObstacle = null;

                            foreach (var obstacleObject in obstacleObjects.GetLeafObjects().Cast <Obstacle>()
                                     .Where(obstacleObject => obstacleObject.Uuid.Equals(x.Name)))
                            {
                                eatenObstacle = obstacleObject;
                            }

                            if (eatenObstacle != null)
                            {
                                eatenObstacleObjects.AddObject(eatenObstacle);
                            }

                            obstacleObjects.RemoveObject(eatenObstacle);

                            var content = new Dictionary <string, string>
                            {
                                { "playerUuid", playerObject.Uuid },
                                { "obstacleUuid", x.Name }
                            };

                            //obstacleList.Remove(x.Name);
                            Controls.Remove(x);

                            updater.PostData("api/player/touch-obstacle", Processor.PostDataType.Post, content);
                        }
                    }

                    if (x.Tag.Equals(ObjectType.TimeTravel))
                    {
                        if (playerObject.objectControl.Bounds.IntersectsWith(x.Bounds))
                        {
                            MoveBack();
                        }
                    }
                }

                SetScore(playerObject.size * 10);
            }
        }