日本語で読みたかったので自分用に作成。
自分用なのでMarkdownで書いたやつをGithub Gist任せにしてそのまま上げてるだけです。
こちらを参考にしてます。
目次が長すぎるのでスマホだと読みづらいかも。
バージョン: v0.10.15
- 画面(screen)
- 描画色の指定.setColor(r, g, b [, a])
- 画面のクリア.drawClear()
- 線の描画.drawLine(x1, y1, x2, y2)
- 円の描画.drawCircle(x, y, radius), .drawCircleF(x, y, radius)
- 四角形の描画.drawRect(x, y, width, height), .drawRectF(x, y, width, height)
- 三角形の描画.drawTriangle(x1, y1, x2, y2, x3, y3), .drawTriangleF(x1, y1, x2, y2, x3, y3)
- テキストの描画.drawText(x, y, text)
- テキストボックスの描画.drawTextBox(x, y, width, height, text [, h_align, v_align])
- 地図の描画.drawMap(x, y, zoom)
- 地図の各地形の色の指定.setMapColorOcean(r, g, b [, a]), .setMapColorShallows(r, g, b [, a]), .setMapColorLand(r, g, b [, a]), .setMapColorGrass(r, g, b [, a]), .setMapColorSand(r, g, b [, a]), .setMapColorSnow(r, g, b [, a])
- 画面サイズの取得.getWidth(), .getHeight()
- 地図関連の座標変換(map)
- コンポジット入力(input)
- コンポジット出力(output)
- プロパティの取得(property)
- テレメトリ(async)
- その他、Luaの機能でよく使いそうなもの
onDraw()関数の中でしか呼べないので注意する。座標は左上が(0,0)。
描画色を指定する。aは透明度。
各値の範囲は0~255。以後、色の指定は全部そうなので説明省略。
画面のバックライトの影響か、思っているより明るい色になるので暗めに指定するとよい。
スクリーン全体を描画色で塗りつぶす。
指定した2点間に線を引く。
指定座標を中心とする円を描く。radiusは半径。
Fがついてる方は円形内部を塗りつぶす。
指定座標を左上とする四角形を描く。widthは幅、heightは高さ。
Fがついてる方は四角形内部を塗りつぶす。
指定した3点間を結んで三角形を描く。
Fがついてる方は三角形内部を塗りつぶす。
指定座標を左上としてテキストを描画する。フォントサイズは4x5。
指定座標を中心とする四角形の中にテキストを描画する。
h_alignとv_alignで左右及び上下の揃え(-1~1)を指定できる。デフォルトは両方とも-1(左上揃え)。
はみ出した分は収まるように自動で折り返されるが、テキスト量が多すぎる場合は上下にはみ出す。
指定座標を左上とした地図を描画する。zoomはスケール、0.1~50。
※zoom÷2がkm単位になるらしい。つまり、大きな数値を指定すると世界が見える。「倍率」と訳してしまうと感覚的に逆になってしまう。
地図の各地形の色の指定.setMapColorOcean(r, g, b [, a]), .setMapColorShallows(r, g, b [, a]), .setMapColorLand(r, g, b [, a]), .setMapColorGrass(r, g, b [, a]), .setMapColorSand(r, g, b [, a]), .setMapColorSnow(r, g, b [, a])
地図の描画で使われる色を指定する。
Oceanは海、Shallowsは浅瀬、Landは陸地、
Grassは草地、Sandは砂、Snowは雪や氷。
接続されているモニタの幅と高さを取得できる。
複数のモニタを使っててもonDraw()関数が複数回呼ばれるので気にせず取得しよう。
画面上の座標をワールド座標に変換する。返り値は変数2つで受け取る。
mapX、mapY、zoomで地図の描画設定を指定。ほかも適当に設定する。
タッチ入力のGPSナビとかに使えそう。
ワールド座標を画面上の座標に変換する。同上。
Stormworksの日本Wikiには以下のように書かれている。
タッチスクリーンはE
とQ
どちらのキーでもタッチできるが、両方のキーを押した場合、2つ目の入力座標が使われる。
点ではなく線を指定するのに使えそうだが、線を指定するような操作が思いつかない。1つ目だけ見ればいいんじゃないかな。
チャンネル | 内容 |
---|---|
Number 1 | 画面の幅 |
Number 2 | 画面の高さ |
Number 3 | X座標(1) |
Number 4 | Y座標(1) |
Number 5 | X座標(2) |
Number 6 | Y座標(2) |
Bool 1 | タッチ信号(1) |
Bool 2 | タッチ信号(2) |
入力と出力は完全に独立しているようなので、意図的にgetBoolしたものをsetBoolしない限り、入力側がそのまま出力に現れることはない。
この仕様を知ってないと面倒なことになる。なった。
指定したインデックス(1~32)の真偽値を取得する。
指定したインデックス(1~32)の数値を取得する。
入力と出力は完全に独立しているようなので、意図的にgetBoolしたものをsetBoolしない限り、入力側がそのまま出力に現れることはない。
また、値を書き込んで放置していてもfalseや0にはならず、最後に書き込んだ値を保持する。
この仕様を知ってないと面倒なことになる。なった。
指定したインデックス(1~32)に指定したブール値を書き込む。
指定したインデックス(1~32)に指定した数値を書き込む。
ラベルは大小文字が区別される。
ラベルを指定してブール値を取得する。
ラベルを指定して数値を取得する。
ラベルを指定してテキストを取得する。
localhostに対してHTTPリクエストを投げる。request_body
でアクセス先のページとGETパラメータを指定する。
例えば、async.httpGet(3000, "/sample.php?key=stormworks")
みたいな感じ。
リダイレクトは全くされないので、外部のサイト情報が欲しい場合はlocalhostに立てたサーバ側で代わりに取ってきてもらう。
関数として定義して使う。上の関数でリクエストを投げると、この関数が勝手にコールバックに指定される。受信すると呼び出される。
port
とrequest_body
はおそらく上の関数で指定したものと同じ。response_body
は帰ってきたボディ。普通はこの部分を美味しくいただく。
タイムアウトとかでエラーになっても呼ばれるのかな?そこは要検証。
数値と文字列の相互変換。ブール値も文字列にできるのかな?
数値変換ではbaseで何進数にするか指定できる。
弧度法(2π)と度数法(360°)の相互変換。マイコンの関数ブロックでも使えるようにしてほしい()
m~nの範囲でランダムな整数を返す。例外として、無指定ならば0~1の浮動小数点型。
mだけ指定すると、1~mの範囲で返す。mとnは非負整数。
math.randomseed(num)
で初期化できる。
正規表現で文字列を検索し、何文字目でマッチしたかを返す。1文字目が1なので注意。
initで何文字目から検索を始めるか指定できる。
plainはtrueにすると、正規表現ではなく単純な文字列として検索する。
正規表現で文字列を検索し、マッチしたすべての部分をaltの文字列に置換する。
nを指定すると、先頭から何回置き換えるかに制限を加えられる。
文字列中の小文字を大文字に統一する。使うことあるかな?
async.HTTPRequest(fail_callback, success_callback, url, method, headers, body)
正式に実装されたらこれも追記する