Exemple #1
0
        private static void Main(string[] args)
        {
            using var engine = EngineBuilder.BuildEngine25D(new EngineOptions("simple 3d game", 720, 1280, false, UiResourcesHelper.PressStart2PFontPath));
            var resourceLoader = new ResourceCachedLoader();
            var player         = new MyPlayer(new Vector2(2.0f, 7.0f), new Vector2(0.3f, 0.3f), MathF.PI, 10);
            var loader         = new ResourceCachedLoader();
            var wallTexture    = Sprite.Load("./sprites/wall2.png");
            var floorTexture   = Sprite.Load("./sprites/floor2.png");
            var ceilingTexture = Sprite.Load("./sprites/ceiling2.png");


            var sword = Sword.Create(loader);
            var bow   = Bow.Create(loader);

            player.Weapons = new Weapon[] { bow, sword };

            var storage = new MapTextureStorage(ceilingTexture, wallTexture, floorTexture);
            var objects = new IMapObject[]
            {
                Lamp1.Create(new Vector2(2f, 2f)),
                Lamp1.Create(new Vector2(12f, 2f)),
                Lamp1.Create(new Vector2(2f, 7f)),
                Lamp1.Create(new Vector2(12f, 7f)),
                Lich.Create(loader, new Vector2(8.5f, 2.5f), 0)
            };
            var map = Map.FromStrings(new[]
            {
                "##############",
                "#............#",
                "#............#",
                "#....###.....#",
                "#....###.....#",
                "#....###.....#",
                "#............#",
                "#............#",
                "##############"
            }, storage.GetCellByChar);

            var level = new Scene(player, map, objects);

            while (engine.Update(level))
            {
            }
        }
