『愛とはあなたを破壊する魔法』制作記録十二
進捗
ティラノスクリプト版のプログラミングなどをしました。
ティラノ版について
引き続きティラノ版のプログラミングをしています。
Ren’py版をなるべく再現しています。
さすがにメニューボタンとメニュー画面の二カラム表示はできなくて諦めました。
画像左が二カラム表示のメニュー、右が一カラム表示のメニューです。
システム改造について
ティラノスクリプトのいろいろなシステムを改造しています。
例えばバックログ画面は、発言ごとにキャラクターアイコンが表示されるようにしています。
また発言一つにつき一つの枠で表示されるようにしています。
セーブ画面では、現在読み進めている章名が表示されるようにしています。
また地味な変更点として、枠に収まらないメッセージ文章を省略して「…」を付けるようにしています。
またセーブデータが無い状態を示す文章を変更しました。
セーブデータが無い場合、デフォルトの表示文章は「まだ、保存されているデータがありません。」になります。
「tyrano」フォルダにある「lang.js」ファイル五行目を書き換えることで、この表示文章を変更できます。
私は別途javascriptファイルを用意して、そこで値を上書きしています。
通知表示について
ver515betaから追加されたイベントリスナを使用して、スキップ・オート・セーブ通知を作りました。
イベントリスナを使用したシムテム制作に関しては以下のページを参照しました。
具体的なコードを紹介します。
まず通知用のHTMLファイルを作成します。ファイル名は「auto_notify.html」です。
<div class="oct_notify oct_auto_notify">
Auto
</div>
通知のデザインはCSSファイルを作成して設定します。ファイル名は「style.css」です。
/*色設定。変数で管理*/
:root {
--color__white1: #f3f2ee;
--color__gray2: #858582;
}
/*アニメーション*/
/*Autoの隣で動き続けるドットアニメーション*/
@keyframes anm_dot {
0% {
content: "";
}
25% {
content: ".";
}
50% {
content: "..";
}
75% {
content: "...";
}
}
/*通知の退場アニメーション*/
@keyframes anm_notify_fadeout {
0% {
opacity: 1.0;
}
75% {
opacity: 1.0;
}
100% {
opacity: 0;
}
}
.oct_notify {
/*位置指定*/
position: fixed;
top: 200px;
left: 0;
/*z-indexを設定しないと、背景画像やメッセージ画像などに通知が隠れてしまう*/
z-index: 999999999;
/*デザイン部分*/
display: flex;
padding: 0.75rem 2rem 0.75rem 4rem;
box-sizing: border-box;
font-size: 2rem;
line-height: 100%;
border-radius: 0 4px 4px 0;
font-family: "sabu_font";
color: var(--color__gray2);
background-color: var(--color__white1);
}
.oct_notify::after {
/*アニメーション用設定*/
content: "";
animation: anm_dot 2s steps(4) infinite;
animation-duration: 1s;
/*デザイン部分*/
display: block;
min-width: 2rem;
height: 2rem;
margin-left: 0.5rem;
}
適当なjavascriptファイルを作成します。ここでは「main.js」ファイルを作成しました。
通知を表示する関数と非表示にする関数を作成します。
通知の表示は先ほど作成した「auto_notify.html」ファイルを読み込んで行い、非表示はremove関数を使用して行います。
(通知の表示内容は、変数で直接設定してもよいと思います)
//通知表示関数
function oct_show_auto_notify(){
const elements_with_class_tyarano_base = document.querySelector(".tyrano_base");
fetch( "./data/other/html/auto_notify.html")
.then(response => response.text())
.then(html => {
elements_with_class_tyarano_base.insertAdjacentHTML("afterbegin", html);
})
.catch(error => {
console.error("ファイルの読み込みエラー:", error);
});
}
//通知非表示関数
function oct_hide_auto_notify(){
const elements_with_class_oct_auto_notify = document.querySelector(".oct_auto_notify");
elements_with_class_oct_auto_notify.remove();
}
イベントリスナを登録します。
第一引数にイベント名、第二引数に先ほど作成した関数を指定します。
今回はオートが開始されたことを示す「auto-start」と、オートが終了したことを示す「auto-stop」をそれぞれ使用しました。
TYRANO.kag.on("auto-start", oct_show_auto_notify)
TYRANO.kag.on("auto-stop", oct_hide_auto_notify)
main.jsとstyle.cssを適当なksファイルで読み込みます。起動後ゲーム開始までに必ず実行する場所で読み込むべきです。読み込む代表的な場所はfirst.ksファイルです。
[loadjs storage="main.js"]
[loadcss file="./data/other/style.css"]
以上の方法で、ゲーム中オート通知を表示させることができました。
進捗状況について
諸事情あり、今まで通りの創作時間が取りづらくなってきました。
そのためゲーム完成予定時期を今年中に変更します。
あと少しで完成というところで完成時期が延びるのは、完成をお預けにされているようで、心苦しいです。
ですがあと少しということは、あとは完成させるだけという心意気でゲーム制作ができることでもあります。最悪スチル無しならほぼ公開できる状態でもあるので、もうほとんど完成しているのだと考えながら、気楽に作業できそうです。
引き続きがんばります。