예제 #1
0
        public static void SendDamageToServer(VehicleEntity vehicle, EntityKey entityKey, float damage)
        {
            var e = VehicleDamangeSyncEvent.Allocate();

            e.EType          = VehicleSyncEventType.Damage;
            e.SourceObjectId = vehicle.entityKey.Value.EntityId;
            e.TargetObject   = entityKey;
            e.Damage         = damage;
            var comp = vehicle.vehicleSyncEvent;

            comp.SyncEvents.Enqueue(e);
        }
예제 #2
0
        public static IVehicleSyncEvent FromProtoBuf(VehicleEventMessage message)
        {
            switch (message.EventType)
            {
            case (int)VehicleSyncEventType.Damage:
            {
                var damageSyncEvent = VehicleDamangeSyncEvent.Allocate();
                damageSyncEvent.EType          = VehicleSyncEventType.Damage;
                damageSyncEvent.SourceObjectId = message.SourceId;
                damageSyncEvent.TargetObject   = new EntityKey(message.Ints[1], (short)message.Ints[0]);
                damageSyncEvent.Damage         = message.Floats[0];
                return(damageSyncEvent);
            }

            default:
                throw new Exception("Unkown VehicleSyncEventType : " + message.EventType);
            }
        }
        private void ProcessDamageSyncEvent(VehicleDamangeSyncEvent e)
        {
            switch (e.TargetObject.EntityType)
            {
            case (int)EEntityType.Player:
                var player = _contexts.player.GetEntityWithEntityKey(e.TargetObject);
                if (player != null)
                {
                    DoProcessDamageToPlayer(_contexts, player, e.Damage);
                }
                break;

            case (int)EEntityType.Vehicle:
                var vehicle = _contexts.vehicle.GetEntityWithEntityKey(e.TargetObject);
                if (vehicle != null)
                {
                    DoProcessDamageToVehicle(vehicle, e.Damage);
                }
                break;
            }
        }