Exemplo n.º 1
0
        public async Task LoadAsync(IGame game)
        {
            _game = game;
            IGameFactory factory = game.Factory;

            _panel = await factory.UI.GetPanelAsync(_panelId, "../../Assets/Gui/DialogBox/options.bmp", 160f, 100f);

            _panel.Anchor  = new AGS.API.PointF(0.5f, 0.5f);
            _panel.Visible = false;
            _panel.AddComponent <IModalWindowComponent>();

            AGSLoadImageConfig loadConfig = new AGSLoadImageConfig(new AGS.API.Point(0, 0));

            ISlider volumeSlider = await factory.UI.GetSliderAsync("Volume Slider", _sliderFolder + "slider.bmp", _sliderFolder + "handle.bmp", 0.5f, 0f, 1f,
                                                                   loadConfig : loadConfig);

            volumeSlider.X = 120f;
            volumeSlider.Y = 10f;
            volumeSlider.HandleGraphics.Anchor = new AGS.API.PointF(0.5f, 0.5f);
            volumeSlider.TreeNode.SetParent(_panel.TreeNode);
            volumeSlider.OnValueChanged(onVolumeChanged, _game);

            ILabel volumeLabel = factory.UI.GetLabel("Volume Label", "Volume", 50f, 30f, 120f, 85f, _textConfig);

            volumeLabel.Anchor = new AGS.API.PointF(0.5f, 0f);
            volumeLabel.TreeNode.SetParent(_panel.TreeNode);

            ISlider speedSlider = await factory.UI.GetSliderAsync("Speed Slider", _sliderFolder + "slider.bmp", _sliderFolder + "handle.bmp", 100f, 1f, 200f,
                                                                  loadConfig : loadConfig);

            speedSlider.X = 180f;
            speedSlider.Y = 10f;
            speedSlider.HandleGraphics.Anchor = new AGS.API.PointF(0.5f, 0.5f);
            speedSlider.TreeNode.SetParent(_panel.TreeNode);
            speedSlider.OnValueChanged(onSpeedChanged, _game);

            ILabel speedLabel = factory.UI.GetLabel("Speed Label", "Speed", 50f, 30f, 180f, 85f, _textConfig);

            speedLabel.Anchor = new AGS.API.PointF(0.5f, 0f);
            speedLabel.TreeNode.SetParent(_panel.TreeNode);

            _game.Events.OnSavedGameLoad.Subscribe((sender, args) => findPanel());

#if __IOS__
            const int top  = 85;
            const int step = 25;
#else
            const int top  = 95;
            const int step = 20;
#endif
            await loadButton("Resume", top, Hide);
            await loadButton("Restart", top - step, restart);
            await loadButton("Load", top - step * 2, load);
            await loadButton("Save", top - step * 3, save);

#if !__IOS__ //IOS does not allow for a quit button in its guidelines
            await loadButton("Quit", top - step * 4, quit);
#endif
        }
