Some more Legacy Computing Symbols (pt 10?) (#2453)

* moonlander

* rifle, bomb, rocket, frog

* doc
This commit is contained in:
Logo 2024-08-03 03:46:05 +08:00 committed by GitHub
parent 58530575cb
commit 43ee359503
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 268 additions and 16 deletions

View file

@ -33,12 +33,12 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
define heavyGraphicSw : Math.max (graphicSw * 2) (Width * 0.15)
define squareBox : new Box Geom.Top Geom.Bot Geom.Left Geom.Right
define [SidewaysBox top bottom left right _left2 _right2] : begin
local left2 : fallback _left2 left
local right2 : fallback _right2 right
local newHeight : (right - left) * (right2 - left2) / (top - bottom)
define [SidewaysBox box _left2 _right2] : begin
local left2 : fallback _left2 box.left
local right2 : fallback _right2 box.right
local newHeight : (box.right - box.left) * (right2 - left2) / (box.top - box.bottom)
local midX : mix left2 right2 0.5
local midY : mix top bottom 0.5
local midY box.yMid
return : new Box
midY + (right2 - midX)
@ -46,6 +46,24 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
midX - newHeight / 2
midX + newHeight / 2
define uiBox : new Box uiTop uiBot uiLeft uiRight
define uiHBox : SidewaysBox uiBox
define sb : SB * (0.5 * MosaicWidthScalar)
define smallHBox : new Box
mix SymbolMid PlusTop (0.5 * MosaicWidthScalar)
mix SymbolMid PlusBot (0.5 * MosaicWidthScalar)
* sb
MosaicWidth - sb
define vScalar : Math.sqrt (2 * MosaicWidthScalar)
define smallVBox : new Box
mix SymbolMid PlusTop (0.5 * vScalar)
mix SymbolMid PlusBot (0.5 * vScalar)
sb + 0.5 * (MosaicWidth - Width * vScalar)
(Width * vScalar - sb) + 0.5 * (MosaicWidth - Width * vScalar)
do "Top-down Vehicles"
define scaffold : object
set scaffold.xWheelFront : 1.5 / 9
@ -110,19 +128,19 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
do "Stick Man"
define [StickManScaffold top bottom left right _sw] : begin
define [StickManScaffold box _sw] : begin
local baseHeight : uiTop - uiBot
local height : top - bottom
local height : box.top - box.bottom
local scale : height / baseHeight
local scaffold : object
top top
bot bottom
left left
right right
top box.top
bot box.bottom
left box.left
right box.right
stroke : fallback _sw graphicSw
xMiddle : mix left right 0.5
yMiddle : mix top bottom 0.5
xMiddle box.xMid
yMiddle box.yMid
armRaiseK 0.4
headSize : height / 2.5
legSize : (Width - SB * 2) * scale
@ -175,9 +193,8 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
include : VBar.m [mix dressLeft dressRight 0.7] scaffold.bot (dressBottom - O) scaffold.stroke
define scaffold : StickManScaffold uiTop uiBot uiLeft uiRight
define hBox : SidewaysBox uiTop uiBot uiLeft uiRight
define hScaffold : StickManScaffold hBox.top hBox.bottom hBox.left hBox.right smallGraphicSw
define scaffold : StickManScaffold uiBox
define hScaffold : StickManScaffold uiHBox smallGraphicSw
create-glyph [MangleName 'stickMan'] [MangleUnicode 0x1FBC5] : glyph-proc
set-width MosaicWidth
@ -204,6 +221,7 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
set-width MosaicWidth
include : StickManDressBody scaffold 0 0
do "Snake Head"
define eyeSize : Geom.Size / 8
define mouthWidth : Geom.Size / 3
@ -265,6 +283,7 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
create-glyph [MangleName "snakeHeadDownClosed"] [MangleUnicode 0x1CC77] : glyph-proc
include : SnakeHead 3 0
do "Energy Waves"
define [LeftEnergyWave top bottom left right] : glyph-proc
local midX : mix left right 0.5
@ -303,6 +322,167 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
set-width MosaicWidth
include : WithD4Transform midX 1 0 : lambda [] : LeftEnergyWave Geom.Top Geom.Bot Geom.Left Geom.Right
do "Rifle"
define scaffold : object
set scaffold.postLength : 1 / 6
set scaffold.postOffset : 1 / 9
set scaffold.triggerRad : 1 / 8
define [RightRifle box] : glyph-proc
include : union
HBar.t box.left box.right [box.mixY : 1 - scaffold.postLength] smallGraphicSw
VBar.r [box.mixX : 1 - scaffold.postOffset] [box.mixY : 1 - scaffold.postLength] box.top smallGraphicSw
VBar.l box.left box.bottom [box.mixY : 1 - scaffold.postLength] (2 * smallGraphicSw)
local triggerStartX : box.left + [HSwToV : 2 * smallGraphicSw]
local triggerEndY : [box.mixY : 1 - scaffold.postLength] - smallGraphicSw
local triggerRad : (box.right - box.left) * scaffold.triggerRad
include : dispiro
widths.center smallGraphicSw
flat triggerStartX (triggerEndY - triggerRad) [heading Rightward]
archv
curl (triggerStartX + triggerRad) triggerEndY [heading Upward]
create-glyph [MangleName 'rifleLeft'] [MangleUnicode 0x1CC65] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 0 1 : lambda [] : RightRifle smallHBox
create-glyph [MangleName 'rifleUp'] [MangleUnicode 0x1CC66] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 1 0 : lambda [] : RightRifle smallVBox
create-glyph [MangleName 'rifleRight'] [MangleUnicode 0x1CC67] : glyph-proc
set-width MosaicWidth
include : RightRifle smallHBox
create-glyph [MangleName 'rifleDown'] [MangleUnicode 0x1CC68] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 3 0 : lambda [] : RightRifle smallVBox
do "Rocket"
define scaffold : object
set scaffold.width : 1 / 2
set scaffold.baseHeight : 1 / 4
set scaffold.tipHeight : 1 / 4
define [RightRocket box] : glyph-proc
local rocketLeft : box.mixY (0.5 + scaffold.width / 2)
local rocketRight : box.mixY (0.5 - scaffold.width / 2)
local rocketBase : box.mixX scaffold.baseHeight
local rocketTip : box.mixX (1 - scaffold.tipHeight)
include : union
spiro-outline
corner box.left box.yMid
corner rocketBase rocketRight
corner rocketTip rocketRight
corner box.right box.yMid
corner rocketTip rocketLeft
corner rocketBase rocketLeft
intersection [MaskAbove box.yMid] : dispiro
widths.center smallGraphicSw
corner box.left box.top
corner [box.mixX : 2 * scaffold.baseHeight] [box.mixY scaffold.width]
intersection [MaskBelow box.yMid] : dispiro
widths.center smallGraphicSw
corner box.left box.bottom
corner [box.mixX : 2 * scaffold.baseHeight] [box.mixY : 1 - scaffold.width]
create-glyph [MangleName 'rocketLeft'] [MangleUnicode 0x1CC56] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 0 1 : lambda [] : RightRocket smallHBox
create-glyph [MangleName 'rocketUp'] [MangleUnicode 0x1CC57] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 1 0 : lambda [] : RightRocket smallVBox
create-glyph [MangleName 'rocketRight'] [MangleUnicode 0x1CC58] : glyph-proc
set-width MosaicWidth
include : RightRocket smallHBox
create-glyph [MangleName 'rocketDown'] [MangleUnicode 0x1CC59] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 3 0 : lambda [] : RightRocket smallVBox
do "Bomb"
define scaffold : object
set scaffold.tailX 0.3
set scaffold.bodyX 0.15
define [RightBomb box] : glyph-proc
local bombLeft : box.mixX scaffold.bodyX
local radius : (box.top - box.bottom) / 2
include : union
spiro-outline
corner box.left box.top
corner box.left box.bottom
corner (box.left + graphicSw) box.bottom
corner [box.mixX scaffold.tailX] box.yMid
corner (box.left + graphicSw) box.top
spiro-outline
curl (bombLeft + radius) box.top
archv
g4 bombLeft box.yMid
arcvh
flat (bombLeft + radius) box.bottom
curl (box.right - radius) box.bottom
archv
g4 box.right box.yMid
arcvh
flat (box.right - radius) box.top
# Ellipse.Outline.AtDimens box.top box.bottom [box.mixX scaffold.bodyX] box.right
create-glyph [MangleName 'bombLeft'] [MangleUnicode 0x1CC60] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 2 0 : lambda [] : RightBomb smallHBox
create-glyph [MangleName 'bombUp'] [MangleUnicode 0x1CC61] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 1 0 : lambda [] : RightBomb smallVBox
create-glyph [MangleName 'bombRight'] [MangleUnicode 0x1CC62] : glyph-proc
set-width MosaicWidth
include : RightBomb smallHBox
create-glyph [MangleName 'bombDown'] [MangleUnicode 0x1CC63] : glyph-proc
set-width MosaicWidth
include : WithD4Transform midX 3 0 : lambda [] : RightBomb smallVBox
do "Frog"
define scaffold : object
set scaffold.bodyX 1
set scaffold.bodyY 0.9
set scaffold.legY 0.7
set scaffold.legY2 0.6
set scaffold.legX 0.2
set scaffold.legX2 0.4
set scaffold.sw graphicSw
define [UpFrog box tfm] : glyph-proc
local Kit : StickFigureKit box tfm heavyGraphicSw
include : difference
union
Ellipse.Outline.AtDimens
box.mixY scaffold.bodyY
box.mixY (1 - scaffold.bodyY)
box.mixX (1 - scaffold.bodyX)
box.mixX scaffold.bodyX
Kit.RoundSeg 0.5 0.5 0.5 1 0 1
Kit.RoundSeg 0.5 scaffold.legY2 0 scaffold.legY 0 1
Kit.RoundSeg 0.5 scaffold.legY2 1 scaffold.legY 0 1
Kit.RoundSeg scaffold.legX2 0.5 scaffold.legX 0 0 1
Kit.RoundSeg (1 - scaffold.legX2) 0.5 (1 - scaffold.legX) 0 0 1
Ellipse.Outline.AtDimens
[box.mixY scaffold.bodyY] - scaffold.sw
[box.mixY : 1 - scaffold.bodyY] + scaffold.sw
[box.mixX : 1 - scaffold.bodyX] + scaffold.sw
[box.mixX scaffold.bodyX] - scaffold.sw
create-glyph [MangleName 'frogUp'] [MangleUnicode 0x1CDFB] : glyph-proc
set-width MosaicWidth
include : UpFrog squareBox : D4Transform midX 0 0
create-glyph [MangleName 'frogDown'] [MangleUnicode 0x1CDFC] : glyph-proc
set-width MosaicWidth
include : UpFrog squareBox : D4Transform midX 2 0
do "Square Spiral"
define directions : list
* {.dx 1 .dy 0 .heading Rightward}
@ -341,6 +521,7 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
set-width MosaicWidth
include : SquareSpiral Geom.Left Geom.Bot 0
do "Ladder"
create-glyph [MangleName "vertLadder"] [MangleUnicode 0x1CC84] : glyph-proc
set-width MosaicWidth
@ -354,6 +535,7 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
include : HBar.b left right Geom.Bot GeometryStroke
include : HBar.t left right Geom.Top GeometryStroke
do "Striped Triangles"
define stripes : 2 + 2 * MosaicWidthScalar
define coTop : mix Geom.Top Geom.Bot (0 - 1 / (2 * stripes))
@ -384,3 +566,67 @@ glyph-block Symbol-Pictograph-Game-Sprite : for-width-kinds WideWidth4
include : intersection
refer-glyph : MangleName "blackTriangleDown"
HShade stripes coTop coBot left right
do "Moon Lander"
define scaffold : object
set scaffold.tipSize 0.2
set scaffold.headWidth 0.8
set scaffold.headHeight (3 / 8)
set scaffold.bodyWidth 0.4
set scaffold.slantHeight (3 / 8)
set scaffold.baseWidth 0.2
set scaffold.windowWidth 0.2
set scaffold.windowTopWidth 0.12
set scaffold.windowArchDepth 0.1
set scaffold.windowBot (3 / 8)
set scaffold.windowTop (6 / 8)
set scaffold.footLen 0.25
set scaffold.legHeight 0.4
set scaffold.legTopHeight 0.5
define [Moonlander top bottom left right sw] : glyph-proc
local midX : mix left right 0.5
local y1 : mix top bottom scaffold.headHeight
local y2 : mix bottom top scaffold.slantHeight
local bodyLeft : mix left right (0.5 - scaffold.bodyWidth / 2)
local bodyRight : mix left right (0.5 + scaffold.bodyWidth / 2)
local windowTop : mix bottom top scaffold.windowTop
local windowBot : mix bottom top scaffold.windowBot
local windowY3 : mix bottom top (scaffold.windowTop - scaffold.windowArchDepth)
local windowLeft : mix left right (0.5 - scaffold.windowWidth / 2)
local windowRight : mix left right (0.5 + scaffold.windowWidth / 2)
local legY2 : mix bottom top scaffold.legHeight
local legY3 : mix bottom top scaffold.legTopHeight
include : difference
union
spiro-outline
corner [mix left right (0.5 + scaffold.headWidth / 2)] y1
corner [mix left right (0.5 + scaffold.tipSize / 2)] top
corner [mix left right (0.5 - scaffold.tipSize / 2)] top
corner [mix left right (0.5 - scaffold.headWidth / 2)] y1
corner bodyLeft y1
corner bodyLeft y2
corner [mix left right (0.5 - scaffold.baseWidth / 2)] bottom
corner [mix left right (0.5 + scaffold.baseWidth / 2)] bottom
corner bodyRight y2
corner bodyRight y1
HBar.b left [mix left right scaffold.footLen] bottom sw
HBar.b right [mix right left scaffold.footLen] bottom sw
VBar.l left bottom legY2 sw
VBar.r right bottom legY2 sw
dispiro [widths.rhs sw] [flat left legY2] [curl midX legY3]
dispiro [widths.lhs sw] [flat right legY2] [curl midX legY3]
spiro-outline
corner windowLeft windowY3
corner windowLeft windowBot
corner windowRight windowBot
corner windowRight windowY3
corner [mix left right (0.5 + scaffold.windowTopWidth / 2)] windowTop
corner [mix left right (0.5 - scaffold.windowTopWidth / 2)] windowTop
create-glyph [MangleName "moonLander"] [MangleUnicode 0x1CDF5] : glyph-proc
set-width MosaicWidth
include : Moonlander top bottom left right graphicSw