209 lines
9.1 KiB
C#
209 lines
9.1 KiB
C#
public class NetPackageQuestPointTreasureSDX : NetPackage
|
|
{
|
|
public NetPackageQuestPointTreasureSDX Setup(int _playerId, float _distance, int _offset, int _questCode, int posX = 0, int posY = -1, int posZ = 0, bool _useNearby = false)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-Setup A");
|
|
this.playerId = _playerId;
|
|
this.distance = _distance;
|
|
this.offset = _offset;
|
|
this.questCode = _questCode;
|
|
this.position = new Vector3i(posX, posY, posZ);
|
|
this.useNearby = _useNearby;
|
|
this.treasureOffset = Vector3.zero;
|
|
this.ActionType = QuestPointActions.GetGotoPoint;
|
|
return this;
|
|
}
|
|
|
|
public NetPackageQuestPointTreasureSDX Setup(int _playerId, int _questCode, int _blocksPerReduction, Vector3i _position, Vector3 _treasureOffset)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-Setup B");
|
|
this.playerId = _playerId;
|
|
this.distance = 0f;
|
|
this.offset = 0;
|
|
this.questCode = _questCode;
|
|
this.position = _position;
|
|
this.treasureOffset = _treasureOffset;
|
|
this.blocksPerReduction = _blocksPerReduction;
|
|
this.ActionType = QuestPointActions.GetTreasurePoint;
|
|
return this;
|
|
}
|
|
|
|
public NetPackageQuestPointTreasureSDX Setup(int _questCode, float _distance, int _offset, float _treasureRadius, Vector3 _startPosition, int _playerId, bool _useNearby, int _blocksPerReduction)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-Setup C");
|
|
this.playerId = _playerId;
|
|
this.distance = _distance;
|
|
this.offset = _offset;
|
|
this.questCode = _questCode;
|
|
this.treasureRadius = _treasureRadius;
|
|
this.position = new Vector3i(_startPosition);
|
|
this.useNearby = _useNearby;
|
|
this.treasureOffset = Vector3.zero;
|
|
this.blocksPerReduction = _blocksPerReduction;
|
|
this.ActionType = QuestPointActions.GetTreasurePoint;
|
|
return this;
|
|
}
|
|
|
|
public NetPackageQuestPointTreasureSDX Setup(int _questCode, Vector3i _updatedPosition)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-Setup D");
|
|
this.questCode = _questCode;
|
|
this.position = _updatedPosition;
|
|
this.ActionType = QuestPointActions.UpdateTreasurePoint;
|
|
return this;
|
|
}
|
|
|
|
public NetPackageQuestPointTreasureSDX Setup(int _questCode, int _blocksPerReduction)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-Setup E");
|
|
this.questCode = _questCode;
|
|
this.blocksPerReduction = _blocksPerReduction;
|
|
this.ActionType = QuestPointActions.UpdateBlocksPerReduction;
|
|
return this;
|
|
}
|
|
|
|
public override void read(PooledBinaryReader _br)
|
|
{
|
|
this.ActionType = (QuestPointActions)_br.ReadByte();
|
|
if (this.ActionType == QuestPointActions.UpdateTreasurePoint)
|
|
{
|
|
this.questCode = _br.ReadInt32();
|
|
this.position = StreamUtils.ReadVector3i(_br);
|
|
return;
|
|
}
|
|
this.playerId = _br.ReadInt32();
|
|
this.distance = _br.ReadSingle();
|
|
this.offset = _br.ReadInt32();
|
|
this.treasureRadius = _br.ReadSingle();
|
|
this.blocksPerReduction = _br.ReadInt32();
|
|
this.questCode = _br.ReadInt32();
|
|
this.position = StreamUtils.ReadVector3i(_br);
|
|
this.treasureOffset = StreamUtils.ReadVector3(_br);
|
|
this.useNearby = _br.ReadBoolean();
|
|
}
|
|
|
|
public override void write(PooledBinaryWriter _bw)
|
|
{
|
|
_bw.Write((byte)this.PackageId);
|
|
_bw.Write((byte)this.ActionType);
|
|
if (this.ActionType == QuestPointActions.UpdateTreasurePoint)
|
|
{
|
|
_bw.Write(this.questCode);
|
|
StreamUtils.Write(_bw, this.position);
|
|
return;
|
|
}
|
|
_bw.Write(this.playerId);
|
|
_bw.Write(this.distance);
|
|
_bw.Write(this.offset);
|
|
_bw.Write(this.treasureRadius);
|
|
_bw.Write(this.blocksPerReduction);
|
|
_bw.Write(this.questCode);
|
|
StreamUtils.Write(_bw, this.position);
|
|
StreamUtils.Write(_bw, this.treasureOffset);
|
|
_bw.Write(this.useNearby);
|
|
}
|
|
|
|
public override void ProcessPackage(World _world, GameManager _callbacks)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage START");
|
|
if (_world == null)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 1");
|
|
return;
|
|
}
|
|
if (_world.IsRemote())
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 2");
|
|
Quest quest = GameManager.Instance.World.GetPrimaryPlayer().QuestJournal.FindActiveQuest(this.questCode);
|
|
if (quest != null)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 3");
|
|
for (int i = 0; i < quest.Objectives.Count; i++)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage i: " + i);
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage ID: " + quest.Objectives[i].ID);
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage Value: " + quest.Objectives[i].Value);
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage Value: " + quest.Objectives[i].ObjectiveValueType);
|
|
|
|
if (quest.CurrentPhase == quest.Objectives[i].Phase)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 4");
|
|
if (quest.Objectives[i] is ObjectiveTreasureChest)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 5");
|
|
if (this.ActionType == QuestPointActions.GetTreasurePoint)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 6");
|
|
((ObjectiveTreasureChest)quest.Objectives[i]).FinalizePointFromServer(this.blocksPerReduction, this.position, this.treasureOffset);
|
|
}
|
|
else if (this.ActionType == QuestPointActions.UpdateBlocksPerReduction)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 7");
|
|
((ObjectiveTreasureChest)quest.Objectives[i]).CurrentBlocksPerReduction = this.blocksPerReduction;
|
|
}
|
|
}
|
|
else if (quest.Objectives[i] is ObjectiveGotoRandomSDX)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage 8");
|
|
((ObjectiveGotoRandomSDX)quest.Objectives[i]).FinalizePoint(this.position.x, this.position.y, this.position.z);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if (this.ActionType == QuestPointActions.UpdateTreasurePoint)
|
|
{
|
|
QuestEventManager.Current.SetTreasureContainerPosition(this.questCode, this.position);
|
|
return;
|
|
}
|
|
if (this.ActionType == QuestPointActions.UpdateBlocksPerReduction)
|
|
{
|
|
QuestEventManager.Current.UpdateTreasureBlocksPerReduction(this.questCode, this.blocksPerReduction);
|
|
return;
|
|
}
|
|
for (int j = 0; j < 15; j++)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage j: " + j);
|
|
Vector3i vector3i = ObjectiveGotoRandomSDX.CalculateRandomPoint(this.playerId, this.distance, "");
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage vector3i: " + vector3i);
|
|
Vector3i vector3iCompare = new Vector3i(0, -99999, 0);
|
|
//if (QuestEventManager.Current.GetTreasureContainerPosition(this.questCode, this.distance, this.offset, this.treasureRadius, this.position.ToVector3(), this.playerId, this.useNearby, this.blocksPerReduction, out this.blocksPerReduction, out vector3i, out this.treasureOffset))
|
|
if (vector3i != vector3iCompare)
|
|
{
|
|
//Log.Out("NetPackageQuestPointTreasureSDX-ProcessPackage SEND TO CLIENT: " + this.playerId);
|
|
SingletonMonoBehaviour<ConnectionManager>.Instance.SendPackage(NetPackageManager.GetPackage<NetPackageQuestPointTreasureSDX>().Setup(this.playerId, this.questCode, this.blocksPerReduction, vector3i, this.treasureOffset), false, this.playerId, -1, -1, null, 192);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
public override int GetLength()
|
|
{
|
|
////Log.Out("NetPackageQuestPointTreasureSDX-GetLength-Start");
|
|
if (this.ActionType == QuestPointActions.UpdateTreasurePoint)
|
|
{
|
|
return 65;
|
|
}
|
|
else return 49;
|
|
}
|
|
|
|
private int playerId;
|
|
private float distance;
|
|
private int offset;
|
|
private float treasureRadius;
|
|
private int questCode;
|
|
private Vector3i position;
|
|
private bool useNearby;
|
|
private Vector3 treasureOffset = Vector3.zero;
|
|
private int blocksPerReduction;
|
|
private QuestPointActions ActionType;
|
|
private enum QuestPointActions
|
|
{
|
|
GetGotoPoint,
|
|
GetTreasurePoint,
|
|
UpdateTreasurePoint,
|
|
UpdateBlocksPerReduction
|
|
}
|
|
}
|