Exemplo n.º 2
0
        public async Task LoadAsync(IGame game)
        {
            _game = game;
            IGameFactory factory = game.Factory;

            _panel = await factory.UI.GetPanelAsync(_panelId, "Gui/DialogBox/options.bmp", 160f, 100f);

            _panel.Pivot   = (0.5f, 0.5f);
            _panel.Visible = false;
            _panel.AddComponent <IModalWindowComponent>();

            AGSLoadImageConfig loadConfig = new AGSLoadImageConfig(new AGS.API.Point(0, 0));

            ISlider volumeSlider = await factory.UI.GetSliderAsync("Volume Slider", _sliderFolder + "slider.bmp",
                                                                   _sliderFolder + "handle.bmp", 0.5f, 0f, 1f, _panel, loadConfig : loadConfig);

            volumeSlider.Position             = (120f, 10f);
            volumeSlider.HandleGraphics.Pivot = (0.5f, 0.5f);
            volumeSlider.OnValueChanged(onVolumeChanged, _game);

            ILabel volumeLabel = factory.UI.GetLabel("Volume Label", "Volume", 50f, 30f, 120f, 85f, _panel, _textConfig);

            volumeLabel.Pivot = (0.5f, 0f);

            ISlider speedSlider = await factory.UI.GetSliderAsync("Speed Slider", _sliderFolder + "slider.bmp",
                                                                  _sliderFolder + "handle.bmp", 100f, 1f, 200f, _panel, loadConfig : loadConfig);

            speedSlider.Position             = (180f, 10f);
            speedSlider.HandleGraphics.Pivot = (0.5f, 0.5f);
            speedSlider.OnValueChanged(onSpeedChanged, _game);

            ILabel speedLabel = factory.UI.GetLabel("Speed Label", "Speed", 50f, 30f, 180f, 85f, _panel, _textConfig);

            speedLabel.Pivot = (0.5f, 0f);

            _game.Events.OnSavedGameLoad.Subscribe(findPanel);

#if __IOS__
            const int top  = 85;
            const int step = -25;
#else
            const int top  = 95;
            const int step = -20;
#endif
            _buttonsPanel = factory.UI.GetPanel(_buttonsPanelId, (IImage)null, 15f, top, _panel);
            _buttonsPanel.AddComponent <IBoundingBoxWithChildrenComponent>();
            var layout = _buttonsPanel.AddComponent <IStackLayoutComponent>();
            layout.RelativeSpacing = 0f;
            layout.AbsoluteSpacing = step;
            layout.StartLayout();
            await loadButton("Resume", hide);
            await loadButton("Restart", restart);
            await loadButton("Load", load);
            await loadButton("Save", save);

#if !__IOS__ //IOS does not allow for a quit button in its guidelines
            await loadButton("Quit", quit);
#endif
        }
Exemplo n.º 3
0
        public async Task <ICharacter> LoadAsync(IGame game)
        {
            AGSLoadImageConfig loadConfig = new AGSLoadImageConfig(new Point(0, 0));

            var footstep = await game.Factory.Sound.LoadAudioClipAsync("Sounds/151238__owlstorm__hard-female-footstep-2.wav");

            ISoundEmitter emitter = new AGSSoundEmitter(game);

            emitter.AudioClip = footstep;

            IOutfit outfit = await game.Factory.Outfit.LoadOutfitFromFoldersAsync(_baseFolder, walkLeftFolder : "Walk/left",
                                                                                  walkDownFolder : "Walk/front", idleLeftFolder : "Idle/left", idleDownFolder : "Idle/front",
                                                                                  speakLeftFolder : "Talk", loadConfig : loadConfig);

            _character = game.Factory.Object.GetCharacter("Cris", outfit).Remember(game, c => _character = c);
            _character.SpeechConfig.TextConfig = AGSTextConfig.ChangeColor(_character.SpeechConfig.TextConfig, Colors.OrangeRed, Colors.Black, 1f);
            var approach = _character.AddComponent <IApproachComponent>();

            approach.ApproachStyle.ApproachWhenVerb["Talk"] = ApproachHotspots.WalkIfHaveWalkPoint;
            emitter.Object = _character;

            _character.AddComponent <ISaturationEffectComponent>();

            var movement = _character.AddComponent <KeyboardMovement>();

            movement.AddArrows();
            movement.AddWASD();

            //Uncomment for portrait

            /*
             * var portrait = game.Factory.Object.GetObject("CrisPortrait");
             * portrait.StartAnimation(game.Factory.Graphics.LoadAnimationFromFolder(_baseFolder + "Talk"));
             * portrait.Border = game.Factory.Graphics.Borders.SolidColor(Colors.AliceBlue, 3f, true);
             * portrait.Visible = false;
             * portrait.RenderLayer = AGSLayers.Speech;
             * portrait.IgnoreViewport = true;
             * portrait.IgnoreScalingArea = true;
             * game.State.UI.Add(portrait);
             * _character.SpeechConfig.PortraitConfig = new AGSPortraitConfig { Portrait = portrait, Positioning = PortraitPositioning.Alternating };
             */

            var speakAnimation = _character.Outfit[AGSOutfit.Speak];

            Characters.RandomAnimationDelay(speakAnimation.Left);
            Characters.RandomAnimationDelay(speakAnimation.Right);
            emitter.Assign(_character.Outfit[AGSOutfit.Walk], 1, 5);

            _character.StartAnimation(_character.Outfit[AGSOutfit.Idle].Down);
            _character.DisplayName    = "Cris";
            _character.IsPixelPerfect = true;

            Characters.Cris = _character;
            return(_character);
        }
