Skip to content

Instantly share code, notes, and snippets.

@nona-takahara
Last active February 11, 2021 13:18
Show Gist options
  • Save nona-takahara/50c56d039c662167f3b93ae2495cbf14 to your computer and use it in GitHub Desktop.
Save nona-takahara/50c56d039c662167f3b93ae2495cbf14 to your computer and use it in GitHub Desktop.
Larger bitmap font for "Stormworks: Build and Rescue"

使用例

これどうやって使うの?

マイコンLuaコードに貼り付けて、onDraw関数内でdrawTextExを呼び出して使います。「screen.」を書くとそのままでは動きません。

これを使うにあたって気にしないといけないことは?

Luaで使える文字数のおよそ60%を奪っていくので、必要があれば改造しないといけないかもしれません。

特別なんらかの作者表示をする必要はありませんが、自作発言だけやめてください。

もし作者表示をしたくて、余裕があるのであれば、「(C) 2021 Nona Takahara」とどこかに入れておいてください。

表示がおかしいんだけど?

グラフィックチップの違いが原因かと思われます。g関数が常に0や1を返すように改造してみると結果が変わるかもしれませんが、それで改善される保証はできないです。

コードの細かいことについて

文字数との制約の戦いの結果、インデントはホロブベシなTABくんになってしまった。

データの改造を不便にする引き換えにだいぶ圧縮できないこともないのですが、現時点では改造しやすく無駄が多くしてあります。

c={ {2,{}},
{3,{1013,1516}},
{3,{0002,2022}},
{5,{0242,0444,1016,3036}},
{5,{1141,0202,1333,4444,0535,2026}},
{7,{1010,0101,2121,1212,5454,4545,6565,5656,5016}},
{6,{1112,2030,4142,2333,0305,1646,1346,5455}},
{2,{0002}},
{3,{0220,0426,0204}},
{3,{0022,0624,2224}},
{5,{2122,0242,1214,3234}},
{5,{0343,2125}},
{3,{0615,1415}},
{3,{0323}},
{3,{0506,1516}},
{3,{0620}},
{4,{0105,1020,3135,1626}},
{4,{1111,2026}},
{4,{0101,1020,3131,3205,0636}},
{4,{0101,1020,3132,1323,3435,1626,0505}},
{4,{3003,0434,3036}},
{4,{0030,0003,0323,3435,0626}},
{4,{1020,0105,1323,3435,1626}},
{4,{0001,0030,3132,3214,1516}},
{4,{1020,0102,3132,1323,0405,3435,1626}},
{4,{1020,0102,3135,1323,1626}},
{4,{2222,2525}},
{4,{2222,2516}},
{4,{0330,0336}},
{4,{0232,0434}},
{4,{3300,3306}},
{4,{0101,1020,2324,3132,2626}},
{5,{0105,1030,4144,3131,2224,2434,1646}},
{5,{2020,1104,3144,0306,4346,0444}},
{5,{0006,0030,4142,0333,4445,0636}},
{5,{0105,1040,1646}},
{5,{0006,0020,3131,4245,0636}},
{5,{0006,0040,0333,0646}},
{5,{0006,0040,0333}},
{5,{0105,1040,1646,4346,2343}},
{5,{0006,4046,0343}},
{3,{0020,1016,0626}},
{4,{1030,3035,0626}},
{5,{0006,1340,1346}},
{5,{0006,0646}},
{5,{0006,1122,2231,4046}},
{5,{0006,4046,0046}},
{5,{0105,1030,4145,1636}},
{5,{0006,1030,4142,1333}},
{5,{0105,1030,4145,1636,2446}},
{5,{0006,1030,4142,1333,4446}},
{5,{1040,0102,1333,4445,0636}},
{5,{0040,2026}},
{5,{0005,4045,1636}},
{5,{0014,2526,3440}},
{5,{0006,1524,3546,4046}},
{5,{0046,0640}},
{5,{0022,2240,2326}},
{5,{0040,4105,0646}},
{3,{0006,0020,0626}},
{3,{2600}},
{3,{2026,0020,0626}},
{3,{0110,1021}},
{4,{0636}},
{3,{0011}},
{4,{1636,0505,1434,0222,3336}},
{4,{0006,1626,1222,3335}},
{4,{0305,1232,1636}},
{4,{0305,1232,1636,3036}},
{4,{1636,0305,1434,1222,3333}},
{4,{1116,2030,0232}},
{4,{0626,3235,1222,1424,0303}},
{4,{0006,1222,3336}},
{3,{1216,1010}},
{4,{2225,2020,1616}},
{4,{0006,1436,1432}},
{4,{1015,2626}},
{5,{0206,0232,2226,4346}},
{4,{0206,0222,3336}},
{4,{0305,1222,3335,1626}},
{4,{0206,1222,3334,1525}},
{4,{0304,1222,3236,1525}},
{4,{0206,1313,2232}},
{4,{1232,0303,1424,3535,0626}},
{4,{0232,1115,2636}},
{4,{0205,1636,3235}},
{4,{0206,0633,3232}},
{5,{0205,1616,2225,3636,4245}},
{4,{0203,0506,3233,3536,1424}},
{4,{0203,1434,3235,0626}},
{4,{0232,0636,3206}},
{3,{1112,0303,1415,2020,2626}},
{3,{1016}},
{3,{1112,2323,1415,0000,0606}},
{4,{0413,2433}}
}
function drawTextEx(x,y,t)
dx=x
for n,l in ipairs({t:byte(1,t:len())}) do
j=c[l-31]
if j~=nil then
for k,s in pairs(j[2]) do
screen.drawLine(dx+d(s,3),y+d(s,2),dx+d(s,1)+g(d(s,1)-d(s,3)),y+d(s,0)+g(d(s,0)-d(s,2)))
end
dx=dx+j[1]+1
end
end
end
function g(a)
return a>=0 and .5 or -.5
end
function d(p,i)
return math.floor(p/(10^(i)))%10
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment