Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
FurnitureSetItemWidget.cs
浏览该文件的文档.
1using System.Xml.Linq;
2using Engine;
4
5namespace Game {
8
10 public bool m_highlighted;
11 public const string fName = "FurnitureSetItemWidget";
12
13 public FurnitureSetItemWidget(FurnitureInventoryPanel furnitureInventoryWidget, FurnitureSet furnitureSet) {
14 m_furnitureInventoryPanel = furnitureInventoryWidget;
15 m_furnitureSet = furnitureSet;
16 XElement node = ContentManager.Get<XElement>("Widgets/FurnitureSetItemWidget");
17 LoadContents(this, node);
18 LabelWidget labelWidget = Children.Find<LabelWidget>("FurnitureSetItem.Name");
19 LabelWidget labelWidget2 = Children.Find<LabelWidget>("FurnitureSetItem.DesignsCount");
20 labelWidget.Text = furnitureSet == null ? LanguageControl.Get(fName, 0) : furnitureSet.Name;
21 labelWidget2.Text = string.Format(LanguageControl.Get(fName, 1), CountFurnitureDesigns());
22 }
23
24 public void DragDrop(Widget dragWidget, object data) {
25 FurnitureDesign furnitureDesign = GetFurnitureDesign(data);
26 if (furnitureDesign != null) {
27 m_furnitureInventoryPanel.SubsystemFurnitureBlockBehavior.AddToFurnitureSet(furnitureDesign, m_furnitureSet);
28 m_furnitureInventoryPanel.Invalidate();
29 }
30 }
31
32 public void DragOver(Widget dragWidget, object data) {
33 m_highlighted = GetFurnitureDesign(data) != null;
34 }
35
36 public override void MeasureOverride(Vector2 parentAvailableSize) {
38 base.MeasureOverride(parentAvailableSize);
39 }
40
41 public override void Draw(DrawContext dc) {
42 if (m_highlighted) {
44 int count = flatBatch2D.TriangleVertices.Count;
45 flatBatch2D.QueueQuad(Vector2.Zero, ActualSize, 0f, new Color(128, 128, 128, 128));
46 flatBatch2D.TransformTriangles(GlobalTransform, count);
47 m_highlighted = false;
48 }
49 }
50
51 public FurnitureDesign GetFurnitureDesign(object dragData) {
52 if (dragData is InventoryDragData inventoryDragData) {
53 int slotValue = inventoryDragData.Inventory.GetSlotValue(inventoryDragData.SlotIndex);
54 if (Terrain.ExtractContents(slotValue) == 227) {
55 int designIndex = FurnitureBlock.GetDesignIndex(Terrain.ExtractData(slotValue));
56 return m_furnitureInventoryPanel.SubsystemFurnitureBlockBehavior.GetDesign(designIndex);
57 }
58 }
59 return null;
60 }
61
62 public int CountFurnitureDesigns() {
63 int num = 0;
64 for (int i = 0; i < m_furnitureInventoryPanel.ComponentFurnitureInventory.SlotsCount; i++) {
65 int slotValue = m_furnitureInventoryPanel.ComponentFurnitureInventory.GetSlotValue(i);
66 if (Terrain.ExtractContents(slotValue) == 227) {
67 int designIndex = FurnitureBlock.GetDesignIndex(Terrain.ExtractData(slotValue));
68 FurnitureDesign design = m_furnitureInventoryPanel.SubsystemFurnitureBlockBehavior.GetDesign(designIndex);
69 if (design != null
70 && design.FurnitureSet == m_furnitureSet) {
71 num++;
72 }
73 }
74 }
75 return num;
76 }
77 }
78}
readonly DynamicArray< VertexPositionColor > TriangleVertices
void TransformTriangles(Matrix matrix, int start=0, int end=-1)
static readonly DepthStencilState None
void QueueQuad(Vector2 corner1, Vector2 corner2, float depth, Color color)
FlatBatch2D FlatBatch(int layer=0, DepthStencilState depthStencilState=null, RasterizerState rasterizerState=null, BlendState blendState=null)
readonly WidgetsList Children
static object Get(Type type, string name)
static int GetDesignIndex(int data)
FurnitureSetItemWidget(FurnitureInventoryPanel furnitureInventoryWidget, FurnitureSet furnitureSet)
FurnitureDesign GetFurnitureDesign(object dragData)
FurnitureInventoryPanel m_furnitureInventoryPanel
override void MeasureOverride(Vector2 parentAvailableSize)
override void Draw(DrawContext dc)
void DragOver(Widget dragWidget, object data)
void DragDrop(Widget dragWidget, object data)
static string Get(string className, int key)
获取在当前语言类名键对应的字符串
static int ExtractContents(int value)
static int ExtractData(int value)
readonly PrimitivesRenderer2D PrimitivesRenderer2D
bool IsDrawRequired
Vector2 ActualSize
virtual void LoadContents(object eventsTarget, XElement node)
Matrix GlobalTransform
static readonly Vector2 Zero