Exemplo n.º 4
0
        public async Task LoadAsync(IGameFactory factory)
        {
            AGSLoadImageConfig loadConfig = new AGSLoadImageConfig(new AGS.API.Point(0, 0));

            Bottle = await factory.Inventory.GetInventoryItemAsync("Bottle", "../../Assets/Rooms/EmptyStreet/bottle.bmp", null, loadConfig);

            VoodooDoll = await factory.Inventory.GetInventoryItemAsync("Voodoo Doll", _baseFolder + "voodooDoll.bmp", null, loadConfig, true);

            Poster = await factory.Inventory.GetInventoryItemAsync("Poster", _baseFolder + "poster.bmp", playerStartsWithItem : true);

            Manual = await factory.Inventory.GetInventoryItemAsync("Manual", _baseFolder + "manual.bmp", null, loadConfig, true);
        }
Exemplo n.º 5
0
        public async Task <ICharacter> LoadAsync(IGame game)
        {
            _game = game;
            IGameFactory       factory    = game.Factory;
            AGSLoadImageConfig loadConfig = new AGSLoadImageConfig(new Point(0, 0));

            IOutfit outfit = await factory.Outfit.LoadOutfitFromFoldersAsync(_baseFolder,
                                                                             walkLeftFolder : "Walk/left", walkDownFolder : "Walk/down", walkRightFolder : "Walk/right", walkUpFolder : "Walk/up",
                                                                             idleLeftFolder : "Idle/left", idleDownFolder : "Idle/down", idleRightFolder : "Idle/right", idleUpFolder : "Idle/up",
                                                                             speakLeftFolder : "Talk/left", speakDownFolder : "Talk/down", speakRightFolder : "Talk/right", speakUpFolder : "Talk/up",
                                                                             loadConfig : loadConfig);

            _character = factory.Object.GetCharacter("Beman", outfit).Remember(_game, character =>
            {
                _character = character;
                subscribeEvents();
            });
            _character.SpeechConfig.TextConfig = AGSTextConfig.ChangeColor(_character.SpeechConfig.TextConfig, Colors.CornflowerBlue, Colors.Black, 1f);
            _character.SpeechConfig.TextOffset = (0f, -10f);

            //Uncomment for portrait

            /*
             * var portrait = game.Factory.Object.GetObject("BemanPortrait");
             * portrait.StartAnimation(game.Factory.Graphics.LoadAnimationFromFolder(_baseFolder + "Talk/down"));
             * portrait.Border = game.Factory.Graphics.Borders.SolidColor(Colors.AliceBlue, 3f, true);
             * portrait.Visible = false;
             * portrait.RenderLayer = AGSLayers.Speech;
             * portrait.IgnoreViewport = true;
             * portrait.IgnoreScalingArea = true;
             * game.State.UI.Add(portrait);
             * _character.SpeechConfig.PortraitConfig = new AGSPortraitConfig { Portrait = portrait, Positioning = PortraitPositioning.Alternating };
             */

            var speakAnimation = _character.Outfit[AGSOutfit.Speak];

            Characters.RandomAnimationDelay(speakAnimation.Left);
            Characters.RandomAnimationDelay(speakAnimation.Right);
            Characters.RandomAnimationDelay(speakAnimation.Down);
            Characters.RandomAnimationDelay(speakAnimation.Up);

            _character.StartAnimation(_character.Outfit[AGSOutfit.Idle].Down);
            _character.DisplayName    = "Beman";
            _character.IsPixelPerfect = true;

            Characters.Beman = _character;

            _dialogs.Load(game);
            return(_character);
        }
Exemplo n.º 6
0
        public async Task LoadAsync(IGameFactory factory)
        {
            AGSLoadImageConfig loadConfig = new AGSLoadImageConfig(new Point(0, 0));

            Bottle = await factory.Inventory.GetInventoryItemAsync("Bottle", "Rooms/EmptyStreet/bottle.bmp", null, loadConfig);

            VoodooDoll = await factory.Inventory.GetInventoryItemAsync("Voodoo Doll", _baseFolder + "voodooDoll.bmp", null, loadConfig, true);

            Poster = await factory.Inventory.GetInventoryItemAsync("Poster", _baseFolder + "poster.bmp", playerStartsWithItem : true);

            Manual = await factory.Inventory.GetInventoryItemAsync("Manual", _baseFolder + "manual.bmp", null, loadConfig, true);

            Poster.OnCombination(Manual).SubscribeToAsync(onPutPosterInManual);
        }
