コード例 #1
0
        public override void OnSyncedMetaDataChangeEvent(IEntity entity, string key, object value)
        {
            base.OnSyncedMetaDataChangeEvent(entity, key, value);
            if (!SyncedMetaDataChangeAsyncDelegateHandlers.HasEvents())
            {
                return;
            }
            switch (entity)
            {
            case IPlayer playerEntity:
                var playerEntityReference = new PlayerRef(playerEntity);
                Task.Run(async() =>
                {
                    await SyncedMetaDataChangeAsyncDelegateHandlers.CallAsync(@delegate =>
                                                                              @delegate(entity, key, value));
                    playerEntityReference.Dispose();
                });
                break;

            case IVehicle vehicleEntity:
                var vehicleEntityReference = new VehicleRef(vehicleEntity);
                Task.Run(async() =>
                {
                    await SyncedMetaDataChangeAsyncDelegateHandlers.CallAsync(@delegate =>
                                                                              @delegate(entity, key, value));
                    vehicleEntityReference.Dispose();
                });
                break;

            default:
                Task.Run(() => SyncedMetaDataChangeAsyncDelegateHandlers.CallAsyncWithoutTask(@delegate =>
                                                                                              @delegate(entity, key, value)));
                break;
            }
        }
コード例 #2
0
        public override void OnWeaponDamageEvent(IntPtr eventPointer, IPlayer sourcePlayer, IEntity targetEntity, uint weapon, ushort damage,
                                                 Position shotOffset, BodyPart bodyPart)
        {
            base.OnWeaponDamageEvent(eventPointer, sourcePlayer, targetEntity, weapon, damage, shotOffset, bodyPart);
            if (!WeaponDamageAsyncEventHandler.HasEvents())
            {
                return;
            }
            var sourceReference = new PlayerRef(sourcePlayer);

            switch (targetEntity)
            {
            case IPlayer targetPlayer:
            {
                var targetReference = new PlayerRef(targetPlayer);
                Task.Run(async() =>
                    {
                        await WeaponDamageAsyncEventHandler.CallAsync(@delegate =>
                                                                      @delegate(sourcePlayer, targetEntity, weapon, damage, shotOffset, bodyPart));
                        sourceReference.Dispose();
                        targetReference.Dispose();
                    });
                break;
            }

            case IVehicle targetVehicle:
            {
                var targetReference = new VehicleRef(targetVehicle);
                Task.Run(async() =>
                    {
                        await WeaponDamageAsyncEventHandler.CallAsync(@delegate =>
                                                                      @delegate(sourcePlayer, targetEntity, weapon, damage, shotOffset, bodyPart));
                        sourceReference.Dispose();
                        targetReference.Dispose();
                    });
                break;
            }

            default:
                Task.Run(async() =>
                {
                    await WeaponDamageAsyncEventHandler.CallAsync(@delegate =>
                                                                  @delegate(sourcePlayer, targetEntity, weapon, damage, shotOffset, bodyPart));
                    sourceReference.Dispose();
                });
                break;
            }
        }
コード例 #3
0
        public override void OnVehicleRemoveEvent(IVehicle vehicle)
        {
            base.OnVehicleRemoveEvent(vehicle);
            if (!VehicleRemoveAsyncEventHandler.HasEvents())
            {
                return;
            }
            var vehicleReference = new VehicleRef(vehicle);

            Task.Run(async() =>
            {
                await VehicleRemoveAsyncEventHandler.CallAsync(@delegate =>
                                                               @delegate(vehicle));
                vehicleReference.Dispose();
            });
        }
