Exemplo n.º 1
0
        private void OnPlayerInteract(object source, EventArgs args)
        {
            if (MapContainer.InteractiveEntities.Count > 0)
            {
                foreach (EntityLadder ladder in MapContainer.InteractiveEntities)
                {
                    if (ladder.CollisionMask.Intersects(Player.CollisionMask) == true)
                    {
                        Player.GrabLadder(ladder);
                        return;
                    }
                }
            }
            if (MapContainer.TileSceneObjects.Count > 0)
            {
                foreach (TileEntitySceneObject obj in MapContainer.TileSceneObjects)
                {
                    if (Player.CollisionMask.Intersects(obj.CollisionMask) == true)
                    {
                        bool wasItemAdded = Player.Inventory.AddItem(obj);
                        if (wasItemAdded == true)
                        {
                            SoundEffect pickupSFX = Content.Load <SoundEffect>("Audio/SFX/Keys1");
                            pickupSFX.Play(0.75f, 0.5f, 0.5f);
                            MapContainer.RemoveTileSceneObject(obj);
                            return;
                        }
                    }
                }
            }
            if (MapContainer.TransitionHandlers.Count > 0)
            {
                foreach (TransitionHandler t in MapContainer.TransitionHandlers)
                {
                    if (t.IsInteractive == true)
                    {
                        if (t.CollisionMask.Intersects(Player.CollisionMask) == true)
                        {
                            if (t.IsKeyLocked == true)
                            {
                                foreach (InventoryItem i in Player.Inventory.Items)
                                {
                                    if (i.Item.ShortName == t.Key.ShortName && i.Quantity >= t.KeyQuantity)
                                    {
                                        SoundEffect doorOpenSFX = Content.Load <SoundEffect>("Audio/SFX/TurningKey");
                                        doorOpenSFX.Play(0.75f, 0.5f, 0.5f);

                                        Player.Move(t.TransitionPosition);
                                        MapContainer.LoadMap(t.TransitionMapID);
                                        return;
                                    }
                                }

                                SoundEffect doorLockSFX = Content.Load <SoundEffect>("Audio/SFX/lockeddoor");
                                doorLockSFX.Play(0.25f, 0.5f, 0.5f);

                                TileSceneObject doorLockIndicator = new TileSceneObject(new Animation(Content.Load <Texture2D>("GFX/Tiles/SceneObjects"), 1, 16, 16, 0f, new Vector2(32, 0)), new Vector2(t.Position.X + 8, t.Position.Y - 16), new Vector2(0, -8));
                                TileSceneObjects.Add(doorLockIndicator);

                                t.StartInteraction();
                            }
                            else if (t.IsTriggerLocked == true)
                            {
                                if (Global.DoorTriggers[t.TriggerKey] == true)
                                {
                                    SoundEffect doorOpenSFX = Content.Load <SoundEffect>("Audio/SFX/DoorOpen");
                                    doorOpenSFX.Play(0.25f, 0.5f, 0.5f);

                                    Player.Move(t.TransitionPosition);
                                    MapContainer.LoadMap(t.TransitionMapID);
                                    return;
                                }

                                SoundEffect doorLockSFX = Content.Load <SoundEffect>("Audio/SFX/lockeddoor");
                                doorLockSFX.Play(0.25f, 1.0f, 1.0f);

                                TileSceneObject doorLockIndicator = new TileSceneObject(new Animation(Content.Load <Texture2D>("GFX/Tiles/SceneObjects"), 1, 16, 16, 0f, new Vector2(32, 0)), new Vector2(t.Position.X + 8, t.Position.Y - 16), new Vector2(0, -8));
                                TileSceneObjects.Add(doorLockIndicator);

                                t.StartInteraction();
                            }
                            else
                            {
                                SoundEffect doorOpenSFX = Content.Load <SoundEffect>("Audio/SFX/DoorOpen");
                                doorOpenSFX.Play(0.25f, 0.5f, 0.5f);

                                Player.Move(t.TransitionPosition);
                                MapContainer.LoadMap(t.TransitionMapID);
                                return;
                            }
                            return;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void Update()
        {
            switch (LoadState)
            {
            case MapLoadState.Preparing:
            {
                break;
            }

            case MapLoadState.FadeIn:
            {
                break;
            }

            case MapLoadState.Loaded:
            {
                switch (Mode)
                {
                case GameMode.Normal:
                {
                    MapRenderer.Update(MapContainer.ActiveMap, Global.GameTime);
                    MapContainer.Update();

                    if (TileSceneObjects.Count > 0)
                    {
                        for (int i = TileSceneObjects.Count - 1; i >= 0; i--)
                        {
                            TileSceneObject obj = TileSceneObjects.ElementAt(i);
                            obj.Update();
                            if (obj.IsDisposable == true)
                            {
                                TileSceneObjects.RemoveAt(i);
                            }
                        }
                    }

                    foreach (TransitionHandler th in MapContainer.TransitionHandlers)
                    {
                        if (th.IsInteractive == false)
                        {
                            th.Update();
                        }
                    }

                    Player.Update();

                    if (IsCameraMobile == true)
                    {
                        AdjustCamera();
                    }

                    break;
                }

                case GameMode.Paused:
                {
                    InputManager.ProcessInputGamePad(PlayerIndex.One);
                    break;
                }

                case GameMode.Inventory:
                {
                    Player.Inventory.Update();
                    break;
                }
                }
                break;
            }

            case MapLoadState.FadeOut:
            {
                break;
            }

            case MapLoadState.Clearing:
            {
                break;
            }

            case MapLoadState.Debug:
            {
                break;
            }
            }
        }