Elin Decompiled Documentation EA 23.298 Nightly
Loading...
Searching...
No Matches
ListPeopleParty.cs
Go to the documentation of this file.
1using System.Linq;
2
4{
5 public bool CanJoinParty(Chara c)
6 {
7 if (!c.IsPC)
8 {
9 if (!c.isDead && !c.HasCondition<ConSuspend>() && c.currentZone != null && c.trait.CanJoinParty)
10 {
12 }
13 return false;
14 }
15 return true;
16 }
17
18 public override void OnRefreshMenu()
19 {
20 base.OnRefreshMenu();
21 if (!main)
22 {
23 return;
24 }
25 WindowMenu menuLeft = window.menuLeft;
26 menuLeft.AddSpace();
27 menuLeft.AddHeader("party");
28 menuLeft.AddSpace(13f);
29 if (EClass.pc.party.members.Count > 1)
30 {
31 menuLeft.AddButton("disband", delegate
32 {
34 SE.Trash();
35 RefreshAll();
36 });
37 }
38 for (int j = 0; j < 5; j++)
39 {
40 int i = j;
42 if (setup == null)
43 {
44 menuLeft.AddButton("party_empty".lang((i + 1).ToString() ?? ""), delegate
45 {
46 if (EClass.pc.party.members.Count == 1)
47 {
48 SE.Beep();
49 }
50 else
51 {
52 SE.Equip();
54 RefreshAll();
55 }
56 });
57 continue;
58 }
59 UIButton uIButton = menuLeft._AddButton("Party", null);
60 uIButton.SetOnClick(delegate
61 {
63 foreach (int uid in setup.uids)
64 {
65 Chara chara3 = EClass.game.cards.globalCharas.Find(uid);
66 if (chara3 != null && !chara3.IsPC && CanJoinParty(chara3))
67 {
68 JoinParty(chara3);
69 if (chara3.uid == setup.ride)
70 {
71 ActRide.Ride(EClass.pc, chara3, parasite: false, talk: false);
72 }
73 else if (chara3.uid == setup.parasite)
74 {
75 ActRide.Ride(EClass.pc, chara3, parasite: true, talk: false);
76 }
77 }
78 }
79 SE.Equip();
80 RefreshAll();
81 });
82 bool flag = true;
83 foreach (int uid2 in setup.uids)
84 {
85 Chara chara = EClass.game.cards.globalCharas.Find(uid2);
86 if (chara == null || !CanJoinParty(chara))
87 {
88 flag = false;
89 }
90 }
91 uIButton.mainText.SetText("party_load".lang((i + 1).ToString() ?? ""), flag ? FontColor.Good : FontColor.Warning);
92 uIButton.SetTooltip(delegate(UITooltip n)
93 {
94 n.note.Clear();
95 n.note.AddHeader("faction_Member");
96 foreach (int uid3 in setup.uids)
97 {
98 Chara chara2 = EClass.game.cards.globalCharas.Find(uid3);
99 string text = ((chara2 == null) ? "???" : chara2.NameBraced);
100 if (chara2 != null)
101 {
102 if (chara2.uid == setup.ride)
103 {
104 text = text + " " + "party_ride".lang();
105 }
106 else if (chara2.uid == setup.parasite)
107 {
108 text = text + " " + "party_parasite".lang();
109 }
110 }
111 n.note.AddText(text, (chara2 == null || chara2.isDead) ? FontColor.Bad : ((!CanJoinParty(chara2)) ? FontColor.Warning : FontColor.Good));
112 }
113 n.note.Build();
114 });
115 uIButton.GetComponentInDirectChildren<UIButton>().SetOnClick(delegate
116 {
117 SE.Trash();
118 EClass.player.partySetups[i] = null;
119 RefreshAll();
120 });
121 }
122 }
123
124 public override void OnInstantiate(Chara c, ItemGeneral i)
125 {
126 Zone zone = (main ? c.currentZone : c.homeZone);
127 if (main)
128 {
129 i.SetSubText((zone == null) ? "???" : zone.Name, 240);
130 }
131 UIButton uIButton = i.AddSubButton(EClass.core.refs.icons.fav, delegate
132 {
133 SE.ClickGeneral();
134 c.isFav = !c.isFav;
135 RefreshAll();
136 }, null, null, "fav");
137 uIButton.icon.SetAlpha(c.isFav ? 1f : 0.3f);
138 uIButton.icon.SetNativeSize();
139 }
140
141 public override void OnClick(Chara c, ItemGeneral i)
142 {
143 if (main)
144 {
145 if (!CanJoinParty(c))
146 {
147 SE.Beep();
149 {
150 Msg.Say("ride_req");
151 }
152 return;
153 }
154 JoinParty(c);
155 }
156 else
157 {
158 if (c.IsPC)
159 {
160 SE.Beep();
161 return;
162 }
164 if (c.homeZone != EClass._zone)
165 {
166 c.MoveZone(c.homeZone);
167 }
168 }
169 MoveToOther(c);
170 base.Main.OnRefreshMenu();
171 }
172
173 public void JoinParty(Chara c)
174 {
175 if (c.currentZone != EClass._zone)
176 {
178 c.MoveImmediate(EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? EClass.pc.pos);
179 }
181 }
182
183 public override void OnList()
184 {
185 if (main)
186 {
187 foreach (Chara value in EClass.game.cards.globalCharas.Values)
188 {
189 if (value.IsPCFaction && !value.IsPCParty && value.memberType == FactionMemberType.Default)
190 {
191 list.Add(value);
192 }
193 }
194 return;
195 }
196 foreach (Chara member in EClass.pc.party.members)
197 {
198 list.Add(member);
199 }
200 list.sortMode = UIList.SortMode.ByPartyOrder;
201 }
202
204 {
205 return EClass.Home.listReserve.First((HireInfo a) => a.chara == c);
206 }
207}
FactionMemberType
FontColor
Definition: FontColor.cs:2
static void Ride(Chara host, Chara t, bool parasite=false, bool talk=true)
Definition: ActRide.cs:52
Chara Find(string id)
Definition: CardManager.cs:20
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isFav
Definition: Card.cs:927
Point pos
Definition: Card.cs:60
int uid
Definition: Card.cs:123
void MoveImmediate(Point p, bool focus=true, bool cancelAI=true)
Definition: Card.cs:5983
Definition: Chara.cs:10
new TraitChara trait
Definition: Chara.cs:505
override bool IsPC
Definition: Chara.cs:626
override bool IsPCParty
Definition: Chara.cs:629
Party party
Definition: Chara.cs:43
bool HasCondition(string alias)
Definition: Chara.cs:9635
override bool IsPCFaction
Definition: Chara.cs:685
string NameBraced
Definition: Chara.cs:516
Zone currentZone
Definition: Chara.cs:257
FactionMemberType memberType
Definition: Chara.cs:46
Zone homeZone
Definition: Chara.cs:269
bool isDead
Definition: Chara.cs:391
void MoveZone(string alias)
Definition: Chara.cs:3383
Sprite fav
Definition: CoreRef.cs:112
Icons icons
Definition: CoreRef.cs:355
CoreRef refs
Definition: Core.cs:51
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static Faction Home
Definition: EClass.cs:27
static Core core
Definition: EClass.cs:7
static Zone _zone
Definition: EClass.cs:21
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
List< HireInfo > listReserve
Definition: FACTION.cs:138
CardManager cards
Definition: Game.cs:156
Chara chara
Definition: HireInfo.cs:6
UIButton AddSubButton(Sprite sprite, Action action, string lang=null, Action< UITooltip > onTooltip=null, string id=null)
Definition: ItemGeneral.cs:97
UIButton SetSubText(string lang, int x, FontColor c=FontColor.Default, TextAnchor align=TextAnchor.MiddleLeft)
Definition: ItemGeneral.cs:161
void RefreshAll(bool freeze=true)
Definition: ListOwner.cs:125
override void OnList()
override void OnInstantiate(Chara c, ItemGeneral i)
HireInfo GetInfo(Chara c)
void JoinParty(Chara c)
override void OnClick(Chara c, ItemGeneral i)
override void OnRefreshMenu()
bool CanJoinParty(Chara c)
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
void Disband()
Definition: Party.cs:241
void RemoveMember(Chara c)
Definition: Party.cs:102
List< Chara > members
Definition: Party.cs:19
void AddMemeber(Chara c, bool showMsg=false)
Definition: Party.cs:57
void RegisterSetup(int index)
Definition: Party.cs:223
List< int > uids
Definition: Player.cs:921
PartySetup[] partySetups
Definition: Player.cs:1203
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
Definition: Point.cs:619
virtual string Name
Definition: Spatial.cs:509
virtual bool CanJoinParty
Definition: TraitChara.cs:47
virtual bool CanJoinPartyResident
Definition: TraitChara.cs:50
Image icon
Definition: UIButton.cs:110
Definition: UIList.cs:9
SortMode
Definition: UIList.cs:27
void Clear()
Definition: UINote.cs:35
UIItem AddHeader(string text, Sprite sprite=null)
Definition: UINote.cs:79
UIItem AddText(string text, FontColor color=FontColor.DontChange)
Definition: UINote.cs:113
void Build()
Definition: UINote.cs:49
UINote note
Definition: UITooltip.cs:21
UIButton _AddButton(string idButton, Sprite sprite)
Definition: WindowMenu.cs:126
void AddHeader(string idLang, Sprite sprite=null)
Definition: WindowMenu.cs:54
void AddSpace(float height=30f)
Definition: WindowMenu.cs:60
UIButton AddButton(string idLang, Action< UIButton > onClick, Sprite sprite=null, string idButton="Default")
Definition: WindowMenu.cs:67
WindowMenu menuLeft
Definition: Window.cs:700
Definition: Zone.cs:12