コード例 #4
0
        public override void OnPlayerDamageEvent(IPlayer player, IEntity entity, uint weapon, ushort damage)
        {
            base.OnPlayerDamageEvent(player, entity, weapon, damage);
            if (!PlayerDamageAsyncEventHandler.HasEvents())
            {
                return;
            }
            var oldHealth       = player.Health;
            var oldArmor        = player.Armor;
            var oldMaxHealth    = player.MaxHealth;
            var oldMaxArmor     = player.MaxArmor;
            var playerReference = new PlayerRef(player);

            switch (entity)
            {
            case IPlayer playerEntity:
                var playerEntityReference = new PlayerRef(playerEntity);
                Task.Run(async() =>
                {
                    await PlayerDamageAsyncEventHandler.CallAsync(@delegate =>
                                                                  @delegate(player, entity, oldHealth, oldArmor, oldMaxHealth, oldMaxArmor, weapon, damage));
                    playerReference.Dispose();
                    playerEntityReference.Dispose();
                });
                break;

            case IVehicle vehicleEntity:
                var vehicleEntityReference = new VehicleRef(vehicleEntity);
                Task.Run(async() =>
                {
                    await PlayerDamageAsyncEventHandler.CallAsync(@delegate =>
                                                                  @delegate(player, entity, oldHealth, oldArmor, oldMaxHealth, oldMaxArmor, weapon, damage));
                    playerReference.Dispose();
                    vehicleEntityReference.Dispose();
                });
                break;

            default:
                Task.Run(async() =>
                {
                    await PlayerDamageAsyncEventHandler.CallAsync(@delegate =>
                                                                  @delegate(player, entity, oldHealth, oldArmor, oldMaxHealth, oldMaxArmor, weapon, damage));
                    playerReference.Dispose();
                });
                break;
            }
        }
コード例 #5
0
        public override void OnCheckPointEvent(ICheckpoint checkpoint, IEntity entity, bool state)
        {
            base.OnCheckPointEvent(checkpoint, entity, state);
            if (!CheckpointAsyncEventHandler.HasEvents())
            {
                return;
            }
            var checkpointReference = new CheckpointRef(checkpoint);

            switch (entity)
            {
            case IPlayer playerEntity:
                var playerEntityReference = new PlayerRef(playerEntity);
                Task.Run(async() =>
                {
                    await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state));
                    checkpointReference.Dispose();
                    playerEntityReference.Dispose();
                });
                break;

            case IVehicle vehicleEntity:
                var vehicleEntityReference = new VehicleRef(vehicleEntity);
                Task.Run(async() =>
                {
                    await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state));
                    checkpointReference.Dispose();
                    vehicleEntityReference.Dispose();
                });
                break;

            default:
                Task.Run(async() =>
                {
                    await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state));
                    checkpointReference.Dispose();
                });
                break;
            }


            Task.Run(async() =>
            {
                await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state));
                checkpointReference.Dispose();
            });
        }
コード例 #6
0
ファイル: AsyncModule.cs プロジェクト: so-lar/coreclr-module
        public override void OnVehicleDestroyEvent(IVehicle vehicle)
        {
            base.OnVehicleDestroyEvent(vehicle);
            if (!VehicleDestroyAsyncDelegateHandlers.HasEvents())
            {
                return;
            }
            var vehicleReference = new VehicleRef(vehicle);

            Task.Run(async() =>
            {
                vehicleReference.DebugCountUp();
                await VehicleDestroyAsyncDelegateHandlers.CallAsync(@delegate =>
                                                                    @delegate(vehicle));
                vehicleReference.DebugCountDown();
                vehicleReference.Dispose();
            });
        }
コード例 #7
0
        public override void OnPlayerLeaveVehicleEvent(IVehicle vehicle, IPlayer player, byte seat)
        {
            base.OnPlayerLeaveVehicleEvent(vehicle, player, seat);
            if (!PlayerLeaveVehicleAsyncEventHandler.HasEvents())
            {
                return;
            }
            var playerReference  = new PlayerRef(player);
            var vehicleReference = new VehicleRef(vehicle);

            Task.Run(async() =>
            {
                await PlayerLeaveVehicleAsyncEventHandler.CallAsync(@delegate =>
                                                                    @delegate(vehicle, player, seat));
                playerReference.Dispose();
                vehicleReference.Dispose();
            });
        }
