Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
MeetingManager.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using Newtonsoft.Json;
3
4public class MeetingManager : EClass
5{
6 [JsonProperty]
7 public List<Meeting> list = new List<Meeting>();
8
10
11 public BaseArea room;
12
13 public bool CanStartMeeting
14 {
15 get
16 {
17 if (list.Count > 0)
18 {
19 return SetRoom() != null;
20 }
21 return false;
22 }
23 }
24
25 public void SetOwner(FactionBranch _branch)
26 {
27 branch = _branch;
28 foreach (Meeting item in list)
29 {
30 item.SetOwner(branch);
31 }
32 }
33
34 public void OnSimulateHour(VirtualDate date)
35 {
36 if (list.Count > 0)
37 {
38 for (int num = list.Count - 1; num >= 0; num--)
39 {
40 if (list[num].dateExipire != 0 && date.IsExpired(list[num].dateExipire))
41 {
42 list.RemoveAt(num);
43 }
44 }
45 }
46 _ = list.Count;
47 }
48
49 public void Add(VirtualDate date)
50 {
51 MeetingMerchant meetingMerchant = new MeetingMerchant();
52 meetingMerchant.dateExipire = date.GetRaw() + 10080;
53 list.Add(meetingMerchant);
54 if (date.IsRealTime)
55 {
56 Msg.Say("newMeeting");
57 }
58 }
59
60 public void Add(Meeting m)
61 {
62 list.Add(m);
63 }
64
65 public void Remove(Meeting m)
66 {
67 list.Remove(m);
68 }
69
71 {
72 if (EClass._map.props.installed.Find<TraitSpotMeeting>()?.trait is TraitSpotMeeting traitSpotMeeting)
73 {
74 room = traitSpotMeeting.owner.Cell.room;
75 if (room == null)
76 {
77 room = new VirtualRoom(traitSpotMeeting.owner);
78 }
79 }
80 else
81 {
82 room = EClass._map.rooms.listRoom.RandomItem();
83 }
84 return room;
85 }
86
87 public void Start()
88 {
89 SetRoom();
90 Thing emptySeat = room.GetEmptySeat();
91 EClass.pc.MoveImmediate(emptySeat?.pos ?? room.GetRandomPoint(walkable: true, allowChara: false));
92 CallNext();
93 }
94
95 public void CallNext()
96 {
97 if (list.Count != 0)
98 {
99 Point chara = room.GetEmptySeat()?.pos ?? room.GetRandomPoint(walkable: true, allowChara: false);
100 Meeting meeting = list[0];
101 list.RemoveAt(0);
102 meeting.SetChara(chara);
103 Chara maid = EClass.Branch.GetMaid();
104 if (maid != null)
105 {
106 GameLang.refDrama1 = meeting.chara.Name;
107 LayerDrama.Activate("_chara", null, "meeting", maid).SetOnKill(meeting.Start);
108 }
109 else
110 {
111 meeting.Start();
112 }
113 }
114 }
115}
Thing GetEmptySeat()
Definition: BaseArea.cs:73
virtual Point GetRandomPoint(bool walkable=true, bool allowChara=true)
Definition: BaseArea.cs:88
string Name
Definition: Card.cs:2013
Point pos
Definition: Card.cs:55
void MoveImmediate(Point p, bool focus=true, bool cancelAI=true)
Definition: Card.cs:5127
Definition: Chara.cs:10
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
bool IsExpired(int time)
Definition: Date.cs:332
Definition: EClass.cs:5
static Map _map
Definition: EClass.cs:18
static FactionBranch Branch
Definition: EClass.cs:22
static Chara pc
Definition: EClass.cs:14
static LayerDrama Activate(string book, string idSheet, string idStep, Chara target=null, Card ref1=null, string tag="")
Definition: LayerDrama.cs:66
Layer SetOnKill(Action action)
Definition: Layer.cs:579
PropsManager props
Definition: Map.cs:91
RoomManager rooms
Definition: Map.cs:31
List< Meeting > list
void OnSimulateHour(VirtualDate date)
BaseArea SetRoom()
void SetOwner(FactionBranch _branch)
FactionBranch branch
void Add(VirtualDate date)
void Add(Meeting m)
void Remove(Meeting m)
void Start()
Definition: Meeting.cs:46
void SetChara(Point pos)
Definition: Meeting.cs:22
Chara chara
Definition: Meeting.cs:11
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Point.cs:9
PropsInstalled installed
Definition: PropsManager.cs:8
Thing Find(int uid)
Definition: Props.cs:357
List< Room > listRoom
Definition: RoomManager.cs:13
Definition: Thing.cs:8
bool IsRealTime
Definition: VirtualDate.cs:7