editor.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "fmt"
  4. door "git.red-green.com/RedGreen/doorgo"
  5. )
  6. type Editor struct {
  7. World *World
  8. Camera *Camera
  9. Pos *Vec2
  10. }
  11. func NewEditor(w *World, cam_size, pos *Vec2) *Editor {
  12. e := &Editor{
  13. World: w,
  14. Camera: &Camera{
  15. Size: cam_size.Clone(),
  16. },
  17. Pos: pos.Clone(),
  18. }
  19. if w == nil || cam_size == nil || pos == nil {
  20. return nil
  21. }
  22. return e
  23. }
  24. func (e *Editor) TileMenu() *door.Menu {
  25. m := &door.Menu{
  26. Chosen: 0,
  27. SelectedR: door.MakeMenuRender(door.ColorText("BRI WHI ON BLU"), door.ColorText("BRI WHI ON BLU"), door.ColorText("BRI WHI ON BLU"), door.ColorText("BRI WHI ON BLU")),
  28. UnselectedR: door.MakeMenuRender(door.ColorText("BRI BLA ON BLA"), door.ColorText("BRI CYA ON BLA"), door.ColorText("BRI WHI ON BLA"), door.ColorText("WHI ON BLA")),
  29. Panel: door.Panel{
  30. X: 1,
  31. Y: 1,
  32. Width: door.Width - 2,
  33. Style: door.SINGLE,
  34. BorderColor: door.ColorText("BRI CYA ON BLA"),
  35. Title: " Tiles ",
  36. TitleColor: door.ColorText("BRI WHI ON BLA"),
  37. TitleOffset: 4,
  38. },
  39. }
  40. if len(e.World.TileIndex.Tiles) != 0 {
  41. for idx, t := range e.World.TileIndex.Tiles {
  42. if t == nil {
  43. continue
  44. }
  45. m.AddSelection(fmt.Sprintf("%d", idx), fmt.Sprintf("'%s' in '%s'", t.Symbol, t.Color))
  46. }
  47. }
  48. m.AddSelection("A", "Add Tile")
  49. return m
  50. }