饥荒采用面向对象的编程范型,其核心是class 文件,利用lua元表,实现类的继承。
在饥荒里有着千奇百怪的类,动物是类,界面是类,连地图也是类,看饥荒的源码,主要把握各个类之间的继承与关系,弄清楚在什么时候需要用到哪一个类,这个变量试试哪个类的实例,它继承了类的哪些方法,又有什么属性可以调用。
Widget和screen 两个文件夹是关于界面的,每个文件其实都定义了一个类,它们都有着共同的一个基类——widget,定义在widget/widget.lua 里。
而screen 继承了widget,两种文件结构基本相同。
继承了screen 的子类,会在其它的文件或其它的screen里被调用,我不可能一个个讲,我讲一些典型的,剩下的以此类推过去吧。
用TheFrontEnd:ShowScreen(ScreenClass(…)) 可以在游戏上显示一个界面,具体层次由各个文件决定。
我们饥荒在无安装任何mod时,第一个载入的界面是mainscreen 而 当我们有安装mod或者代码出现错误时,会显示scripterrorscreen 。
注:并不是所有的错误都会显示错误界面,而是代码错误不“危害全局”时才显示错误,不然会直接闪退或者显示某某内存不能读写,如果出现这种情况,原因也就那三四个,等以后整理一下发出来。
额,扯远了(其实我还想再扯一下的),用
TheFrontEnd:ClearScre