コード例 #8
0
        public override void OnColShapeEvent(IColShape colShape, IEntity entity, bool state)
        {
            base.OnColShapeEvent(colShape, entity, state);
            if (!ColShapeAsyncDelegateHandlers.HasEvents())
            {
                return;
            }
            var colShapeReference = new ColShapeRef(colShape);

            switch (entity)
            {
            case IPlayer playerEntity:
                var playerEntityReference = new PlayerRef(playerEntity);
                Task.Run(async() =>
                {
                    await ColShapeAsyncDelegateHandlers.CallAsync(@delegate =>
                                                                  @delegate(colShape, entity, state));
                    playerEntityReference.Dispose();
                    colShapeReference.Dispose();
                });
                break;

            case IVehicle vehicleEntity:
                var vehicleEntityReference = new VehicleRef(vehicleEntity);
                Task.Run(async() =>
                {
                    await ColShapeAsyncDelegateHandlers.CallAsync(@delegate =>
                                                                  @delegate(colShape, entity, state));
                    vehicleEntityReference.Dispose();
                    colShapeReference.Dispose();
                });
                break;

            default:
                Task.Run(async() =>
                {
                    await ColShapeAsyncDelegateHandlers.CallAsync(@delegate =>
                                                                  @delegate(colShape, entity, state));
                    colShapeReference.Dispose();
                });
                break;
            }
        }
コード例 #9
0
        public override void OnPlayerDeathEvent(IPlayer player, IEntity killer, uint weapon)
        {
            base.OnPlayerDeathEvent(player, killer, weapon);
            if (!PlayerDeadAsyncEventHandler.HasEvents())
            {
                return;
            }
            var playerReference = new PlayerRef(player);

            switch (killer)
            {
            case IPlayer playerKiller:
                var playerKillerReference = new PlayerRef(playerKiller);
                Task.Run(async() =>
                {
                    await PlayerDeadAsyncEventHandler.CallAsync(@delegate =>
                                                                @delegate(player, killer, weapon));
                    playerReference.Dispose();
                    playerKillerReference.Dispose();
                });
                break;

            case IVehicle vehicleKiller:
                var vehicleKillerReference = new VehicleRef(vehicleKiller);
                Task.Run(async() =>
                {
                    await PlayerDeadAsyncEventHandler.CallAsync(@delegate =>
                                                                @delegate(player, killer, weapon));
                    playerReference.Dispose();
                    vehicleKillerReference.Dispose();
                });
                break;

            default:
                Task.Run(async() =>
                {
                    await PlayerDeadAsyncEventHandler.CallAsync(@delegate =>
                                                                @delegate(player, killer, weapon));
                    playerReference.Dispose();
                });
                break;
            }
        }
コード例 #10
0
ファイル: AsyncModule.cs プロジェクト: so-lar/coreclr-module
        public override void OnPlayerChangeVehicleSeatEvent(IVehicle vehicle, IPlayer player, byte oldSeat,
                                                            byte newSeat)
        {
            base.OnPlayerChangeVehicleSeatEvent(vehicle, player, oldSeat, newSeat);
            if (!PlayerChangeVehicleSeatAsyncEventHandler.HasEvents())
            {
                return;
            }
            var playerReference  = new PlayerRef(player);
            var vehicleReference = new VehicleRef(vehicle);

            Task.Run(async() =>
            {
                playerReference.DebugCountUp();
                vehicleReference.DebugCountUp();
                await PlayerChangeVehicleSeatAsyncEventHandler.CallAsync(@delegate =>
                                                                         @delegate(vehicle, player, oldSeat, newSeat));
                vehicleReference.DebugCountDown();
                playerReference.DebugCountDown();
                playerReference.Dispose();
                vehicleReference.Dispose();
            });
        }