diff --git a/FFXIVClassic Map Server/actors/director/GuildleveDirector.cs b/FFXIVClassic Map Server/actors/director/GuildleveDirector.cs index 7ff4892b..65001737 100644 --- a/FFXIVClassic Map Server/actors/director/GuildleveDirector.cs +++ b/FFXIVClassic Map Server/actors/director/GuildleveDirector.cs @@ -1,6 +1,8 @@ -using FFXIVClassic_Map_Server.actors.director.Work; +using FFXIVClassic.Common; +using FFXIVClassic_Map_Server.actors.director.Work; using FFXIVClassic_Map_Server.Actors; using FFXIVClassic_Map_Server.dataobjects; +using FFXIVClassic_Map_Server.utils; using System; using System.Collections.Generic; using System.Linq; @@ -29,14 +31,46 @@ namespace FFXIVClassic_Map_Server.actors.director guildleveWork.aimNumNow[0] = guildleveWork.aimNumNow[1] = guildleveWork.aimNumNow[2] = guildleveWork.aimNumNow[3] = 0; } - public void UpdateAimNum(int index, sbyte value) + public void StartGuildleve() { - + guildleveWork.startTime = Utils.UnixTimeStampUTC(); + ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/start", this, actorId); + propertyBuilder.AddProperty("guildleveWork.startTime"); + SendPacketsToPlayers(propertyBuilder.Done()); } - public void updateUiState(int index, sbyte value) + public void EndGuildleve() { + guildleveWork.startTime = 0; + guildleveWork.signal = -1; + ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/signal", this, actorId); + propertyBuilder.AddProperty("guildleveWork.signal"); + propertyBuilder.NewTarget("guildleveWork/start"); + propertyBuilder.AddProperty("guildleveWork.startTime"); + SendPacketsToPlayers(propertyBuilder.Done()); + } + public void UpdateAimNumNow(int index, sbyte value) + { + ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/infoVariable", this, actorId); + propertyBuilder.AddProperty(String.Format("guildleveWork.aimNumNow[{0}]", index)); + SendPacketsToPlayers(propertyBuilder.Done()); + } + + public void UpdateUiState(int index, sbyte value) + { + ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/infoVariable", this, actorId); + propertyBuilder.AddProperty(String.Format("guildleveWork.uiState[{0}]", index)); + SendPacketsToPlayers(propertyBuilder.Done()); + } + + public void SendPacketsToPlayers(List packets) + { + List players = GetPlayerMembers(); + foreach (Actor p in players) + { + ((Player)p).QueuePackets(packets); + } } } diff --git a/FFXIVClassic Map Server/actors/director/Work/GuildleveWork.cs b/FFXIVClassic Map Server/actors/director/Work/GuildleveWork.cs index 9d2990fc..105a427d 100644 --- a/FFXIVClassic Map Server/actors/director/Work/GuildleveWork.cs +++ b/FFXIVClassic Map Server/actors/director/Work/GuildleveWork.cs @@ -16,6 +16,7 @@ namespace FFXIVClassic_Map_Server.actors.director.Work public float[] markerX = new float[3]; public float[] markerY = new float[3]; public float[] markerZ = new float[3]; + public sbyte signal; } } diff --git a/FFXIVClassic Map Server/dataobjects/Session.cs b/FFXIVClassic Map Server/dataobjects/Session.cs index bdfcc561..5a83c565 100644 --- a/FFXIVClassic Map Server/dataobjects/Session.cs +++ b/FFXIVClassic Map Server/dataobjects/Session.cs @@ -38,6 +38,7 @@ namespace FFXIVClassic_Map_Server.dataobjects public void QueuePacket(SubPacket subPacket, bool isAuthed, bool isEncrypted) { + subPacket.header.targetId = id; Server.GetWorldConnection().QueuePacket(subPacket, isAuthed, isEncrypted); }