2017年1月30日 星期一

製作日誌--014

小鳥偽春菜已經一個月沒有更新了
一開始放假就失去了時間感
直到今天早上才想起今天是星期日
幸好休息一個月之後沒有失去戰鬥力

本次更新有一項非常重要的事情必須宣布
「南小鳥人格新增了備忘錄功能 」
雖然是臨時想到可以新增的功能
作為對SakuraScript的練習也是個不錯的挑戰
目前只有最基本的功能
詳細會在下面做討論

###溝通###

新增了一些溝通內容
備忘錄功能就是在增加溝通對話時想到的主意

###備忘錄###

本次更新的重點
以下會說明一下個人的對此功能的構想與做法
首先,我認為備忘錄不應該因為偽春菜主程式的關閉而消失
且應該可以隨時新增項目、查看、清空和刪除項目
並且在使用者要出門前可以提醒要帶出去的東西

接著是我已完成的部分
現在只有新增項目、察看與清空的功能
出門提醒的功能還沒引入,但這部份很簡單

首先我先在aya_bootend.dic的OnFirstBoot事件中加入兩個參數

memo = "<空白>"
memoisblank = 1

memo參數的型態為字串(string),這個參數就是整本備忘錄
而memoisblank則是用來判定memo目前是否為空白
由於個人不希望當備忘錄空白時,查看備忘錄時就真的看到空白
因此用"<空白>"來表示目前沒有記錄任何項目

接下來則是加入一些專門處理memo的函式
先新增一個叫做aya_memo.dic的檔案
(詳細處理方式請參考005─**事件處理**的部分)
並在裡面加入兩個函式

ClearMemo
{
    memo = "<空白>"
    memoisblank = 1
}

OnAddMemo
{
    if reference0 != ""
    {
        if memoisblank == 1
        {
            memo = ""
            memoisblank = 0
        }
        memo += reference0 + "\n"
    }
    "\0\s[0]已經幫%(username)把提醒寫進備忘錄囉!\e"
}

第一個ClearMemo就是將備忘錄整個清空
第二個OnAddMemo則為新增項目
先判定使用者有無輸入內容
如果有,再判斷目前備忘錄是否為空白
如果有輸入且備忘錄為空白
則將memoisblank設為0,且將memo設為""
再加入新增項目
如果有輸入且備忘錄已有內容
則直接加入新增項目
如果沒有輸入內容
小鳥依然會告訴你已更新備忘錄
但其實她什麼也沒做(.8.)

再來就是要提供使用者存取備忘錄的方式
首先在OpenMenu中多加上這行

"\q[○備忘錄,memo]\n"

這樣在開啟主菜單時便會多出備忘錄的選項
接著再加上

Select.memo
{
    Memo
}


Memo
{
    "\0\s[0]\n\n/
    \q[○查看,open_memo]\n/
    \q[○新增項目,add_memo]\n/
    \q[○清空,clear_memo]\e"
}


如此一來使用者便可以在主菜單找到備忘錄的功能了
接著便要寫入現有的三個互動式功能
第一個是"查看"

Select.open_memo
{
    "\0\s[0]這是%(username)的備忘錄:\n\n%(memo)\e"
}

這裡應該不需要多加說明了,就只是將memo作為變數存取並顯示出來而已

第二個是"新增項目"

Select.add_memo
{
    "\0\s[0]請問要加入什麼項目呢?\![open,inputbox,OnAddMemo,-1]\e"
}

這裡我們注意到新的語法\![open,inputbox,OnAddMemo,-1]
這個語法的功能是打開輸入視窗,等待使用者輸入內容
詳細說明如下:
\![open,inputbox,ID,(等待時間),(預設輸入內容)]
(括號內的內容為選擇性參數,可輸入可不輸入)
首先,由於開啟了inputbox
如果使用者有輸入內容,則會引發OnUserInput事件
而ID會被當作reference0被傳入OnUserInput作為事件名稱
而使用者輸入內容則是作為reference1被傳入
等待時間以毫秒為單位,超過等待時間就會自動關閉輸入框
若等待時間為-1,則代表輸入框會等到使用者輸入內容或自行關閉才會關閉
而預設輸入內容則是在輸入框出現時
顯示在輸入欄的文字
作為提醒使用者目前該輸入的內容,是個貼心的設計

這個語法有個特別的用法
當ID所表的事件名稱為On開頭,會跳過OnUserInput事件
直接執行ID所表示的事件名稱
也就是上面範例碼的用法
因此當使用者輸入(或沒有輸入)內容時
程式會自動跳轉到aya_memo.dic內定義的OnAddMemo函式
這也是會什麼該函式要以On作為開頭的原因

第三個是"清空"

Select.clear_memo
{
    "\0\s[0]這就幫你把備忘錄清空!\e"
    ClearMemo
}

以上是目前備忘錄的功能
對特定內容作刪除可能還需要更多字串處理的工作
然後不排除會新增備忘錄的其他功能

###唱歌###

將唱歌的表情實裝
但發現唱歌時不會執行動嘴的動畫

=============================================================

雖然畫了唱歌時的動嘴動畫
但上面已經說了
並不會被執行
因此今天沒有新的圖檔

2017/01/30

沒有留言:

張貼留言