Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
DispenserWidget.cs
浏览该文件的文档.
1using System.Xml.Linq;
2using Engine;
3
4namespace Game {
7
9
11
13
15
17
19
21
22 public DispenserWidget(IInventory inventory, ComponentDispenser componentDispenser) {
23 m_componentDispenser = componentDispenser;
25 m_subsystemTerrain = componentDispenser.Project.FindSubsystem<SubsystemTerrain>(true);
26 XElement node = ContentManager.Get<XElement>("Widgets/DispenserWidget");
27 LoadContents(this, node);
28 m_inventoryGrid = Children.Find<GridPanelWidget>("InventoryGrid");
29 m_dispenserGrid = Children.Find<GridPanelWidget>("DispenserGrid");
30 m_dispenseButton = Children.Find<ButtonWidget>("DispenseButton");
31 m_shootButton = Children.Find<ButtonWidget>("ShootButton");
32 m_acceptsDropsBox = Children.Find<CheckboxWidget>("AcceptsDropsBox");
33 int num = 0;
34 for (int i = 0; i < m_dispenserGrid.RowsCount; i++) {
35 for (int j = 0; j < m_dispenserGrid.ColumnsCount; j++) {
36 InventorySlotWidget inventorySlotWidget = new();
37 inventorySlotWidget.AssignInventorySlot(componentDispenser, num++);
38 m_dispenserGrid.Children.Add(inventorySlotWidget);
39 m_dispenserGrid.SetWidgetCell(inventorySlotWidget, new Point2(j, i));
40 }
41 }
42 num = 10;
43 for (int k = 0; k < m_inventoryGrid.RowsCount; k++) {
44 for (int l = 0; l < m_inventoryGrid.ColumnsCount; l++) {
45 InventorySlotWidget inventorySlotWidget2 = new();
46 inventorySlotWidget2.AssignInventorySlot(inventory, num++);
47 m_inventoryGrid.Children.Add(inventorySlotWidget2);
48 m_inventoryGrid.SetWidgetCell(inventorySlotWidget2, new Point2(l, k));
49 }
50 }
51 }
52
53 public override void Update() {
54 int value = m_componentBlockEntity.BlockValue;
55 int data = Terrain.ExtractData(value);
56 if (m_dispenseButton.IsClicked) {
57 data = DispenserBlock.SetMode(data, DispenserBlock.Mode.Dispense);
58 value = Terrain.ReplaceData(value, data);
59 m_componentBlockEntity.BlockValue = value;
60 }
61 if (m_shootButton.IsClicked) {
62 data = DispenserBlock.SetMode(data, DispenserBlock.Mode.Shoot);
63 value = Terrain.ReplaceData(value, data);
64 m_componentBlockEntity.BlockValue = value;
65 }
66 if (m_acceptsDropsBox.IsClicked) {
68 value = Terrain.ReplaceData(value, data);
69 m_componentBlockEntity.BlockValue = value;
70 }
72 m_dispenseButton.IsChecked = mode == DispenserBlock.Mode.Dispense;
73 m_shootButton.IsChecked = mode == DispenserBlock.Mode.Shoot;
74 m_acceptsDropsBox.IsChecked = DispenserBlock.GetAcceptsDrops(data);
75 if (!m_componentDispenser.IsAddedToProject) {
76 ParentWidget.Children.Remove(this);
77 }
78 }
79 }
80}
readonly WidgetsList Children
static object Get(Type type, string name)
static int SetMode(int data, Mode mode)
static bool GetAcceptsDrops(int data)
static Mode GetMode(int data)
static int SetAcceptsDrops(int data, bool acceptsDrops)
SubsystemTerrain m_subsystemTerrain
ComponentBlockEntity m_componentBlockEntity
GridPanelWidget m_dispenserGrid
DispenserWidget(IInventory inventory, ComponentDispenser componentDispenser)
GridPanelWidget m_inventoryGrid
ComponentDispenser m_componentDispenser
virtual void AssignInventorySlot(IInventory inventory, int slotIndex)
static int ReplaceData(int value, int data)
static int ExtractData(int value)
ContainerWidget ParentWidget
virtual void LoadContents(object eventsTarget, XElement node)
Component FindComponent(Type type, string name, bool throwOnError)