Exemplo n.º 7
0
        public async Task <IRoom> LoadAsync(IGame game)
        {
            _game = game;
            IGameFactory factory = game.Factory;

            _bottleEffectClip = await factory.Sound.LoadAudioClipAsync("../../Assets/Sounds/254818__kwahmah-02__rattling-glass-bottles-impact.wav");

            ILoadImageConfig loadConfig = new AGSLoadImageConfig(new AGS.API.Point(0, 0));

            _room             = factory.Room.GetRoom(_roomId, 20f, 310f, 190f, 10f);
            _room.MusicOnLoad = await factory.Sound.LoadAudioClipAsync("../../Assets/Sounds/AMemoryAway.ogg");

            _game.Events.OnSavedGameLoad.Subscribe((sender, e) => onSavedGameLoaded());

            IObject bg = factory.Object.GetObject("Empty Street BG");

            bg.Image = await factory.Graphics.LoadImageAsync(_baseFolder + "bg.png");

            _room.Background = bg;

            var           device     = AGSGame.Device;
            AGSMaskLoader maskLoader = new AGSMaskLoader(factory, new ResourceLoader(device.FileSystem, device.Assemblies), device.BitmapLoader);

            _room.Areas.Add(AGSWalkableArea.Create("EmptyStreetWalkable1", await maskLoader.LoadAsync(_baseFolder + "walkable1.png")));
            _room.Areas.Add(AGSWalkableArea.Create("EmptyStreetWalkable2", await maskLoader.LoadAsync(_baseFolder + "walkable2.png")));
            AGSScalingArea.Create(_room.Areas[0], 0.50f, 0.75f);
            AGSScalingArea.Create(_room.Areas[1], 0.75f, 0.90f);

            IObject bottleHotspot = await factory.Object.GetHotspotAsync(_baseFolder + "BottleHotspot.png", "Bottle");

            bottleHotspot.WalkPoint = new AGS.API.PointF(140f, 50f);
            _room.Objects.Add(await factory.Object.GetHotspotAsync(_baseFolder + "CurbHotspot.png", "Curb"));
            _room.Objects.Add(bottleHotspot);
            _room.Objects.Add(await factory.Object.GetHotspotAsync(_baseFolder + "GapHotspot.png", "Gap", new[] { "It's a gap!", "I wonder what's in there!" }));

            _bottle       = factory.Object.GetObject(_bottleId);
            _bottle.Image = await factory.Graphics.LoadImageAsync(_baseFolder + "bottle.bmp", loadConfig : loadConfig);

            _bottle.WalkPoint = bottleHotspot.WalkPoint;
            _bottle.X         = 185f;
            _bottle.Y         = 85f;
            _bottle.Hotspot   = "Bottle";
            _room.Objects.Add(_bottle);

            subscribeEvents();

            return(_room);
        }
