Ejemplo n.º 1
0
        public static GameObject CreatePlayerGO(ContentManager content, GraphicsDevice gd)
        {
            if (characterSprite == null)
            {
                characterSprite = content.Load <Texture2D>("Characters/MainCharacter");
            }

            GameObject playerGO = new GameObject();

            playerGO.AddTransform();
            playerGO.AddAudio();
            playerGO.Audio.AddSFX("Pickup", content.Load <SoundEffect>("Sounds/PlayerSounds/Pickup"));
            playerGO.Audio.AddSFX("Shank", content.Load <SoundEffect>("Sounds/PlayerSounds/Shank"));
            playerGO.AddAnimation(characterSprite, new Vector2(28f, 30f));
            playerGO.Animation.AddAnimation("Idle", 0, 1);
            playerGO.Animation.AddAnimation("Run", 0, 4);
            playerGO.Animation.AddAnimation("Hide", 2, 1);
            playerGO.Animation.AddAnimation("Stab", 3, 1);
            playerGO.Animation.AddAnimation("Stealth", 1, 4);
            playerGO.Animation.AddAnimation("Elevator", 5, 1);
            playerGO.Animation.AddAnimation("VentIdle", 4, 1);
            playerGO.Animation.AddAnimation("VentCrawl", 4, 4);
            playerGO.AddRenderer(gd, SpriteTransparency.Transparent);
            playerGO.AddDynamicRigidBody(new Vector2(28f, 30f));
            playerGO.RigidBody.CollisionCategory = CollisionCats.PlayerCategory;
            playerGO.AddScript(new PlayerScript(playerGO));

            return(playerGO);
        }
Ejemplo n.º 2
0
        public void FallingWithStartSpeedTest()
        {
            Random   random = new Random();
            TimeSpan delta  = new TimeSpan(1);

            for (int i = 0; i < 1000; i++)
            {
                Vector2      speed   = new Vector2(random.Next(10, 100), 0);
                Vector2      gravity = new Vector2(0, -random.Next(10, 100));
                PhysicScript physic  = new PhysicScript(
                    speed, gravity);

                int        height = random.Next(100, 1000);
                GameObject go     = new GameObject(
                    null, new Vector2(0, height),
                    Vector2.Zero, Vector2.One, 0);
                go.AddScript(physic);

                int time = (int)Math.Ceiling(
                    Math.Sqrt(-2 * height / gravity.Y)) + 1;

                for (int j = 0; j < time; j++)
                {
                    go.Update(delta);
                }

                Transform transform = go.GetComponent("transform") as Transform;
                int       expected  = (int)speed.X * time;

                Assert.IsTrue(transform.Position.Y <= 0);
                Assert.AreEqual(expected, transform.Position.X);
            }
        }
Ejemplo n.º 3
0
        public void UniformlyAcceleratedMotionTest()
        {
            Random   random = new Random();
            TimeSpan delta  = new TimeSpan(1);

            for (int i = 0; i < 1000; i++)
            {
                Vector2      acceleration = new Vector2(-random.Next(10, 100), 0);
                PhysicScript physic       = new PhysicScript(
                    Vector2.Zero, acceleration);

                int        moving = random.Next(100, 1000);
                GameObject go     = new GameObject(
                    null, new Vector2(moving, 0),
                    Vector2.Zero, Vector2.One, 0);
                go.AddScript(physic);

                int time = (int)Math.Ceiling(
                    Math.Sqrt(-2 * moving / acceleration.X));

                for (int j = 0; j <= time; j++)
                {
                    go.Update(delta);
                }

                Transform transform = go.GetComponent("transform") as Transform;

                Assert.IsTrue(transform.Position.X <= 0);
                Assert.AreEqual(0, transform.Position.Y);
            }
        }
Ejemplo n.º 4
0
        public override void Start()
        {
            string boidModel    = GetScriptCustomAttribute("boidModelResourceId");
            string boidCountStr = GetScriptCustomAttribute("boidCount");

            int boidCount = int.Parse(boidCountStr);

            for (int i = 0; i < boidCount; ++i)
            {
                GameObject newGameObject = new GameObject($"Boid ({i})");
                newGameObject.Visible         = true;
                newGameObject.transform.scale = new vec4(1.0f, 1.0f, 1.0f, 1.0f);

                //bird.obj.
                MeshComponent meshComponent = new MeshComponent(boidModel);

                newGameObject.AddComponent <MeshComponent>(meshComponent);

                meshComponent.Dispose();

                newGameObject.AddScript("FlockingAgent");

                m_boids.Add(newGameObject);
            }
        }
