MDT-JS模組事件觸發(fā)器

事件觸發(fā)器,在MDT中就像一個廣播,為游戲里各種事件的觸發(fā)提供了一個信號,讓游戲各個部分的運行更有邏輯,而在JS模組中也算一個相對重要的東西

事件觸發(fā)
源碼
從上述源碼不難得出,事件觸發(fā)有兩種方法。接下來,我們將這兩種方法結合到游戲直觀的體會用處

on方法
上述代碼在收到`WaveEvent`后會進行地圖最高波數的檢測與修改操作,并且在最后播放`wave`(Mindustry\core\assets\sounds\wave.ogg)的音效

不難看出,在傳入參數時:
第一個應傳入`類型事件`
所有可用的事件類型均在mindustry.game.EventType#58行以后
所有js已經導入直接可用的事件類型可均在Mindustry\core\assets\scripts\global.js#129-196
第二個應傳入一個`函數`
一般形式的函數和箭頭函數均可使用
接下來將其改寫成js形式,使每次`WaveEvent`發(fā)出后顯示一段文本,可以得到

或許你注意到了,有一些事件在收到之后會額外附帶一些信息,這些信息可以讓我們進一步判斷這個發(fā)出的事件是否是我們想要的,接下來我們結合源碼體會其用處
上述代碼會在玩家撿起T5級別單位時完成一個成就(成就系統我不清楚是以什么樣的形式顯示的)。再查看`PickupEvent`的定義
我們便可以知道,這些額外的信息為拾起單位、被拾起單位和被拾起方塊

所以在使用on方法時,我們可以在傳入第二個參數(即函數)時給函數添加一個形參,用于接收這個具體事件的額外信息
然后,將其改為js的形式,使每次`PickupEvent`發(fā)出后且被拾起方塊邊長為2時顯示一段文本,可以得到

run方法
這段代碼會在收到`teamCoreDamage`觸發(fā)器時顯示提示字樣(實際上是間接顯示的,只是本期教程針對的是`事件觸發(fā)器`)

由此可以得出,在使用run方法時應傳入參數:
第一個為`觸發(fā)器`
因為觸發(fā)器在游戲沒有直接引入而是引入的`Trigger`,所以需要通過`Trigger`來引用
所有可用的觸發(fā)器在mindustry.game.EventType#17找到
第二個為`函數`
注意的事項就和on方法一樣。但不同的是,使用Trigger時沒有額外的信息
于是,在核心受到攻擊時,我們可以改寫為如下形式

事件發(fā)出
如果沒有事件沒有發(fā)出,其他的東西也就不會觸發(fā),因而我們需要有發(fā)出事件的方法。接下來查看源碼的定義
從這段代碼,我們可以得出共有兩種方法來發(fā)出事件,接下來結合游戲和源碼

觸發(fā)器
這段代碼可以在本隊核心受到攻擊時,發(fā)出`teamCoreDamage`的觸發(fā)器

于是我們便可以得出,若要使用發(fā)出一個觸發(fā)器的fire方法,直接傳入一個觸發(fā)器即可,改寫成js,并在點擊任何地面時發(fā)出

類型事件
這段代碼會在玩家研究新內容時,發(fā)出一個類型事件,并且附帶`解鎖的方塊`這一信息

所以我們可以知道,在發(fā)出一個類型事件時,需要傳入一個實例化的類型事件
將其改成js的形式,使核心在受到攻擊時發(fā)出`UnlockEvent`可以得到
但是看完上述代碼,你可能會有疑問:`Events.fire`不是本身就是個函數嗎?為什么不可以直接傳入`Events.run`的第二個參數,但由于內容加載的順序(這個我并不清楚),如果將其改寫之后會拋出空指針異常。所以我們需要將其寫在一個函數里面,來避免這種情況的發(fā)生

后言
關于游戲原版的具體內容,大概上算是定型了,字段的名稱也大概不會再變了,而且很多的字段翻譯后即可簡單使用。但是對于js模組,我個人也在慢慢摸索,所以會出的比較慢,每篇文章找游戲內合適的示例就要找挺久,同時請諒解一下

雜言
此處內容與教程沒有任何關系
本以為在中考之后,終于可以在回頭更新一下js教程,稍微填一下之前留下的坑,但是考試的結果不盡人意:理科不行,文科更是不行,連擅長的科目都犯錯。盡管家人讓我不要在意考試的成績,讓我暑假放松一下,但我發(fā)現我玩的時候壓根就沒法好好玩,玩的時候沒法專注,玩完了以后又不知從何而來的負罪感和后悔感,又導致了學習不好、玩游戲也不行,干啥啥不行。感覺這三年來,我的情緒波動是越來越大,有些時候可能上一秒還在開心,然后就突然僵住。對于社交,也是越來越膽小,以前我和別人在線下隨便就搭上話了,現在和同學或老師交談時連基本的眼神對視都不敢,不知從何而來的底氣不足,有時交談自己的真情時明明就是芝麻小事,都不知道為什么情緒控制不住,或者在網上玩狼人殺、或者什么cfm啥的多人游戲,明明別人都不認識我,也見不到我,就是連個開麥說話的勇氣都沒有;隊友觀戰(zhàn)我時,總是怕自己拖累整個隊伍,明明都只是場游戲,但我發(fā)現我做不到。學習成績比我好,心態(tài)好的人可比我多太多了,每次都會想:我對這個世界有什么用處呢?又或者我自出生到現在以來是不是過于矯情了呢?總是覺得自己之前做過的事情都非常的傻,每次都會懷疑之前為什么做這件事情。大概就說這么多吧