Exemplo n.º 8
0
        public async Task <IRoom> LoadAsync(IGame game)
        {
            _game = game;
            IGameFactory factory = game.Factory;

            _bottleEffectClip = await factory.Sound.LoadAudioClipAsync("../../Assets/Sounds/254818__kwahmah-02__rattling-glass-bottles-impact.wav");

            ILoadImageConfig loadConfig = new AGSLoadImageConfig(new Point(0, 0));

            _room             = factory.Room.GetRoom(_roomId, 20f, 310f, 190f, 10f);
            _room.MusicOnLoad = await factory.Sound.LoadAudioClipAsync("../../Assets/Sounds/AMemoryAway.ogg");

            _game.Events.OnSavedGameLoad.Subscribe(onSavedGameLoaded);

            IObject bg = factory.Object.GetObject("Empty Street BG");

            bg.Image = await factory.Graphics.LoadImageAsync(_baseFolder + "bg.png");

            _room.Background = bg;

            var device = AGSGame.Device;

            _room.Areas.Add(await factory.Room.GetAreaAsync(_baseFolder + "walkable1.png", isWalkable: true));
            _room.Areas.Add(await factory.Room.GetAreaAsync(_baseFolder + "walkable2.png", isWalkable: true));
            factory.Room.CreateScaleArea(_room.Areas[0], 0.50f, 0.75f);
            factory.Room.CreateScaleArea(_room.Areas[1], 0.75f, 0.90f);

            IObject bottleHotspot = await factory.Object.GetHotspotAsync(_baseFolder + "BottleHotspot.png", "Bottle");

            bottleHotspot.GetComponent <IHotspotComponent>().WalkPoint = new PointF(140f, 50f);
            _room.Objects.Add(await factory.Object.GetHotspotAsync(_baseFolder + "CurbHotspot.png", "Curb"));
            _room.Objects.Add(bottleHotspot);
            _room.Objects.Add(await factory.Object.GetHotspotAsync(_baseFolder + "GapHotspot.png", "Gap", new[] { "It's a gap!", "I wonder what's in there!" }));

            _bottle       = factory.Object.GetAdventureObject(_bottleId);
            _bottle.Image = await factory.Graphics.LoadImageAsync(_baseFolder + "bottle.bmp", loadConfig : loadConfig);

            _bottle.GetComponent <IHotspotComponent>().WalkPoint = bottleHotspot.GetComponent <IHotspotComponent>().WalkPoint;
            _bottle.X           = 185f;
            _bottle.Y           = 85f;
            _bottle.DisplayName = "Bottle";
            _room.Objects.Add(_bottle);

            subscribeEvents();

            return(_room);
        }
Exemplo n.º 9
0
        public async Task <IRoom> LoadAsync(IGame game)
        {
            _game = game;
            IGameFactory factory = game.Factory;

            _bottleEffectClip = await factory.Sound.LoadAudioClipAsync("Sounds/254818__kwahmah-02__rattling-glass-bottles-impact.wav");

            ILoadImageConfig loadConfig = new AGSLoadImageConfig(new Point(0, 0));

            _room             = factory.Room.GetRoom(_roomId, 20f, 310f, 190f, 10f);
            _room.MusicOnLoad = await factory.Sound.LoadAudioClipAsync("Sounds/AMemoryAway.ogg");

            _game.Events.OnSavedGameLoad.Subscribe(onSavedGameLoaded);

            IObject bg = factory.Object.GetObject("Empty Street BG");

            bg.Image = await factory.Graphics.LoadImageAsync(_baseFolder + "bg.png");

            _room.Background = bg;

            await factory.Room.GetAreaAsync(_baseFolder + "walkable1.png", _room, isWalkable : true);

            await factory.Room.GetAreaAsync(_baseFolder + "walkable2.png", _room, isWalkable : true);

            factory.Room.CreateScaleArea(_room.Areas[0], 0.50f, 0.75f);
            factory.Room.CreateScaleArea(_room.Areas[1], 0.75f, 0.90f);

            IObject bottleHotspot = await factory.Object.GetHotspotAsync(_baseFolder + "BottleHotspot.png", "Bottle", _room);

            bottleHotspot.GetComponent <IHotspotComponent>().WalkPoint = (140f, 50f);
            await factory.Object.GetHotspotAsync(_baseFolder + "CurbHotspot.png", "Curb", _room, new[] { "I have something long and very important to say about this curb, and about how much this curb means to me!" });

            await factory.Object.GetHotspotAsync(_baseFolder + "GapHotspot.png", "Gap", _room, new[] { "It's a gap!", "I wonder what's in there!" });

            _bottle       = factory.Object.GetAdventureObject(_bottleId, _room);
            _bottle.Image = await factory.Graphics.LoadImageAsync(_baseFolder + "bottle.bmp", loadConfig : loadConfig);

            _bottle.GetComponent <IHotspotComponent>().WalkPoint = bottleHotspot.GetComponent <IHotspotComponent>().WalkPoint;
            _bottle.Position    = (185f, 85f);
            _bottle.DisplayName = "Bottle";

            subscribeEvents();

            return(_room);
        }
Exemplo n.º 10
0
 public MouseCursors()
 {
     _loadConfig = new AGSLoadImageConfig(new AGS.API.Point(0, 12));
 }