public WndItem(WndBag owner, Item item) { var titlebar = new IconTitle(); titlebar.Icon(new ItemSprite(item.image, item.Glowing())); titlebar.Label(Utils.Capitalize(item.ToString())); titlebar.SetRect(0, 0, WIDTH, 0); Add(titlebar); if (item.levelKnown && item.level > 0) { titlebar.Color(ItemSlot.Upgraded); } else if (item.levelKnown && item.level < 0) { titlebar.Color(ItemSlot.Degraded); } var info = PixelScene.CreateMultiline(item.Info(), 6); info.MaxWidth = WIDTH; info.Measure(); info.X = titlebar.Left(); info.Y = titlebar.Bottom() + Gap; Add(info); var y = info.Y + info.Height + Gap; float x = 0; if (Dungeon.Hero.IsAlive && owner != null) { foreach (var action in item.Actions(Dungeon.Hero)) { var btn = new RedButton(action); btn.ClickAction = button => { item.Execute(Dungeon.Hero, action); Hide(); owner.Hide(); }; btn.SetSize(Math.Max(ButtonWidth, btn.ReqWidth()), ButtonHeight); if (x + btn.Width > WIDTH) { x = 0; y += ButtonHeight + Gap; } btn.SetPos(x, y); Add(btn); x += btn.Width + Gap; } } Resize(WIDTH, (int)(y + (x > 0 ? ButtonHeight : 0))); }
public override void Create() { base.Create(); Music.Instance.Play(Assets.HAPPY, true); Music.Instance.Volume(1f); uiCamera.Visible = false; var w = pdsharp.noosa.Camera.Main.CameraWidth; var h = pdsharp.noosa.Camera.Main.CameraHeight; var archs = new Archs(); archs.Reversed = true; archs.SetSize(w, h); Add(archs); var vx = Align((w - WIDTH) / 2); var vy = Align((h - HEIGHT) / 2); var s = pdsharp.noosa.Camera.Main.CameraToScreen(vx, vy); _viewport = new pdsharp.noosa.Camera(s.X, s.Y, WIDTH, HEIGHT, defaultZoom); pdsharp.noosa.Camera.Add(_viewport); var window = new Group(); window.Camera = _viewport; Add(window); var dayTime = !Dungeon.NightMode; var sky = new Sky(dayTime); sky.Scale.Set(WIDTH, HEIGHT); window.Add(sky); if (!dayTime) { for (var i = 0; i < Nstars; i++) { var size = pdsharp.utils.Random.Float(); var star = new ColorBlock(size, size, Color.Argb(255, 255, 255, 255)); star.X = pdsharp.utils.Random.Float(WIDTH) - size / 2; star.Y = pdsharp.utils.Random.Float(HEIGHT) - size / 2; star.Am = size * (1 - star.Y / HEIGHT); window.Add(star); } } const float range = HEIGHT * 2 / 3; for (var i = 0; i < Nclouds; i++) { var cloud = new Cloud((Nclouds - 1 - i) * (range / Nclouds) + pdsharp.utils.Random.Float(range / Nclouds), dayTime); window.Add(cloud); } var nPatches = (int)(sky.Width / GrassPatch.WIDTH + 1); for (var i = 0; i < nPatches * 4; i++) { var patch = new GrassPatch((i - 0.75f) * GrassPatch.WIDTH / 4, HEIGHT + 1, dayTime); patch.Brightness(dayTime ? 0.7f : 0.4f); window.Add(patch); } var a = new Avatar(Dungeon.Hero.heroClass); a.X = Align((WIDTH - a.Width) / 2); a.Y = HEIGHT - a.Height + 1; window.Add(a); var pet = new Pet(); pet.Rm = pet.Gm = pet.Bm = 1.2f; pet.X = WIDTH / 2 + 2; pet.Y = HEIGHT - pet.Height; window.Add(pet); if (dayTime) { a.Brightness(1.2f); pet.Brightness(1.2f); } //window.Add(new TouchArea(sky) { protected void OnClick(Touch touch) { pet.Jump(); }; }); for (var i = 0; i < nPatches; i++) { var patch = new GrassPatch((i - 0.5f) * GrassPatch.WIDTH, HEIGHT, dayTime); patch.Brightness(dayTime ? 1.0f : 0.8f); window.Add(patch); } var frame = new Image(Assets.SURFACE); if (!dayTime) { frame.Hardlight(0xDDEEFF); } frame.Frame(0, 0, 88, 125); frame.X = vx - 4; frame.Y = vy - 9; Add(frame); var gameOver = new RedButton("Game Over"); gameOver.ClickAction = GameOverClickAction; gameOver.SetSize(WIDTH - 10, 20); gameOver.SetPos(5 + frame.X + 4, frame.Y + frame.Height + 4); Add(gameOver); Badge.ValidateHappyEnd(); FadeIn(); }
public override void Create() { base.Create(); BitmapTextMultiline text = null; if (!NoText) { text = CreateMultiline(Txt, 8); text.MaxWidth = WIDTH; text.Measure(); Add(text); } _amulet = new Image(Assets.AMULET); Add(_amulet); var btnExit = new RedButton(TxtExit); btnExit.ClickAction = button => { Dungeon.Win(ResultDescriptions.WIN); Dungeon.DeleteGame(Dungeon.Hero.heroClass, true); if (NoText) { Game.SwitchScene <TitleScene>(); } else { Game.SwitchScene <RankingsScene>(); } }; btnExit.SetSize(WIDTH, BtnHeight); Add(btnExit); var btnStay = new RedButton(TxtStay); btnStay.ClickAction = button => OnBackPressed(); btnStay.SetSize(WIDTH, BtnHeight); Add(btnStay); float height; if (NoText) { height = _amulet.Height + LargeGap + btnExit.Height + SmallGap + btnStay.Height; _amulet.X = Align((Camera.Main.CameraWidth - _amulet.Width) / 2); _amulet.Y = Align((Camera.Main.CameraHeight - height) / 2); btnExit.SetPos((Camera.Main.CameraWidth - btnExit.Width) / 2, _amulet.Y + _amulet.Height + LargeGap); btnStay.SetPos(btnExit.Left(), btnExit.Bottom() + SmallGap); } else { height = _amulet.Height + LargeGap + text.Height + LargeGap + btnExit.Height + SmallGap + btnStay.Height; _amulet.X = Align((Camera.Main.CameraWidth - _amulet.Width) / 2); _amulet.Y = Align((Camera.Main.CameraHeight - height) / 2); text.X = Align((Camera.Main.CameraWidth - text.Width) / 2); text.Y = _amulet.Y + _amulet.Height + LargeGap; btnExit.SetPos((Camera.Main.CameraWidth - btnExit.Width) / 2, text.Y + text.Height + LargeGap); btnStay.SetPos(btnExit.Left(), btnExit.Bottom() + SmallGap); } new Flare(8, 48).Color(0xFFDDBB, true).Show(_amulet, 0).AngularSpeed = +30; FadeIn(); }