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)) { } }
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) });