Ejemplo n.º 5
0
        public static GameObject CreateTysonGO(ContentManager manager, GraphicsDevice gd, PlayerScript playerScript)
        {
            if (tysonSprite == null)
            {
                tysonSprite = manager.Load <Texture2D>("Characters/MikeTyson");
            }

            GameObject tyson = new GameObject();

            tyson.AddTransform();
            tyson.AddAnimation(tysonSprite, new Vector2(60f, 119f));
            tyson.Animation.AddAnimation("Idle", 0, 4);
            tyson.Animation.AddAnimation("Die", 1, 3, false);
            tyson.Animation.Play("Idle");
            tyson.AddRenderer(gd, SpriteTransparency.Transparent);
            tyson.AddTrigger(new Vector2(80f, 119f));
            tyson.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            ShankTargetScript tysonScript = new ShankTargetScript(tyson, playerScript);

            tyson.AddScript(tysonScript);
            tyson.Trigger.OnEnter += new FarseerPhysics.Dynamics.OnCollisionEventHandler(tysonScript.OnEnter);
            tyson.Trigger.OnStay  += new FarseerPhysics.Dynamics.OnSeparationEventHandler(tysonScript.OnStay);

            return(tyson);
        }
 public override void OnSetup()
 {
     base.OnSetup();
     //TestMeshRenderer = new MeshRenderer(new Mesh("FirstSpaceShip2.obj"));
     //TestMeshRenderer2 = new MeshRenderer(new Mesh("FirstSpaceShip2.obj"));
     TestMeshRenderer = new MeshRenderer(Test);
     gameObject.AddScript(TestMeshRenderer);
 }
