Skip to content

Commit

Permalink
Restored UIScene
Browse files Browse the repository at this point in the history
  • Loading branch information
davesmith00000 committed Jun 8, 2024
1 parent 8008bcc commit df27c16
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 145 deletions.
173 changes: 86 additions & 87 deletions demo/src/main/scala/demo/ComponentsWindow.scala
Original file line number Diff line number Diff line change
@@ -1,94 +1,93 @@
// package demo
package demo

// import indigo.*
// import roguelikestarterkit.*
import indigo.*
import roguelikestarterkit.*

// object ComponentsWindow:
object ComponentsWindow:

// private val graphic = Graphic(0, 0, TerminalMaterial(AssetName(""), RGBA.White, RGBA.Black))
private val graphic = Graphic(0, 0, TerminalMaterial(AssetName(""), RGBA.White, RGBA.Black))

// val windowId: WindowId = WindowId("ComponentsWindow")
val windowId: WindowId = WindowId("ComponentsWindow")

// def window(
// charSheet: CharSheet
// ): WindowModel[ComponentGroup[Int], Int] =
// WindowModel(
// windowId,
// charSheet,
// // ComponentGroup(Bounds(0, 0, 23, 23))
// // .withLayout(ComponentLayout.Vertical(Padding(0, 0, 1)))
// // .inheritBounds
// // .add(
// // Button(
// // "Hello!",
// // Button.Theme(
// // charSheet,
// // RGBA.Silver -> RGBA.Black,
// // RGBA.White -> RGBA.Black,
// // RGBA.Black -> RGBA.White,
// // hasBorder = true
// // )
// // )
// // )
// // .add(
// // Button(
// // "World!",
// // Button.Theme(
// // charSheet,
// // RGBA.Silver -> RGBA.Black,
// // RGBA.Green -> RGBA.Black,
// // RGBA.Black -> RGBA.Yellow,
// // hasBorder = false
// // )
// // ),
// // Button("Default!", Button.Theme(charSheet))
// // )
// // .add {
// // Button(
// // (i: Int) => "Count" + (if i > 0 then s": $i" else ""),
// // Button.Theme(charSheet).addBorder
// // )
// // }
// // .add(
// // Button[Int](Bounds(0, 0, 5, 2)) { case (coords, bounds, _) =>
// // Outcome(
// // ComponentFragment(
// // Shape.Box(
// // bounds.toScreenSpace(charSheet.size).moveTo(coords.toScreenSpace(charSheet.size)),
// // Fill.LinearGradient(Point.zero, RGBA.Cyan, Point(50, 0), RGBA.Magenta)
// // )
// // )
// // )
// // }
// // )
// // .add(
// // Label[Int]("Custom rendered label", (_, t) => Bounds(0, 0, t.length, 1)) {
// // case (offset, label, dimensions) =>
// // val size = dimensions.unsafeToSize
def window(
charSheet: CharSheet
): WindowModel[ComponentGroup[Int], Int] =
WindowModel(
windowId,
charSheet,
ComponentGroup()
.withLayout(ComponentLayout.Vertical(Padding(0, 0, 1)))
.add(
Button(
"Hello!",
Button.Theme(
charSheet,
RGBA.Silver -> RGBA.Black,
RGBA.White -> RGBA.Black,
RGBA.Black -> RGBA.White,
hasBorder = true
)
)
)
.add(
Button(
"World!",
Button.Theme(
charSheet,
RGBA.Silver -> RGBA.Black,
RGBA.Green -> RGBA.Black,
RGBA.Black -> RGBA.Yellow,
hasBorder = false
)
),
Button("Default!", Button.Theme(charSheet))
)
.add {
Button(
(i: Int) => "Count" + (if i > 0 then s": $i" else ""),
Button.Theme(charSheet).addBorder
)
}
.add(
Button[Int](Bounds(0, 0, 5, 2)) { case (coords, bounds, _) =>
Outcome(
ComponentFragment(
Shape.Box(
bounds.toScreenSpace(charSheet.size).moveTo(coords.toScreenSpace(charSheet.size)),
Fill.LinearGradient(Point.zero, RGBA.Cyan, Point(50, 0), RGBA.Magenta)
)
)
)
}
)
.add(
Label[Int]("Custom rendered label", (_, t) => Bounds(0, 0, t.length, 1)) {
case (offset, label, dimensions) =>
val size = dimensions.unsafeToSize

// // val terminal =
// // RogueTerminalEmulator(size)
// // .putLine(Point.zero, label, RGBA.Red, RGBA.Zero)
// // .toCloneTiles(
// // CloneId("label"),
// // offset.toScreenSpace(charSheet.size),
// // charSheet.charCrops
// // ) { case (fg, bg) =>
// // graphic.withMaterial(TerminalMaterial(charSheet.assetName, fg, bg))
// // }
val terminal =
RogueTerminalEmulator(size)
.putLine(Point.zero, label, RGBA.Red, RGBA.Zero)
.toCloneTiles(
CloneId("label"),
offset.toScreenSpace(charSheet.size),
charSheet.charCrops
) { case (fg, bg) =>
graphic.withMaterial(TerminalMaterial(charSheet.assetName, fg, bg))
}

// // Outcome(ComponentFragment(terminal))
// // }
// // )
// // .add(
// // Label("Terminal rendered label", Label.Theme(charSheet, RGBA.Magenta, RGBA.Cyan)),
// // Label("Default theme", Label.Theme(charSheet)),
// // Label((count: Int) => "Mouse over windows: " + count, Label.Theme(charSheet))
// // )
// )
// .withTitle("Components example")
// .moveTo(0, 0)
// .resizeTo(25, 25)
// .isDraggable
// .isResizable
// .isCloseable
Outcome(ComponentFragment(terminal))
}
)
.add(
Label("Terminal rendered label", Label.Theme(charSheet, RGBA.Magenta, RGBA.Cyan)),
Label("Default theme", Label.Theme(charSheet)),
Label((count: Int) => "Mouse over windows: " + count, Label.Theme(charSheet))
)
)
.withTitle("Components example")
.moveTo(0, 0)
.resizeTo(25, 25)
.isDraggable
.isResizable
.isCloseable
87 changes: 35 additions & 52 deletions demo/src/main/scala/demo/ComponentsWindow2.scala
Original file line number Diff line number Diff line change
Expand Up @@ -18,62 +18,45 @@ object ComponentsWindow2:
.add(
ComponentGroup()
.withLayout(ComponentLayout.Horizontal(Padding(0, 1, 0, 0)))
// .add(
// Label("label 1", Label.Theme(charSheet)),
// Label("label 2", Label.Theme(charSheet)),
// Label("label 3", Label.Theme(charSheet))
// )
// .withBoundsType(BoundsType.Fixed(Bounds(0, 0, 20, 2)))
.add(
Label("label 1", Label.Theme(charSheet)),
Label("label 2", Label.Theme(charSheet)),
Label("label 3", Label.Theme(charSheet))
)
)
.add(
ComponentGroup()
.withLayout(ComponentLayout.Horizontal(Padding(0, 1, 0, 0)))
.add(
Batch(
"History" -> Batch(),
"Controls" -> Batch(),
"Quit" -> Batch()
).map { case (label, clickEvents) =>
Button(
label,
Button.Theme(charSheet)
).onClick(clickEvents)
}
)
)
.add(
ComponentList(Dimensions(20, 8)) { (count: Int) =>
Batch(Label[Int]("How many windows: ", Label.Theme(charSheet))) ++
Batch.fill(count)(Label("x", Label.Theme(charSheet)))
}
.add((count: Int) =>
Batch.fill(count)(
Button[Int]("Button", Button.Theme(charSheet)).onClick(Log("count: " + count))
)
:+ Button[Int]("test", Button.Theme(charSheet)).onClick(Log("test"))
)
.add((i: Int) => TextArea[Int]("abc.\nde,f\n0123456! " + i, TextArea.Theme(charSheet)))
.withLayout(ComponentLayout.Vertical(Padding.zero))
)
// .add(
// Label("label 1", Label.Theme(charSheet)),
// Label("label 2", Label.Theme(charSheet)),
// Label("label 3", Label.Theme(charSheet))
// )
// .withBoundsType(BoundsType.Fixed(Bounds(0, 0, 20, 2)))
// .add(
// ComponentGroup()
// .withLayout(ComponentLayout.Horizontal(Padding(0, 1, 0, 0)))
// .add(
// Batch(
// "History" -> Batch(),
// "Controls" -> Batch(),
// "Quit" -> Batch()
// ).map { case (label, clickEvents) =>
// Button(
// label,
// Button.Theme(charSheet)
// ).onClick(clickEvents)
// }
// )
// )
// .add(
// ComponentList(Bounds(0, 0, 20, 3)) { (count: Int) =>
// Batch(Label[Int]("How many windows: ", Label.Theme(charSheet))) ++
// Batch.fill(count)(Label("x", Label.Theme(charSheet)))
// }
// .withLayout(ComponentLayout.Vertical())
// )
// .add(
// ComponentList(Bounds(0, 0, 20, 8)) { (count: Int) =>
// Batch(Label[Int]("How many windows: ", Label.Theme(charSheet))) ++
// Batch.fill(count)(Label("x", Label.Theme(charSheet)))
// }
// .add((count: Int) =>
// Batch.fill(count)(
// Button[Int]("Button", Button.Theme(charSheet)).onClick(Log("count: " + count))
// )
// :+ Button[Int]("test", Button.Theme(charSheet)).onClick(Log("test"))
// )
// .add((i: Int) => TextArea[Int]("abc.\nde,f\n0123456! " + i, TextArea.Theme(charSheet)))
// .withLayout(ComponentLayout.Vertical(Padding.zero))
// )
.add(
Input(20, Input.Theme(charSheet))
)
// .add(
// TextArea("abc.\nde,f\n0123456!", TextArea.Theme(charSheet))
// )
)
.withTitle("More component examples")
.moveTo(2, 2)
Expand Down
12 changes: 6 additions & 6 deletions demo/src/main/scala/demo/UIScene.scala
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,18 @@ object UIScene extends Scene[Size, Model, ViewModel]:
Model.defaultCharSheet,
_.mouseOverWindows.length
)
// .register(
// ComponentsWindow.window(
// Model.defaultCharSheet
// )
// )
.register(
ComponentsWindow.window(
Model.defaultCharSheet
)
)
.register(
ComponentsWindow2.window(
Model.defaultCharSheet
)
)
.open(
// ComponentsWindow.windowId,
ComponentsWindow.windowId,
ComponentsWindow2.windowId
)
)
Expand Down

0 comments on commit df27c16

Please sign in to comment.