Skip to content

Commit

Permalink
Merge pull request #174 from project-fika/dev-3.1.0-transit
Browse files Browse the repository at this point in the history
Transit > Dev 3.10
  • Loading branch information
Lacyway authored Oct 9, 2024
2 parents 2b8e7b6 + 583c11d commit c5b8f18
Show file tree
Hide file tree
Showing 39 changed files with 2,814 additions and 1,552 deletions.
1 change: 0 additions & 1 deletion Fika.Core/Coop/ClientClasses/CoopClientGameWorld.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ public override void Dispose()
{
base.Dispose();
NetManagerUtils.DestroyNetManager(false);
FikaBackendUtils.MatchingType = EMatchmakerType.Single;
}

public override void PlantTripwire(Item item, string profileId, Vector3 fromPosition, Vector3 toPosition)
Expand Down
107 changes: 107 additions & 0 deletions Fika.Core/Coop/ClientClasses/FikaClientTransitController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
using Comfort.Common;
using EFT;
using EFT.Interactive;
using Fika.Core.Coop.GameMode;
using Fika.Core.Coop.Players;
using Fika.Core.Coop.Utils;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Fika.Core.Coop.ClientClasses
{
public class FikaClientTransitController : GClass1618
{
public FikaClientTransitController(BackendConfigSettingsClass.GClass1505 settings, LocationSettingsClass.Location.TransitParameters[] parameters, Profile profile, LocalRaidSettings localRaidSettings)
: base(settings, parameters)
{
OnPlayerEnter += OnClientPlayerEnter;
OnPlayerExit += OnClientPlayerExit;
string[] array = localRaidSettings.transition.visitedLocations.EmptyIfNull().Append(localRaidSettings.location).ToArray();
summonedTransits[profile.Id] = new GClass1614(localRaidSettings.transition.transitionRaidId, localRaidSettings.transition.transitionCount, array);
TransferItemsController.InitItemControllerServer(FikaGlobals.TransitTraderId, FikaGlobals.TransiterTraderName);
this.localRaidSettings = localRaidSettings;
}
public GStruct176 InteractPacket { get; set; }

private readonly LocalRaidSettings localRaidSettings;

private void OnClientPlayerEnter(TransitPoint point, Player player)
{
if (!transitPlayers.ContainsKey(player.ProfileId))
{
TransferItemsController.InitPlayerStash(player);
if (player is CoopPlayer coopPlayer)
{
coopPlayer.UpdateBtrTraderServiceData().HandleExceptions();
}
}
}

private void OnClientPlayerExit(TransitPoint point, Player player)
{

}

public void Init()
{
method_1(dictionary_0.Values);
}

public override void Dispose()
{
base.Dispose();
OnPlayerEnter -= OnClientPlayerEnter;
OnPlayerExit -= OnClientPlayerExit;
}

public void HandleClientExtract(int transitId, int playerId)
{
if (!smethod_0(playerId, out Player myPlayer))
{
return;
}

if (!dictionary_0.TryGetValue(transitId, out TransitPoint transitPoint))
{
FikaPlugin.Instance.FikaLogger.LogError("FikaClientTransitController::HandleClientExtract: Could not find transit point with id: " + transitId);
return;
}

string location = transitPoint.parameters.location;
ERaidMode eraidMode = ERaidMode.Local;
if (TarkovApplication.Exist(out TarkovApplication tarkovApplication))
{
eraidMode = ERaidMode.Local;
tarkovApplication.transitionStatus = new GStruct136(location, false, localRaidSettings.playerSide, eraidMode, localRaidSettings.timeVariant);
}
string profileId = myPlayer.ProfileId;
Dictionary<string, ProfileKey> profileKeys = [];
profileKeys.Add(profileId, new()
{
_id = profileId,
keyId = InteractPacket.keyId,
isSolo = true
});

GClass1883 gclass = new()
{
hash = Guid.NewGuid().ToString(),
playersCount = 1,
ip = "",
location = location,
profiles = profileKeys,
transitionRaidId = summonedTransits[profileId].raidId,
raidMode = eraidMode,
side = myPlayer.Side is EPlayerSide.Savage ? ESideType.Savage : ESideType.Pmc,
dayTime = localRaidSettings.timeVariant
};

alreadyTransits.Add(profileId, gclass);
if (Singleton<IFikaGame>.Instance is CoopGame coopGame)
{
coopGame.Extract((CoopPlayer)myPlayer, null, transitPoint);
}
}
}
}
Loading

0 comments on commit c5b8f18

Please sign in to comment.