protected override void DrawContents(Gdk.Drawable d) { Cairo.Context g = Gdk.CairoHelper.Create(d); g.SelectFontFace("Lucida Console", FontSlant.Normal, FontWeight.Bold); g.SetFontSize(24); TextExtents te; if (IsControl || MateriaArrange.Instance.IsControl || MateriaPrompt.Instance.IsControl) { int j = Math.Min(rows + topRow, Materiatory.MATERIATORY_SIZE); for (int i = topRow; i < j; i++) { Materia orb = Materiatory.Get(i); if (orb != null) { Graphics.RenderCircle(g, new Color(1, 1, 1), 9, X + x1, Y + cy + (i - topRow) * y); Graphics.RenderCircle(g, orb.Color, 7, X + x1, Y + cy + (i - topRow) * y); Graphics.ShadowedText(g, orb.Name, X + x2, Y + (i - topRow + 1) * y); } } } if (IsControl) { Graphics.RenderCursor(g, X + cx, Y + cy + (option - topRow) * y); } ((IDisposable)g.Target).Dispose(); ((IDisposable)g).Dispose(); }
public override void ControlHandle(Key k) { switch (k) { case Key.Up: if (option > 0) { option--; } if (topRow > option) { topRow--; } break; case Key.Down: if (option < Materiatory.MATERIATORY_SIZE - 1) { option++; } if (topRow < option - rows + 1) { topRow++; } break; case Key.X: if (trashing) { MenuScreen.MateriaScreen.ChangeControl(MateriaArrange.Instance); } else { MenuScreen.MateriaScreen.ChangeToDefaultControl(); } trashing = false; break; case Key.Circle: if (Trashing) { MenuScreen.MateriaScreen.ChangeControl(MateriaPrompt.Instance); break; } Materia neworb = Materiatory.Get(option); Materia oldorb; switch (MateriaTop.Instance.OptionY) { case 0: oldorb = Selected.Weapon.Slots[MateriaTop.Instance.OptionX]; if (oldorb != null) { oldorb.Detach(Selected); } Materiatory.Put(oldorb, option); if (neworb != null) { neworb.Attach(Selected); } Selected.Weapon.AttachMateria(neworb, MateriaTop.Instance.OptionX); MenuScreen.MateriaScreen.ChangeToDefaultControl(); break; case 1: oldorb = Selected.Armor.Slots[MateriaTop.Instance.OptionX]; if (oldorb != null) { oldorb.Detach(Selected); } Materiatory.Put(oldorb, option); if (neworb != null) { neworb.Attach(Selected); } Selected.Armor.AttachMateria(neworb, MateriaTop.Instance.OptionX); MenuScreen.MateriaScreen.ChangeToDefaultControl(); break; default: break; } break; default: break; } }