Ejemplo n.º 7
0
            /// <summary>
            /// Создание ракеты.
            /// </summary>
            /// <returns>Созданная ракета.</returns>
            public GameObject Build()
            {
                GameObject rocket = new GameObject(rocketTex, Vector2.Zero,
                                                   new Vector2(rocketTex.Width / 2, rocketTex.Height / 2),
                                                   Vector2.One, 0);

                rocket.AddScript(new RocketHitScript(scene, explosionAnim));
                rocket.AddComponent("rocket", this.rocket);
                return(rocket);
            }
        /// <summary>
        /// Обновление состояния скрипта.
        /// </summary>
        /// <param name="delta">Время, прошедшее с предыдущего кадра.</param>
        public override void Update(TimeSpan delta)
        {
            controlledObject.UpdateColliderToTexture();
            Transform transform = controlledObject.GetComponent("transform") as Transform;

            if (CheckBounds(transform))
            {
                scene.RemoveGameObject(controlledObject);
                return;
            }

            GameObject[] objects      = scene.GetGameObjects().ToArray();
            Collider     thisCollider = controlledObject.GetComponent("collider") as Collider;

            foreach (GameObject gameObject in objects)
            {
                Collider collider = gameObject.GetComponent("collider") as Collider;
                if (gameObject != controlledObject &&
                    collider != null &&
                    collider.CheckCollision(thisCollider))
                {
                    GameObject explosion = new GameObject(new Animation2D(explosionAnim),
                                                          new OpenTK.Vector2(transform.Position.X + transform.RotationPoint.X *
                                                                             transform.Scale.X - explosionAnim.Width / 2 * transform.Scale.X,
                                                                             transform.Position.Y + transform.RotationPoint.Y *
                                                                             transform.Scale.Y - explosionAnim.Height / 2 * transform.Scale.Y),
                                                          new OpenTK.Vector2(explosionAnim.Width / 2, explosionAnim.Height / 2),
                                                          transform.Scale, 0);

                    explosion.AddScript(new AutoDestroyScript(scene, explosionAnim.AnimationTime));
                    scene.AddGameObject(explosion);
                    scene.RemoveGameObject(controlledObject);

                    if (gameObject.GetComponent("rocket") is Rocket)
                    {
                        scene.RemoveGameObject(gameObject);
                        return;
                    }

                    Rocket rocket = controlledObject.GetComponent("rocket") as Rocket;
                    Health health = gameObject.GetComponent("health") as Health;
                    if (health != null)
                    {
                        health.Damage(rocket.Damage);
                        if (!health.IsAlive())
                        {
                            scene.RemoveGameObject(gameObject);
                        }
                        return;
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public static GameObject CreateDialogueAreaGO(List <string> dialogue, List <string> character, Vector2 size)
        {
            GameObject dialogueGO = new GameObject();

            dialogueGO.AddTransform();
            dialogueGO.AddTrigger(size);
            DialogueBoxScript script = new DialogueBoxScript(dialogueGO, dialogue, character);

            dialogueGO.AddScript(script);
            dialogueGO.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            dialogueGO.Trigger.OnEnter     += new FarseerPhysics.Dynamics.OnCollisionEventHandler(script.OnEnter);
            dialogueGO.Trigger.OnExit      += new FarseerPhysics.Dynamics.OnSeparationEventHandler(script.OnExit);

            return(dialogueGO);
        }
        public static GameObject CreateTeleporterGO(ContentManager content, PlayerScript player, Vector2 destination, bool toVents)
        {
            GameObject teleporter = new GameObject();

            teleporter.AddTransform();
            teleporter.AddAudio();
            teleporter.Audio.AddSFX("Enter", content.Load <SoundEffect>("Sounds/Enter"));
            TeleporterScript tpScript = new TeleporterScript(teleporter, player, destination, toVents);

            teleporter.AddScript(tpScript);
            teleporter.AddTrigger(new Vector2(16f, 16f));
            teleporter.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            teleporter.Trigger.OnEnter     += new FarseerPhysics.Dynamics.OnCollisionEventHandler(tpScript.OnEnter);

            return(teleporter);
        }
Ejemplo n.º 11
0
        public CharacterScript(MovementScript movementScript, LookScript lookScript, WeaponScript weaponScript, AiScript aiScript, GameObject weapon, InvincibleScript invincibleScript, GameObject parent)
        {
            _weapon = weapon;

            parent.AddScript(this);
            _parent.AddScript(movementScript);
            _parent.AddScript(lookScript);
            _parent.AddScript(weaponScript);
            if (invincibleScript != null)
            {
                _parent.AddScript(invincibleScript);
            }
            if (aiScript != null)
            {
                _parent.AddScript(aiScript);
            }

            weapon.AddComponent(weaponScript.GetTextureComponent());
        }
        public static GameObject CreateGuardGO(ContentManager content, GraphicsDevice gd, List <Vector2> points)
        {
            if (guardTexture == null)
            {
                guardTexture = content.Load <Texture2D>("Guard");
            }

            GameObject guard = new GameObject();

            guard.AddTransform();
            guard.AddAnimation(guardTexture, new Vector2(20f, 34f));
            guard.AddScript(new GuardScript(guard, points));
            guard.Animation.AddAnimation("Idle", 1, 1);
            guard.Animation.AddAnimation("Run", 0, 4);
            guard.AddDynamicRigidBody(new Vector2(20f, 34f));
            guard.Animation.Play("Idle");
            guard.AddRenderer(gd, SpriteTransparency.Transparent);

            return(guard);
        }
        public static GameObject CreateGuardGO(ContentManager content, GraphicsDevice gd, List<Vector2> points)
        {
            if (guardTexture == null)
            {
                guardTexture = content.Load<Texture2D>("Guard");
            }

            GameObject guard = new GameObject();

            guard.AddTransform();
            guard.AddAnimation(guardTexture, new Vector2(20f, 34f));
            guard.AddScript(new GuardScript(guard, points));
            guard.Animation.AddAnimation("Idle", 1, 1);
            guard.Animation.AddAnimation("Run", 0, 4);
            guard.AddDynamicRigidBody(new Vector2(20f, 34f));
            guard.Animation.Play("Idle");
            guard.AddRenderer(gd, SpriteTransparency.Transparent);

            return guard;
        }
        public static GameObject CreateShankGO(ContentManager content, GraphicsDevice gd, PlayerScript playerScript)
        {
            if (shankTexture == null)
            {
                shankTexture = content.Load<Texture2D>("Pickups/Shank");
            }

            GameObject shank = new GameObject();

            shank.AddTransform();
            shank.AddStaticSprite(shankTexture);
            shank.AddRenderer(gd, SpriteTransparency.Transparent);
            shank.AddDynamicRigidBody(new Vector2(10f, 12f));
            shank.RigidBody.Body.CollidesWith = CollisionCats.WorldCategory;
            ShankScript script = new ShankScript(shank, playerScript);
            shank.AddScript(new ShankScript (shank, playerScript));
            shank.AddTrigger(new Vector2(10f, 12f));
            shank.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            shank.Trigger.OnEnter += new FarseerPhysics.Dynamics.OnCollisionEventHandler(script.OnEnter);

            return shank;
        }
        public static GameObject CreateShankGO(ContentManager content, GraphicsDevice gd, PlayerScript playerScript)
        {
            if (shankTexture == null)
            {
                shankTexture = content.Load <Texture2D>("Pickups/Shank");
            }

            GameObject shank = new GameObject();

            shank.AddTransform();
            shank.AddStaticSprite(shankTexture);
            shank.AddRenderer(gd, SpriteTransparency.Transparent);
            shank.AddDynamicRigidBody(new Vector2(10f, 12f));
            shank.RigidBody.Body.CollidesWith = CollisionCats.WorldCategory;
            ShankScript script = new ShankScript(shank, playerScript);

            shank.AddScript(new ShankScript(shank, playerScript));
            shank.AddTrigger(new Vector2(10f, 12f));
            shank.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            shank.Trigger.OnEnter     += new FarseerPhysics.Dynamics.OnCollisionEventHandler(script.OnEnter);

            return(shank);
        }
        public static GameObject CreateTysonGO(ContentManager manager, GraphicsDevice gd, PlayerScript playerScript)
        {
            if (tysonSprite == null)
            {
                tysonSprite = manager.Load<Texture2D>("Characters/MikeTyson");
            }

            GameObject tyson = new GameObject();

            tyson.AddTransform();
            tyson.AddAnimation(tysonSprite, new Vector2(60f, 119f));
            tyson.Animation.AddAnimation("Idle", 0, 4);
            tyson.Animation.AddAnimation("Die", 1, 3, false);
            tyson.Animation.Play("Idle");
            tyson.AddRenderer(gd, SpriteTransparency.Transparent);
            tyson.AddTrigger(new Vector2(80f, 119f));
            tyson.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            ShankTargetScript tysonScript = new ShankTargetScript(tyson, playerScript);
            tyson.AddScript(tysonScript);
            tyson.Trigger.OnEnter += new FarseerPhysics.Dynamics.OnCollisionEventHandler(tysonScript.OnEnter);
            tyson.Trigger.OnStay += new FarseerPhysics.Dynamics.OnSeparationEventHandler(tysonScript.OnStay);

            return tyson;
        }
        public static GameObject CreateLaserGO(ContentManager content, GraphicsDevice gd)
        {
            if (laserSprite == null)
            {
                laserSprite = content.Load <Texture2D>("Obstacles/Laser");
            }

            GameObject laser = new GameObject();

            laser.AddTransform();
            laser.AddAnimation(laserSprite, new Vector2(32f, 16f));
            laser.Animation.AddAnimation("Off", 0, 1);
            laser.Animation.AddAnimation("On", 1, 1);
            laser.Animation.Play("On");
            laser.AddRenderer(gd, SpriteTransparency.Transparent);
            laser.AddTrigger(new Vector2(32f, 16f));
            laser.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            LaserScript laserScript = new LaserScript(laser);

            laser.AddScript(laserScript);
            laser.Trigger.OnEnter += new FarseerPhysics.Dynamics.OnCollisionEventHandler(laserScript.TriggerEnter);

            return(laser);
        }
        public static GameObject CreateFanGO(ContentManager manager, GraphicsDevice gd)
        {
            if (fanSprite == null)
            {
                fanSprite = manager.Load <Texture2D>("Obstacles/Fan");
            }

            GameObject fan = new GameObject();

            fan.AddTransform();
            fan.AddAnimation(fanSprite, new Vector2(62f, 58f));
            fan.Animation.AddAnimation("Idle", 0, 1);
            fan.Animation.AddAnimation("Spin", 0, 2);
            fan.Animation.Play("Spin");
            fan.AddRenderer(gd, SpriteTransparency.Opaque);
            fan.AddTrigger(new Vector2(62f, 58f));
            fan.Trigger.CollidesWith = CollisionCats.PlayerCategory;
            FanScript fanScript = new FanScript(fan);

            fan.AddScript(fanScript);
            fan.Trigger.OnEnter += new FarseerPhysics.Dynamics.OnCollisionEventHandler(fanScript.TriggerEnter);

            return(fan);
        }
Ejemplo n.º 19
0
        static void Main(string[] args)
        {
            Game game = new Game(70, 31);

            Scene scene1 = new Scene(game, "main");

            string levelTempate = "";

            levelTempate += "##################################################";
            levelTempate += "#                                                #";
            levelTempate += "#                                                #";
            levelTempate += "#######################################          #";
            levelTempate += "#                                     #          #";
            levelTempate += "#                #                    #          #";
            levelTempate += "#                #                    #          #";
            levelTempate += "##################    ######################     #";
            levelTempate += "#                         #                      #";
            levelTempate += "#                         #                      #";
            levelTempate += "#                         #                      #";
            levelTempate += "#          #              #                      #";
            levelTempate += "#          #              #                      #";
            levelTempate += "#          #              ########               #";
            levelTempate += "#          #                                     #";
            levelTempate += "#          #######                               #";
            levelTempate += "#                #                               #";
            levelTempate += "#                #            ####################";
            levelTempate += "#                #                               #";
            levelTempate += "#                #                               #";
            levelTempate += "#                #                               #";
            levelTempate += "#                #                               #";
            levelTempate += "##########################        #########      #";
            levelTempate += "#                        #        #              #";
            levelTempate += "#                        #        #              #";
            levelTempate += "#                        #        #              #";
            levelTempate += "#                        #        #              #";
            levelTempate += "#         ################        #              #";
            levelTempate += "#                                 #              #";
            levelTempate += "##################################################";

            Level level = new Level(scene1, 50, 30, levelTempate);

            int playerWinScore = 5;

            scene1.AddLevel(level);

            scene1.AddPlayer(new Player(scene1, game.Width / 2, game.Height / 2, new char[] { 'X' }, playerWinScore, "player"));

            level.SpawnLevelObjects(playerWinScore, new char[] { '*' }, "bonus");
            level.SpawnEnemyObjects(15, new char[] { '@' }, "enemy");

            scene1.AddText($"Score: 0", "player_score", game.Width, 0, 1);
            scene1.AddText($"♥♥♥", "player_health", game.Width, 1, 1);

            Scene scene2 = new Scene(game, "game_over");

            scene2.AddText($"GAME OVER", "game_over", game.Width / 2 - 5, game.Height / 2 - 1, 0);

            scene2.AddText($"EXIT", "game_exit", game.Width / 2 - 3, game.Height / 2 + 3, 0);

            GameObject cursorScene2 = new GameObject(scene2, game.Width / 2 - 5, game.Height / 2 + 3, new char[] { '>' }, "cursor");

            cursorScene2.AddScript(self =>
            {
                ConsoleKey?key = InputController.PressedKey();
                if (key == ConsoleKey.Enter)
                {
                    game.IsRunning = false;
                }
            });
            scene2.AddObject(cursorScene2);

            Scene scene3 = new Scene(game, "start");

            scene3.AddText($"START GAME", "game_start", game.Width / 2 - 10, game.Height / 2 - 1, 0);
            scene3.AddText($"EXIT", "game_exit", game.Width / 2 - 10, game.Height / 2, 0);

            GameObject cursorScene3 = new GameObject(scene3, game.Width / 2 - 12, game.Height / 2 - 1, new char[] { '>' }, "cursor");

            cursorScene3.AddScript(self =>
            {
                ConsoleKey?key = InputController.PressedKey();
                if (key == ConsoleKey.DownArrow)
                {
                    if (self.Y < game.Height / 2)
                    {
                        self.Y++;
                    }
                }
                if (key == ConsoleKey.UpArrow)
                {
                    if (self.Y > game.Height / 2 - 1)
                    {
                        self.Y--;
                    }
                }
                if (key == ConsoleKey.Enter)
                {
                    if (self.Y == game.Height / 2 - 1)
                    {
                        game.SetScene("main");
                    }
                    else if (self.Y == game.Height / 2)
                    {
                        game.IsRunning = false;
                    }
                }
            });
            scene3.AddObject(cursorScene3);

            Scene scene4 = new Scene(game, "win");

            scene4.AddText($"YOU WIN", "win", game.Width / 2 - 5, game.Height / 2 - 1, 0);

            scene4.AddText($"EXIT", "game_exit", game.Width / 2 - 3, game.Height / 2 + 3, 0);

            scene4.AddObject(cursorScene2);

            game.AddScene(scene1);
            game.AddScene(scene2);
            game.AddScene(scene3);
            game.AddScene(scene4);

            game.SetScene("start");

            game.IsRunning = true;

            game.Start();
        }
        public static GameObject CreatePlayerGO(ContentManager content, GraphicsDevice gd)
        {
            if (characterSprite == null)
            {
                characterSprite = content.Load<Texture2D>("Characters/MainCharacter");
            }

            GameObject playerGO = new GameObject();
            playerGO.AddTransform();
            playerGO.AddAudio();
            playerGO.Audio.AddSFX("Pickup", content.Load<SoundEffect>("Sounds/PlayerSounds/Pickup"));
            playerGO.Audio.AddSFX("Shank", content.Load<SoundEffect>("Sounds/PlayerSounds/Shank"));
            playerGO.AddAnimation(characterSprite, new Vector2(28f, 30f));
            playerGO.Animation.AddAnimation("Idle", 0, 1);
            playerGO.Animation.AddAnimation("Run", 0, 4);
            playerGO.Animation.AddAnimation("Hide", 2, 1);
            playerGO.Animation.AddAnimation("Stab", 3, 1);
            playerGO.Animation.AddAnimation("Stealth", 1, 4);
            playerGO.Animation.AddAnimation("Elevator", 5, 1);
            playerGO.Animation.AddAnimation("VentIdle", 4, 1);
            playerGO.Animation.AddAnimation("VentCrawl", 4, 4);
            playerGO.AddRenderer(gd, SpriteTransparency.Transparent);
            playerGO.AddDynamicRigidBody(new Vector2(28f, 30f));
            playerGO.RigidBody.CollisionCategory = CollisionCats.PlayerCategory;
            playerGO.AddScript(new PlayerScript(playerGO));

            return playerGO;
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;

            RigidBody.DebugLoadContent(GraphicsDevice, Content);
            DialogueRenderer.Instance.Initialize(Content, GraphicsDevice);

            manager = new GameObjectManager();

            GameObject camera = new GameObject();
            camera.AddTransform();
            //camera.Transform.Parent = player.Transform;
            camera.Transform.Position = new Vector2(0f, 30f);
            camera.Transform.Z = 80f;
            camera.AddCamera(GraphicsDevice.Viewport, true);
            camera.AddScript(new CameraScript(camera));
            manager.AddGameObject(camera);

            GameObject splash = SplashScript.CreateSplashGO(Content, GraphicsDevice);
            splash.Transform.Translate(new Vector3(-3000f, 0f, 10));
            manager.AddGameObject(splash);

            //GameObject cameraBounds = GameObject.CreateStaticGO(GraphicsDevice, Content.Load<Texture2D>("DebugCameraBounds"), SpriteTransparency.Transparent);
            //cameraBounds.Transform.Z = 0f;
            //cameraBounds.Transform.Parent = camera.Transform;
            //manager.AddGameObject(cameraBounds);

            // Main area
            GameObject mainLevel = WorldGen.CreateWorldGO(GraphicsDevice, Content, "Levels/LevelMainMid", "Levels/LevelMain");
            mainLevel.RigidBody.Body.Friction = 4f;
            manager.AddGameObject(mainLevel);
            GameObject mainLevelBack = GameObject.CreateStaticGO(GraphicsDevice, Content.Load<Texture2D>("Levels/LevelMainBack"), SpriteTransparency.Opaque);
            mainLevelBack.Transform.Z -= 25f;
            manager.AddGameObject(mainLevelBack);
            GameObject mainLevelFront = GameObject.CreateStaticGO(GraphicsDevice, Content.Load<Texture2D>("Levels/LevelMainFront"), SpriteTransparency.Transparent);
            mainLevelFront.Transform.Z = 5f;
            manager.AddGameObject(mainLevelFront);

            // Vent area
            GameObject vents = WorldGen.CreateWorldGO(GraphicsDevice, Content, "Levels/VentsMid", "Levels/Vents");
            vents.RigidBody.Body.Friction = 0f;
            vents.Transform.Position = new Vector2(2000f, 0f);
            manager.AddGameObject(vents);
            GameObject ventsTop1 = GameObject.CreateStaticGO(GraphicsDevice, Content.Load<Texture2D>("Levels/VentsTop1"), SpriteTransparency.Transparent);
            ventsTop1.Transform.Translate(new Vector3(2000f, 0f, 40f));
            manager.AddGameObject(ventsTop1);
            GameObject ventsTop2 = GameObject.CreateStaticGO(GraphicsDevice, Content.Load<Texture2D>("Levels/VentsTop2"), SpriteTransparency.Transparent);
            ventsTop2.Transform.Translate(new Vector3(2000f, 0f, 30f));
            manager.AddGameObject(ventsTop2);

            // Fans
            GameObject fan1 = FanScript.CreateFanGO(Content, GraphicsDevice);
            manager.AddGameObject(fan1);
            fan1.Transform.Translate(new Vector3(1855f, 180f, 0f));
            GameObject fan2 = FanScript.CreateFanGO(Content, GraphicsDevice);
            manager.AddGameObject(fan2);
            fan2.Transform.Translate(new Vector3(2272f, 256f, 0f));
            GameObject fan3 = FanScript.CreateFanGO(Content, GraphicsDevice);
            manager.AddGameObject(fan3);
            fan3.Transform.Translate(new Vector3(2016f, -208f, 0f));

            GameObject player = PlayerScript.CreatePlayerGO(Content, GraphicsDevice);
            player.Transform.Translate(new Vector3(-200f, -40f, 1f));
            //player.Transform.Translate(new Vector3(2385f, -420f, 1f));
            manager.AddGameObject(player);
            camera.Transform.Parent = player.Transform;

            PlayerScript playerScript = player.GetComponent<PlayerScript>();
            GameObject teleporter1 = TeleporterScript.CreateTeleporterGO(Content, playerScript, new Vector2(1604f, -332f), true);
            teleporter1.Transform.Translate(new Vector2(250f, -230f));
            manager.AddGameObject(teleporter1);
            GameObject teleporter2 = TeleporterScript.CreateTeleporterGO(Content, playerScript, new Vector2(-400f, 140f), false);
            teleporter2.Transform.Translate(new Vector2(1746f, 396f));
            manager.AddGameObject(teleporter2);
            GameObject teleporter3 = TeleporterScript.CreateTeleporterGO(Content, playerScript, new Vector2(2140f, 120f), true);
            teleporter3.Transform.Translate(new Vector2(330f, 140f));
            manager.AddGameObject(teleporter3);
            GameObject teleporter4 = TeleporterScript.CreateTeleporterGO(Content, playerScript, new Vector2(600f, 140f), false);
            teleporter4.Transform.Translate(new Vector2(2450f, 340f));
            manager.AddGameObject(teleporter4);
            GameObject teleporter5 = TeleporterScript.CreateTeleporterGO(Content, playerScript, new Vector2(1604f, -332f), true);
            teleporter5.Transform.Translate(new Vector2(800f, 140f));
            manager.AddGameObject(teleporter5);
            GameObject teleporter6 = TeleporterScript.CreateTeleporterGO(Content, playerScript, new Vector2(600f, -230f), false);
            teleporter6.Transform.Translate(new Vector2(2385f, -420f));
            manager.AddGameObject(teleporter6);

            GameObject tyson = ShankTargetScript.CreateTysonGO(Content, GraphicsDevice, playerScript);
            tyson.Transform.Translate(new Vector2(775f, 180f));
            manager.AddGameObject(tyson);

            //GameObject laser = LaserScript.CreateLaserGO(Content, GraphicsDevice);
            //manager.AddGameObject(laser);
            //laser.Transform.Translate(new Vector3(400f, 30f, 0f));

            //List<Vector2> patrolPoints = GuardScript.CreatePatrolPoints(200f, -50f, 300f, -50f, 400f, -50f, 500f, -50f);
            //GameObject guard = GuardScript.CreateGuardGO(Content, GraphicsDevice, patrolPoints);
            //guard.Transform.Translate(new Vector2(-300f, -50f));
            //manager.AddGameObject(guard);

            GameObject shank = ShankScript.CreateShankGO(Content, GraphicsDevice, (PlayerScript)player.GetComponent<PlayerScript>());
            manager.AddGameObject(shank);

            GameObject superStar = new GameObject();
            superStar.AddTransform();
            superStar.AddAudio();
            superStar.Audio.AddMusic(Content.Load<Song>("Sounds/Music/GuileTheme"));
            superStar.Transform.Translate(new Vector2(692f, -200f));
            superStar.AddAnimation(Content.Load<Texture2D>("Pickups/Superstar"), new Vector2(14f, 20f));
            superStar.Animation.AddAnimation("Idle", 0, 4);
            superStar.Animation.Play("Idle");
            superStar.AddRenderer(GraphicsDevice, SpriteTransparency.Transparent);
            superStar.AddTrigger(new Vector2(100f, 100f));
            superStar.AddScript(new EndScript(superStar));
            manager.AddGameObject(superStar);

            List<string> kkDi1 = new List<string>(11);
            kkDi1.Add("Who's out there?");
            kkDi1.Add("Just a man looking for his place in this cesspool.");
            kkDi1.Add("Well, this ain't no zoo so unless you gots anything for me then scram.");
            kkDi1.Add("What could an oversized turtle want in prison?");
            kkDi1.Add("Turtle!? When I have my koopas catch yo -");
            kkDi1.Add("You're minions couldn't catch a fat 3 foot tall plumber, even if they had wings.");
            kkDi1.Add("If my flying koopas in here hadn't had their wings pulled off by that damn Donkey Kong I'd have you before getting out of this cell.");
            kkDi1.Add("Ripping their wings off? Why'd he do that?");
            kkDi1.Add("That damn monkey was trying to muscle in on my woman. After Pauline disappeared he went after my princess before coming here. I put a hit on him but the damn monkey's too tough for my troopas. But when I'm out of this cell not only is he a dead chimp but I'll be busting out of here real soon.");
            kkDi1.Add("How do you intend on escaping the prison?");
            kkDi1.Add("None of your business. But if you bring me that primates head I might let you in on the plan.");
            List<string> kkCh1 = new List<string>(11);
            kkCh1.Add("Bowser");
            kkCh1.Add("Player");
            kkCh1.Add("Bowser");
            kkCh1.Add("Player");
            kkCh1.Add("Bowser");
            kkCh1.Add("Player");
            kkCh1.Add("Bowser");
            kkCh1.Add("Player");
            kkCh1.Add("Bowser");
            kkCh1.Add("Player");
            kkCh1.Add("Bowser");
            GameObject kkDGO1 = DialogueBoxScript.CreateDialogueAreaGO(kkDi1, kkCh1, new Vector2(96f, 64f));
            kkDGO1.Transform.Position = new Vector2(-415f, -220f);
            manager.AddGameObject(kkDGO1);

            List<string> gDi1 = new List<string>(11);
            gDi1.Add("Who dares to disturb me?");
            gDi1.Add("What exactly am I disturbing you from? You're alone in an empty cell.");
            gDi1.Add("Insolence! Once I escape from this cell I'll get you and Mike Tyson.");
            gDi1.Add("Mike Tyson? What's he got to do with you?");
            gDi1.Add("That Neanderthal has been trying to eat my ear.");
            gDi1.Add("Typical.");
            gDi1.Add("Once he's out of the way I'll be making my escape from this abysmal pit.");
            gDi1.Add("You know of a way to get out of this place?");
            gDi1.Add("Indeed. Once Mike Tyson is out of my way I'll make my glorious return to Hyrule.");
            gDi1.Add("How do you intend on escaping?");
            gDi1.Add("Lowly creature! If you do not have anything to offer me then why would I tell you? Kill Mike Tyson and I may divulge my plans to you.");
            List<string> gCh1 = new List<string>(11);
            gCh1.Add("Ganon");
            gCh1.Add("Player");
            gCh1.Add("Ganon");
            gCh1.Add("Player");
            gCh1.Add("Ganon");
            gCh1.Add("Player");
            gCh1.Add("Ganon");
            gCh1.Add("Player");
            gCh1.Add("Ganon");
            gCh1.Add("Player");
            gCh1.Add("Ganon");
            GameObject gDGO1 = DialogueBoxScript.CreateDialogueAreaGO(gDi1, gCh1, new Vector2(96f, 64f));
            gDGO1.Transform.Position = new Vector2(-190f, -220f);
            manager.AddGameObject(gDGO1);

            List<string> mbDi1 = new List<string>(14);
            mbDi1.Add("What the hell am I looking at?");
            mbDi1.Add("This one may be useful to me.");
            mbDi1.Add("I'm hearing voices in my head. That plumber hit me harder than I thought.");
            mbDi1.Add("I am Mother Brain, leader of the space pirates.");
            mbDi1.Add("I'm not really comfortable with people being in my head.");
            mbDi1.Add("My apologies, I do not have vocal cords or orifice to amplify sound vibrations in or-");
            mbDi1.Add("Please stop talking, it's hurting my brain.");
            mbDi1.Add("I only wish to make a proposition.");
            mbDi1.Add("Go on then?");
            mbDi1.Add("There is a man by the name of Doctor Wily who has challenged my pirates against his robot masters. I only seek his departure from this universe.");
            mbDi1.Add("You want him dead? What's in it for me?");
            mbDi1.Add("I can offer you freedom.");
            mbDi1.Add("How?");
            mbDi1.Add("Once this task is complete I will reveal the means of escape.");
            List<string> mbCh1 = new List<string>(14);
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            mbCh1.Add("Player");
            mbCh1.Add("MotherBrain");
            GameObject mbDGO1 = DialogueBoxScript.CreateDialogueAreaGO(mbDi1, mbCh1, new Vector2(96f, 64f));
            mbDGO1.Transform.Position = new Vector2(45f, -220f);
            manager.AddGameObject(mbDGO1);

            List<string> dkDi = new List<string>(7);
            dkDi.Add("oooOOOAAHH!");
            dkDi.Add("Got you now Kong.");
            dkDi.Add("What is the meaning of this?");
            dkDi.Add("The monkey can talk?");
            dkDi.Add("Sir, this is an outrageous breach of my personal space. And, I'll have you know that I am of the Hominoidea family, therefore, I am an ape, not a monkey.");
            dkDi.Add("King Koopa sends his regards.");
            dkDi.Add("“Have at thee.");
            List<string> dkCh = new List<string>(7);
            dkCh.Add("DK");
            dkCh.Add("Player");
            dkCh.Add("DK");
            dkCh.Add("Player");
            dkCh.Add("DK");
            dkCh.Add("Player");
            dkCh.Add("DK");
            GameObject dkDGO = DialogueBoxScript.CreateDialogueAreaGO(dkDi, dkCh, new Vector2(240f, 112f));
            dkDGO.Transform.Position = new Vector2(700f, 170f);
            dkDGO.Trigger.Enabled = false;
            manager.AddGameObject(dkDGO);

            List<string> mtDi = new List<string>(5);
            mtDi.Add("Hey, what's going on here?");
            mtDi.Add("Your time has come champ.");
            mtDi.Add("Quit trying to scrutinize with my brain. I'm going to kick your ass.");
            mtDi.Add("You couldn't beat that punk ass Little Mac who was half your size.");
            mtDi.Add("I'ma eat your children son.");
            List<string> mtCh = new List<string>(5);
            mtCh.Add("Tyson");
            mtCh.Add("Player");
            mtCh.Add("Tyson");
            mtCh.Add("Player");
            mtCh.Add("Tyson");
            GameObject mtDGO = DialogueBoxScript.CreateDialogueAreaGO(mtDi, mtCh, new Vector2(50f, 112f));
            mtDGO.Transform.Position = new Vector2(620f, 170f);
            manager.AddGameObject(mtDGO);

            List<string> wDi = new List<string>(4);
            wDi.Add("What's going on here?");
            wDi.Add("Dr. Wily, your license's been revoked.");
            wDi.Add("License? I'm not a medical doctor.");
            wDi.Add("Shut it and die egghead.");
            List<string> wCh = new List<string>();
            wCh.Add("Wily");
            wCh.Add("Player");
            wCh.Add("Wily");
            wCh.Add("Player");
            GameObject wDGO = DialogueBoxScript.CreateDialogueAreaGO(wDi, wCh, new Vector2(240f, 112f));
            wDGO.Transform.Position = new Vector2(700f, 170f);
            wDGO.Trigger.Enabled = false;
            manager.AddGameObject(wDGO);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Совершить выстрел ракетой.
        /// </summary>
        protected void Shoot()
        {
            Inventory  inventory = controlledObject.GetComponent("inventory") as Inventory;
            GameObject rocket    = inventory.GetRocket();

            if (rocket == null)
            {
                return;
            }

            Transform transform = controlledObject.GetComponent("transform") as Transform;
            Texture2D texture   = controlledObject.GetComponent("texture") as Texture2D;
            Texture2D rocketTex = rocket.GetComponent("texture") as Texture2D;

            float x = rocketTex.Width * transform.Scale.X;
            float y = rocketTex.Height * transform.Scale.Y;

            Vector2 spawnPoint = new Vector2(
                -texture.Width * transform.Scale.X,
                -texture.Height * transform.Scale.Y);

            spawnPoint = new Vector2(
                (float)(Math.Cos(transform.Rotation *
                                 Math.Sign(transform.Scale.X)) * spawnPoint.X -
                        Math.Sin(transform.Rotation *
                                 Math.Sign(transform.Scale.X)) * spawnPoint.Y),
                (float)(Math.Sin(transform.Rotation *
                                 Math.Sign(transform.Scale.X)) * spawnPoint.X +
                        Math.Cos(transform.Rotation *
                                 Math.Sign(transform.Scale.X)) * spawnPoint.Y));

            Vector2 rocketPoint = new Vector2(
                (float)(Math.Cos(transform.Rotation *
                                 -Math.Sign(transform.Scale.X)) * -x -
                        Math.Sin(transform.Rotation *
                                 -Math.Sign(transform.Scale.X)) * -y),
                (float)(Math.Sin(transform.Rotation *
                                 -Math.Sign(transform.Scale.X)) * -x +
                        Math.Cos(transform.Rotation *
                                 -Math.Sign(transform.Scale.X)) * -y));

            spawnPoint.Y += texture.Height * transform.Scale.Y / 2;
            spawnPoint.X -= rocketPoint.X / 2;
            spawnPoint.Y -= rocketPoint.Y / 2;


            Transform rocketTransform = rocket.GetComponent("transform") as Transform;

            rocketTransform.Position = transform.Position + spawnPoint;
            rocketTransform.Rotation = transform.Rotation;
            rocketTransform.Scale    = transform.Scale;

            rocket.AddScript(new PhysicScript(
                                 new Vector2((float)(-Math.Sign(transform.Scale.X) * 15 * Math.Cos(transform.Rotation)),
                                             (float)(-15 * Math.Sin(transform.Rotation))),
                                 new Vector2(0, 0.2f)));

            scene.AddGameObject(rocket);

            Rocket rocketComponent = rocket.GetComponent("rocket") as Rocket;

            Cooldown   = rocketComponent.Cooldown;
            LastShoot  = 0;
            isCooldown = true;
        }