《SE》和 Script 的对应关系
游戏《太空工程师》(简称SE)里的物品结构和 Script 程序结构的对应关系。

这里有个叫 CC1 的 CargoContainer 。 暂时不去区分这个 CargoContainer 是 Large, Medium 还是 Small。


现在我们的目标是:将 CargoContainers 里的 Items 的信息通过 LCD Panel 展示出来。
我们的大致思路是:东西装在货箱里,先去货箱里头找,那么货箱在哪里,我们通过什么方法可以获 得所有的货箱呢?
GetBlocksOfType()方法就像一台自动打饭机,只要将饭盒放进打饭机的工作台里,打饭机运行完成后, 就将打饭机能找到的所有饭菜都放到饭盒里。这里临时给饭盒起个名字叫 containerlist。
不过GetBlocksOfType() 这台打饭机对装饭的饭盒有要求,去订购饭盒的时候要注意,饭盒的款式是一 个列表 List<>,所以写饭盒订购单的时候最起码要这样写:
进一步地,我们想要一个特定的饭盒,它只装饭(IMyCargoContainer),不装菜、肉等其它的东西。
在SE里头,IMyCargoContainer 代表 CargoContainer。GetBlocksOfType() 方法是在全体 Blocks 中找出()里的所代表的类型的 Block。


假设我们临时获取到了一个 CargoContainer,记录在一个叫 containertemp 的列表里头。我 们开始去箱里找东西。
这个 CargoContainer 就有点像个工厂,有不同的部门,我们要找东西要去 Inventory 部门, 除了 Inventory 部门外,还有其它的部门,例如要找这个 CargoContainer 的名字,要去 CustomName 部门。
这个 Inventory 部门也有一个像自动打饭机一样的东西,叫 GetItems() 的方法。所以去 Inventory 部门取东西之前,也要订购一个饭盒装东西。


接下来我们先来遍历箱子的列表:
最开始订购的饭盒是装 IMyCargoContainer 的,所以 foreach 里 containertemp 的形式也应当是 IMyCargoContainer。
然后来遍历物品列表:
去 Inventory 部门之前订的饭盒是装 MyInventoryItem 的,所以 foreach 里 itemtemp 的形式也应当是 MyInventoryItem。
最后,获取到的某个 itemtemp 就可以通过 itemtemp.Type.SubtypeId 方法获取物品的名称。

修改LCD的字体颜色。
方法是先建个 color 的 struct,然后对结构体里的 R,G,B,A 进行赋值,0~255。