Exemple #2
0
        public static void StartOnEngine(IEngine engine)
        {
            var loader           = ResourceCachedLoader.Instance;
            var darkFloorTexture = loader.GetSprite("./sprites/dark/floor.PNG");
            var darkCeilTexture  = loader.GetSprite("./sprites/dark/ceil.PNG");
            var darkWallTexture  = loader.GetSprite("./sprites/dark/wall.PNG");
            var wallTexture      = Sprite.Load("./sprites/wall2.png");
            var floorTexture     = Sprite.Load("./sprites/floor2.png");
            var ceilingTexture   = Sprite.Load("./sprites/ceiling2.png");
            var entranceTexture  = Sprite.Load("./sprites/dark/entrance.PNG");
            var doorAnimation    = loader.GetAnimation("./animations/door");
            var textureStorage   = new MapTextureStorage(
                darkFloorTexture,
                darkCeilTexture,
                darkWallTexture,
                floorTexture,
                wallTexture,
                ceilingTexture,
                entranceTexture,
                doorAnimation);

            var scene = SceneReader.ReadFromStrings(new[]
            {
                "$$$e$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
                "$P,,H$,,,,,,,,,,,,$AH,,,,,,,,,,,,,,,$#$e$############$",
                "$,,,A$,,,,,,,,,,,,$AH,,,,,,,,,,,S,,,$#......##..R...#$",
                "$M$$$$,,,,,,,,,,,,$,,,,,,,,,,,,,,,,,$#....S.##......#$",
                "$,$,,,,,,,,,,,,,,,$$$$$$$$$$$$,,,,,,$#...#.........L#$",
                "$,$,,,,,,,,,,,,,,,,,,,,,,$HM$$d$,,$$$#S.......M.....#$",
                "$,$$$$$$$$$$$$$$$$$$$$$$$$$,,,,$,,$###......##......#$",
                "$,,,,,,,R,,,,,,,,,,,,,R,,,,,,,,$,,$##..##...##......#$",
                "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,,$#...##....########$",
                "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,,$#.....M..........#$",
                "$,,,,,,,,,,,,,,S,,,,,,,,,,,,,,,,,,$#####...##########$",
                "$,,,,R,,,,,,,,,,M,,,,,,,,S,,,,,,,,$##...............#$",
                "$,,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.###.............#$",
                "$,,$$##################################.............#$",
                "$$,,$$$MM,,,,,,,,,,.................................#$",
                "$$$,,,$$$$,H$RS$$$AA####################d############$",
                "$$$$$,,S,$$$$$$$$$$$$...HH..AA....S.#..#.#....#######$",
                "$,,$$$$,,,,,$$$,R,,,d.....S...MM..............#######$",
                "$,,,,,$$$$,,,M,,,$$$$################.........#######$",
                "$,,,,,,,,$$$$$$$$,,,,,,,,,,,,,,,,,,,###########,,,,,,$",
                "$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$",
                "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$",
            }, textureStorage.GetCellByChar, MathF.PI / 2);

            // scene.AddObject(SpiderNet.Create());

            scene.AddObject(SpiderNet.Create(new Vector2(2.5f, 14.5f)));
            scene.AddObject(SpiderNet.Create(new Vector2(3.5f, 14.5f)));
            scene.AddObject(SpiderNet.Create(new Vector2(1.5f, 5.5f)));
            scene.AddObject(SpiderNet.Create(new Vector2(10.5f, 7.5f)));
            scene.AddObject(SpiderNet.Create(new Vector2(27.5f, 5.5f)));
            scene.AddObject(Mushrooms.Create(new Vector2(8.5f, 7.5f)));
            scene.AddObject(Mushrooms2.Create(new Vector2(12.5f, 7.5f)));
            scene.AddObject(Mushrooms2.Create(new Vector2(33.5f, 9.5f)));
            scene.AddObject(Lamp1.Create(new Vector2(15.5f, 7.5f)));
            scene.AddObject(Bones.Create(new Vector2(26.5f, 7.5f)));
            scene.AddObject(Bones.Create(new Vector2(26.5f, 3.5f)));
            scene.AddObject(Bones.Create(new Vector2(24.5f, 2.5f)));
            scene.AddObject(Bones.Create(new Vector2(2.5f, 10.5f)));
            scene.AddObject(Bones.Create(new Vector2(40.5f, 9.5f)));
            scene.AddObject(SpiderNet.Create(new Vector2(12.5f, 11.5f)));
            scene.AddObject(Bones.Create(new Vector2(16.5f, 10.5f)));
            scene.AddObject(Mushrooms.Create(new Vector2(22.5f, 1.5f)));
            scene.AddObject(SpiderNet.Create(new Vector2(35.5f, 1.5f)));

            scene.AddObject(
                Note.Create(new Vector2(37.5f - 18, 3.5f),
                            "Ещё одна запись в дневнике, я становлюсь одержимым?\n" +
                            "Этот ход через официальную лабораторию\n" +
                            "был неплохо спрятан от внешних глаз, но я осторожный\n" +
                            "Пожалуй, поставлю сюда какую-нибудь охрану.\n" +
                            "Желательно чтобы она не могла разболтать, что она охраняет."));

            scene.AddObject(
                Note.Create(new Vector2(40.5f, 18.5f),
                            "По моим последним данным - источник магии на планете - Солнце\n" +
                            "Многие бы отказались от своей идеи, имея такое препятствие.\n" +
                            "Многие, но не я.\n" +
                            "Мне повезло родиться могущественным волшебником. Даже очень.\n" +
                            "Одно из того, на что могут повлиять волшебники - гравитация.\n" +
                            "Через 2 года недалеко от нашей системы будет пролетать чёрная дыра\n" +
                            "Такой шанс выпадает раз в тысячу лет. Не воспользоваться - грех."));

            scene.AddObject(
                Note.Create(new Vector2(50.5f, 11.5f),
                            "Да, все расчёты верны!\n" +
                            "Небольшой манёвр поможет планете вырваться от нашего Солнца!\n" +
                            "Притянуты чёрной дырой мы не будем, а просто улетим с текущей орбиты\n" +
                            "Однако проблема - полёт займёт несколько десятков тысяч лет\n" +
                            "За столько лет вся разумная жизнь на планете вымрет\n" +
                            " \n" +
                            "Но и на это у меня есть ответ: заморозим время на планете в некоторой\n" +
                            "области, где укроются люди\n" +
                            "Главное, чтобы никто не мешал - никому не понравится такой полёт\n"));


            scene.AddObject(Lamp1.Create(new Vector2(36.5f, 17.5f)));
            scene.AddObject(Lamp1.Create(new Vector2(40.5f, 16.5f)));

            var music = loader.GetMusic(MusicResourceHelper.EnvironmentDungeonMusic);

            music.Play(-1);

            Trigger.AddTrigger(3, 1, (scene) =>
            {
                scene.Player.CurrentMonologue = new Monologue(new[]
                {
                    ("Пахнет крысами. Опять.", 3000)
                });