自分用仕様書 - nunu-e64/TENYU_RPG_CodeOnly GitHub Wiki

■コメントトークン
割とごちゃごちゃ。気にしない。
・TODO:未実装…新しい機能をここに作る
・HACK:要改善、要修正…とりあえず作っただけのところ、見直した方がいいところ、見直した方がよいかもしれないところ
・UNDONE:未完成・・・箱はできているが中身がない。swithの中のとあるcase等
・UNKOWN: 意味が分からないコード、削除したいけれど削除判断ができないコード
・DEBUG:デバッグ用機能。あとで削除すべき。

☆仮想継承×多重継承のコピーコンストラクタについて、親クラスのコピーコンストラクタで明示的に*this=objと記述しないと適切にコピーしてくれないみたい。

■よくある応答なしエラー原因
・各種コンストラクタやデストラクタにDxライブラリ関数を書くと起動しなくなる/応答が無くなる。要注意。
・ErrorDx系関数の引数に、string型の変数を.c_str()をつけずに使用
・ErrorDx系関数の可変個引数忘れ/間違い
・サイズを定義していないポインタ変数に代入処理

■トークコマンドはアクションコマンドよりも先に処理される
・@FLAG_BEGINと@Flag_Set, @COUNT_BEGINと@Count_Set, @DIR_BEGINと@DIr_Setの連続使用時には注意が必要。

■テキスト送りの仕様
・@Stopや@NextPageから、次の@Stopや@NextPageの間に表示すべきテキストがない場合、自動的に次のテキストを読み込む
・これは「テキストウィンドウが空欄になることはありえない」という設計思想による
・歩行中など次のテキスト表示が開始するまでの間、前のテキストを表示し続ける仕様に変更。
・同様の設計思想による。

■宗教イメージワード
聖歌、狂信者、聖域、神殿、ロザリオ(装飾品)、加護、教祖、異教徒狩り、儀式、祝福、裁き、天罰、天啓
・冬仁専用コマンド…「天啓」のような天にまつわる(ストーリー内で習得もあり)
・祈りに種類を作る…魔力回復、次に使う魔法の威力を倍にする「儀式」、

■用語集
・「コマンド」…@Visible_Setなど
・「シナリオコマンド」 ∋「トークコマンド」@DIR_IFBEGIN, NextPage ∋「アクションコマンド」Visible_Set, @Walk
・「システムコマンド」…初期設定に使う。画像読み込みやマップ読み込み,イベントオブジェクト作成等
・「テキスト」…コマンドファイル内のコマンドやコメント以外の、実際に画面に表示される文字列。

・「コマンドファイル」…system.rpg, scenario.rpg, event.rpg
・「イベントオブジェクト」…@Set_EventObj()で作るオブジェクト。NPCやBLOCKの総称。
・【狭義のオブジェクト】…オブジェクトマップ(2層目)によって描画されるもの。
 【広義のオブジェクト】…イベントオブジェクト+狭義のオブジェクト
・「イベント」…マップ上でスイッチを踏んだ時に発動する何か。たいていは会話。scenario.rpgに記述。
・「オリジナルイベント」=「マクロイベント」…event.rpgに記述し@Eventや@EventWrapで呼び出す自作イベントを指す。

・デジタル化…鬼才岩田が紙に鉛筆で書いたシナリオをPCで打ち込むこと。
・コマンドファイル化…デジタル化したシナリオを@EVENT_BEGINや@TName系コマンドで装飾して.rpgファイルにすること。
・イベント化…コマンドファイル化したシナリオに更にNPCの動きなどをつけて、マップとリンクさせること。演出。

■マップサイズ
・1byte=■■(16進数2桁) = 0~255 = [unsigned char]
・Mapは縦横のサイズは自由だが、数値(データサイズ)自体はByte(1byte)かIntか…などとサイズが制限されるので、2のべき乗だからと言って使う分だけドンピシャで決めることはできない
・チップセットは1マスが32*32であれば縦横サイズは何であってもエディタ・ゲーム本体ともに適切に読み込みがなされる。詳しくはエディタのReadMeとsystem.rpg参照。

■文字変数配列のサイズ
☆共通サイズ32のところはstruct char32を作るべき??
 →そろそろ意地張ってないでstringにしていこうかな

EveManager…NowName32, eventset_tag.Name32

TextBox…
char chStock[STOCK_LINE_NUM][WORD_MAX]; //STOCK_LINE_NUM=1000, WORD_MAX=256,
char chText[LINE_MAX][WORD_MAX]; //LINE_MAX=20, WORD_MAX=256

Load…char LoadText[TEXT_SIZE]256; //TEXT_SIZE=1000
シナリオ+オリジナルイベント<=1000行
システムコマンドファイル<=1000行

Map…ImgData_tag.Key32; ImgData_tag.Kind32;

EveObj…Name32

CommandList…Command[LIST_SIZE]256; //LIST_SIZE=100 (簡単に増やせる)

■イベントオブジェクト
イベントオブジェクト[BLOCK,PANEL…]は、同一構造体を使う。
通し番号はシステム内での登録順に決定。
検索はマップ番号とバイナリの値で決定。
要素Kindによって、種類を判定
元々の座標からの相対位置をDx,Dyにいれることで移動を表現。本体は動かないしイベントマップの書き換えもしない。

■CMap
ただのデータバンク。
ロードと描画はCMapでする。
現在地情報などはCFieldで管理。

■命名規則
○2014/12/16から・CAのコードレビューを受けて
・メンバ関数:パスカル記法
・メンバ変数:パスカル記法 …小文字開始が望ましいがこれまでと整合性が取れず書き換えコストが高すぎる
・ローカル変数:キャメル記法 …視認性の良さからスネークよりキャメルを採用
・引数変数:_から始まるキャメル記法 …同上

○2014/12/15まで
・メンバ関数:パスカル記法
・メンバ変数:パスカル記法
・ローカル変数:すべて小文字のスネーク記法
・引数変数:_から始まるすべて小文字。スネーク記法とキャメル記法が混在。(2014夏にCAインターンでAndroidStudioでJavaを触った時にキャメル記法が気に入ったため)

⚠️ **GitHub.com Fallback** ⚠️