From 03904430164944705135d7f1a5cb7aa60a2aa50f Mon Sep 17 00:00:00 2001 From: LeshaInc Date: Sat, 31 Aug 2019 12:23:49 +0300 Subject: [PATCH] Print screen address at the top of the frame --- .gitignore | 2 ++ sprites/{Border.png => BorderB.png} | Bin sprites/BorderT.png | Bin 0 -> 123 bytes sprites/CornerTL.png | Bin 144 -> 157 bytes sprites/CornerTR.png | Bin 161 -> 171 bytes .../resources/ocelot/desktop/spritesheet.png | Bin 3312 -> 3431 bytes .../resources/ocelot/desktop/spritesheet.txt | 19 +++++++------- .../desktop/ui/widget/ScreenWidget.scala | 24 +++++++++++------- 8 files changed, 27 insertions(+), 18 deletions(-) rename sprites/{Border.png => BorderB.png} (100%) create mode 100644 sprites/BorderT.png diff --git a/.gitignore b/.gitignore index a219f2a..71f5281 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,5 @@ cacerts # Workspace save /save + +*~ diff --git a/sprites/Border.png b/sprites/BorderB.png similarity index 100% rename from sprites/Border.png rename to sprites/BorderB.png diff --git a/sprites/BorderT.png b/sprites/BorderT.png new file mode 100644 index 0000000000000000000000000000000000000000..409be1fa920d64070caa5835ea753b2d777bca2b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-V!3HGfJ?-}dQk(@Ik;M!QF>WBtC^E&_5h$qZ z>Eal|5uKcplJMs|153~UfB%_{XE?BMY?xzF$8@HlJHbf8+1WX;)bJ1w3qzPRSIYnU Sm3M#|89ZJ6T-G@yGywpn86g?~ literal 0 HcmV?d00001 diff --git a/sprites/CornerTL.png b/sprites/CornerTL.png index 9806acf670ae45de3b52f5c2a405bba30aa01b46..3e96c2cf37404950e1f0cc0d00e476ed3920466a 100644 GIT binary patch delta 121 zcmV-<0EYjN0i6Mm7YYgp1^@s6iN_y+ks%mlPf0{UR2WxdWMp7ufP()p1~Sb8ll=St zFE)7wCZOnlT#_IiFcaXqPaHpiViL#%oRT036b0BEK~MpP8(^mN_xFRDSWSRQ5_H3w b)oU04H8B$wdM+O)00000NkvXXu0mjf;IS#) delta 108 zcmV-y0F(cn0gwTZ7YYan1^@s6#1FoUks%mYLP6s}&qngIZ+-V+Yjk4zH) O0000{Q83F~xd=DK-n}!aPy$Dqe3nJpZ{`7p|yP6{Y1&p_u p*~5-tW~x`sd^+vZcDK|t@dfdK7!31Q$Y1~f002ovPDHLkV1noDI8p!r delta 125 zcmV-@0D}Lk0igkq7YYan1^@s6#1FoUks%mpQ%OWYR2WxnPJs!)FbIofHwj+pANq%H zbt)9bs-R$E5(&W0{udp9cGksG^F7v}Mnn|cLdxZGP}SDC`|R*_U3GmFQ(XVR%n*@@ f$5T0GHj)Lt_HGykg+l(l00000NkvXXu0mjf(podp diff --git a/src/main/resources/ocelot/desktop/spritesheet.png b/src/main/resources/ocelot/desktop/spritesheet.png index 290b6ee18e21e4d40af38c22df8d1ed184ec1bd2..b6e5fd385467a35c978bbbb2cee4aa26e3636d7f 100644 GIT binary patch literal 3431 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 literal 3312 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 diff --git a/src/main/resources/ocelot/desktop/spritesheet.txt b/src/main/resources/ocelot/desktop/spritesheet.txt index f276891..f094af7 100644 --- a/src/main/resources/ocelot/desktop/spritesheet.txt +++ b/src/main/resources/ocelot/desktop/spritesheet.txt @@ -1,10 +1,11 @@ -Border 96 8 2 8 +BorderB 3 25 2 8 +BorderT 0 25 2 10 Circle 0 0 24 24 -Computer 24 0 24 24 -CornerBL 96 0 8 8 -CornerBR 104 0 8 8 -CornerTL 112 0 8 8 -CornerTR 120 0 8 8 -DefaultNode 48 0 24 24 -Empty 98 8 1 1 -Screen 72 0 24 24 +Computer 25 0 24 24 +CornerBL 118 0 8 8 +CornerBR 100 11 8 8 +CornerTL 100 0 8 10 +CornerTR 109 0 8 10 +DefaultNode 50 0 24 24 +Empty 6 25 1 1 +Screen 75 0 24 24 diff --git a/src/main/scala/ocelot/desktop/ui/widget/ScreenWidget.scala b/src/main/scala/ocelot/desktop/ui/widget/ScreenWidget.scala index 44a7c3e..b827b71 100644 --- a/src/main/scala/ocelot/desktop/ui/widget/ScreenWidget.scala +++ b/src/main/scala/ocelot/desktop/ui/widget/ScreenWidget.scala @@ -21,7 +21,7 @@ class ScreenWidget(screen: Screen) extends Widget with Logging { private var data: Array[Cell] = Array.fill(width * height)(Cell(' ', background, foreground)) - minimumSize = Size2D(width * fontWidth + 32, height * fontHeight + 32) + minimumSize = Size2D(width * fontWidth + 32, height * fontHeight + 40) maximumSize = minimumSize private var lastMousePos = Vector2D(0, 0) @@ -91,7 +91,7 @@ class ScreenWidget(screen: Screen) extends Widget with Logging { val sx = position.x val sy = position.y val w = fontWidth * width + 32 - val h = fontHeight * height + 32 + val h = fontHeight * height + 40 g.foreground = RGBAColor(30, 30, 30) g.sprite = "Empty" @@ -103,19 +103,25 @@ class ScreenWidget(screen: Screen) extends Widget with Logging { val Cell(char, bg, fg) = data(y * width + x) g.background = IntColor(bg) g.foreground = IntColor(fg) - g.char(sx + x * fontWidth + 16, sy + y * fontHeight + 16, char) + g.char(sx + x * fontWidth + 16, sy + y * fontHeight + 20, char) } } } - g.sprite("CornerTL", sx, sy, 16, 16) - g.sprite("CornerTR", sx + w - 16, sy, 16, 16) + g.sprite("CornerTL", sx, sy, 16, 20) + g.sprite("CornerTR", sx + w - 16, sy, 16, 20) g.sprite("CornerBL", sx, sy + h - 16, 16, 16) g.sprite("CornerBR", sx + w - 16, sy + h - 16, 16, 16) - g.sprite("Border", sx + 16, sy + 0, w - 32, 16) - g.sprite("Border", sx + 16, sy + h - 16, w - 32, 16) - g.sprite("Border", sx + 0, sy + 16, 16, h - 32, 270) - g.sprite("Border", sx + w - 16, sy + 16, 16, h - 32, 270) + g.sprite("BorderT", sx + 16, sy + 0, w - 32, 20) + g.sprite("BorderB", sx + 16, sy + h - 16, w - 32, 16) + g.sprite("BorderB", sx + 0, sy + 20, 16, h - 36, 270) + g.sprite("BorderB", sx + w - 16, sy + 20, 16, h - 36, 270) + + g.setSmallFont() + g.background = RGBAColor(0, 0, 0, 0) + g.foreground = RGBAColor(110, 110, 110) + g.text(sx + 12, sy + 6, screen.node.address) + g.setNormalFont() } def set(x: Int, y: Int, text: String, vertical: Boolean): Unit = {