-
Notifications
You must be signed in to change notification settings - Fork 27
/
TouchingByDef.cs
98 lines (81 loc) · 2.85 KB
/
TouchingByDef.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System.Text;
using RimWorld;
using UnityEngine;
using Verse;
namespace CommunityCoreLibrary.Commands
{
public class TouchingByDef : Command
{
readonly Thing parentThing;
readonly Action_OnThings ClickLeft = null;
readonly Action_OnThings ClickRight = null;
public override string Desc
{
get
{
var addedToOutput = false;
var stringBuilder = new StringBuilder();
if( ( ClickLeft != null )&&
( parentThing.Position.IsInRoom() ) )
{
stringBuilder.Append( "CommandGroupOfThingsLClick".Translate() );
addedToOutput = true;
}
if( ClickRight != null )
{
if( addedToOutput )
{
stringBuilder.AppendLine( ";" );
}
stringBuilder.Append( "CommandGroupOfThingsRClick".Translate() );
}
return stringBuilder.ToString();
}
}
public override SoundDef CurActivateSound
{
get
{
return SoundDefOf.Click;
}
}
public TouchingByDef(
Thing parent,
Texture2D designatorIcon,
Action_OnThings LeftClick = null,
Action_OnThings RightClick = null
)
{
parentThing = parent;
icon = designatorIcon;
ClickLeft = LeftClick;
ClickRight = RightClick;
defaultDesc = Desc;
var stringBuilder = new StringBuilder();
stringBuilder.AppendFormat( "CommandGroupOfThingsByDefLabel".Translate(), parent.def.label );
defaultLabel = stringBuilder.ToString();
}
public override void ProcessInput( Event ev )
{
base.ProcessInput( ev );
// Process a list of touching things by def
if( !parentThing.IsSameThingDefTouching() )
{
return;
}
// Left click (if assigned) all in room
if( ( ClickLeft != null )&&
( ev.button == 0 )&&
( parentThing.Position.IsInRoom() ) )
{
ClickLeft.Invoke( parentThing.ListSameThingDefTouching( true ) );
}
// right click (if assigned) all on map
else if( ( ClickRight != null )&&
( ev.button == 1 ) )
{
ClickRight.Invoke( parentThing.ListSameThingDefTouching( false ) );
}
}
}
}