public override void Create() { Music.Instance.Play(Assets.TUNE, true); Music.Instance.Volume(1f); PixelDungeon.LastClass(Dungeon.Hero.heroClass.Ordinal()); base.Create(); Camera.Main.ZoomTo(defaultZoom + PixelDungeon.Zoom()); Scene = this; _terrain = new Group(); Add(_terrain); _water = new SkinnedBlock(levels.Level.Width * DungeonTilemap.Size, Level.Height * DungeonTilemap.Size, Dungeon.Level.WaterTex()); _terrain.Add(_water); _ripples = new Group(); _terrain.Add(_ripples); _tiles = new DungeonTilemap(); _terrain.Add(_tiles); Dungeon.Level.AddVisuals(this); _plants = new Group(); Add(_plants); foreach (var plant in Dungeon.Level.plants.Values) { AddPlantSprite(plant); } _heaps = new Group(); Add(_heaps); foreach (var heap in Dungeon.Level.heaps.Values) { AddHeapSprite(heap); } _emitters = new Group(); _effects = new Group(); _emoicons = new Group(); _mobs = new Group(); Add(_mobs); foreach (var mob in Dungeon.Level.mobs) { AddMobSprite(mob); if (Statistics.AmuletObtained) { mob.Beckon(Dungeon.Hero.pos); } } Add(_emitters); Add(_effects); _gases = new Group(); Add(_gases); foreach (var blob in Dungeon.Level.Blobs.Values) { blob.Emitter = null; AddBlobSprite(blob); } _fog = new FogOfWar(Level.Width, Level.Height); _fog.UpdateVisibility(Dungeon.Visible, Dungeon.Level.visited, Dungeon.Level.mapped); Add(_fog); Brightness(PixelDungeon.Brightness()); _spells = new Group(); Add(_spells); _statuses = new Group(); Add(_statuses); Add(_emoicons); _hero = new HeroSprite(); _hero.Place(Dungeon.Hero.pos); _hero.UpdateArmor(); _mobs.Add(_hero); Add(new HealthIndicator()); Add(_cellSelector = new CellSelector(_tiles)); var sb = new StatusPane(); sb.Camera = uiCamera; sb.SetSize(uiCamera.CameraWidth, 0); Add(sb); _toolbar = new Toolbar(); _toolbar.Camera = uiCamera; _toolbar.SetRect(0, uiCamera.CameraHeight - _toolbar.Height, uiCamera.CameraWidth, _toolbar.Height); Add(_toolbar); var attack = new AttackIndicator(); attack.Camera = uiCamera; attack.SetPos(uiCamera.CameraWidth - attack.Width, _toolbar.Top() - attack.Height); Add(attack); _log = new GameLog(); _log.Camera = uiCamera; _log.SetRect(0, _toolbar.Top(), attack.Left(), 0); Add(_log); if (Dungeon.Depth < Statistics.DeepestFloor) { GLog.Information(TxtWelcomeBack, Dungeon.Depth); } else { GLog.Information(TxtWelcome, Dungeon.Depth); Sample.Instance.Play(Assets.SND_DESCEND); } switch (Dungeon.Level.feeling) { case Level.Feeling.CHASM: GLog.Warning(TxtChasm); break; case Level.Feeling.WATER: GLog.Warning(TxtWater); break; case Level.Feeling.GRASS: GLog.Warning(TxtGrass); break; } if (Dungeon.Level is RegularLevel && ((RegularLevel)Dungeon.Level).SecretDoors > pdsharp.utils.Random.IntRange(3, 4)) { GLog.Warning(TxtSecrets); } if (Dungeon.NightMode && !Dungeon.BossLevel()) { GLog.Warning(TxtNightMode); } _busy = new BusyIndicator(); _busy.Camera = uiCamera; _busy.X = 1; _busy.Y = sb.Bottom() + 1; Add(_busy); switch (InterlevelScene.mode) { case InterlevelScene.Mode.RESURRECT: WandOfBlink.Appear(Dungeon.Hero, Dungeon.Level.entrance); new Flare(8, 32).Color(0xFFFF66, true).Show(_hero, 2f); break; case InterlevelScene.Mode.RETURN: WandOfBlink.Appear(Dungeon.Hero, Dungeon.Hero.pos); break; case InterlevelScene.Mode.FALL: Chasm.HeroLand(); break; case InterlevelScene.Mode.DESCEND: switch (Dungeon.Depth) { case 1: WndStory.ShowChapter(WndStory.ID_SEWERS); break; case 6: WndStory.ShowChapter(WndStory.ID_PRISON); break; case 11: WndStory.ShowChapter(WndStory.ID_CAVES); break; case 16: WndStory.ShowChapter(WndStory.ID_METROPOLIS); break; case 22: WndStory.ShowChapter(WndStory.ID_HALLS); break; } if (Dungeon.Hero.IsAlive && Dungeon.Depth != 22) { Badge.ValidateNoKilling(); } break; } Camera.Main.Target = _hero; //var m = new string[Level.Width]; //var b = new StringBuilder(); //for (var i = 0; i < Level.passable.Length; i++) //{ // var cx = i % Level.Width; // var cy = i / Level.Width; // if (i == Dungeon.Hero.pos) // { // m[cx] += "H"; // continue; // } // if (Level.passable[i]) // m[cx] += "."; // else // m[cx] += "#"; //} //foreach (var s in m) // b.AppendLine(s); //Debug.WriteLine(b); //for (var i = 0; i < Dungeon.Level.mapped.Length; i++) // Dungeon.Level.mapped[i] = true; FadeIn(); }
public WndSettings(bool inGame) { CheckBox btnImmersive = null; if (inGame) { var w = BtnHeight; _btnZoomOut = new RedButton(TxtZoomOut); _btnZoomOut.ClickAction = button => Zoom(pdsharp.noosa.Camera.Main.Zoom - 1); Add(_btnZoomOut.SetRect(0, 0, w, BtnHeight)); _btnZoomIn = new RedButton(TxtZoomIn); _btnZoomIn.ClickAction = button => Zoom(pdsharp.noosa.Camera.Main.Zoom + 1); Add(_btnZoomIn.SetRect(WIDTH - w, 0, w, BtnHeight)); var btnZoomDefault = new RedButton(TxtZoomDefault); btnZoomDefault.ClickAction = button => Zoom(PixelScene.defaultZoom); btnZoomDefault.SetRect(_btnZoomOut.Right(), 0, WIDTH - _btnZoomIn.Width - _btnZoomOut.Width, BtnHeight); Add(btnZoomDefault); } else { var btnScaleUp = new CheckBox(TxtScaleUp); btnScaleUp.ClickAction = ScaleUpClick; btnScaleUp.SetRect(0, 0, WIDTH, BtnHeight); btnScaleUp.SetChecked(PixelDungeon.ScaleUp()); Add(btnScaleUp); btnImmersive = new CheckBox(TxtImmersive); btnImmersive.ClickAction = ImmersiveClick; btnImmersive.SetRect(0, btnScaleUp.Bottom() + Gap, WIDTH, BtnHeight); btnImmersive.SetChecked(PixelDungeon.Immersed()); btnImmersive.Enable(Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat); Add(btnImmersive); } var btnMusic = new CheckBox(TxtMusic); btnMusic.ClickAction = button => { var checkBox = button as CheckBox; PixelDungeon.Music(checkBox != null && checkBox.Checked()); }; btnMusic.SetRect(0, (btnImmersive != null ? btnImmersive.Bottom() : BtnHeight) + Gap, WIDTH, BtnHeight); btnMusic.SetChecked(PixelDungeon.Music()); Add(btnMusic); var btnSound = new CheckBox(TxtSound); btnSound.ClickAction = SoundClick; btnSound.SetRect(0, btnMusic.Bottom() + Gap, WIDTH, BtnHeight); btnSound.SetChecked(PixelDungeon.SoundFx()); Add(btnSound); if (!inGame) { var btnOrientation = new RedButton(OrientationText()); btnOrientation.ClickAction = OrientationClick; btnOrientation.SetRect(0, btnSound.Bottom() + Gap, WIDTH, BtnHeight); Add(btnOrientation); Resize(WIDTH, (int)btnOrientation.Bottom()); } else { var btnBrightness = new CheckBox(TxtBrightness); btnBrightness.ClickAction = button => { var checkBox = button as CheckBox; PixelDungeon.Brightness(checkBox != null && checkBox.Checked()); }; btnBrightness.SetRect(0, btnSound.Bottom() + Gap, WIDTH, BtnHeight); btnBrightness.SetChecked(PixelDungeon.Brightness()); Add(btnBrightness); Resize(WIDTH, (int)btnBrightness.Bottom()); } }