class VJoy

Attributes

id[R]

Public Class Methods

acquire(id) click to toggle source
# File lib/ffi-vjoy.rb, line 135
def self.acquire(id)
  AcquireVJD(id)
end
new(id) click to toggle source
# File lib/ffi-vjoy.rb, line 72
def initialize(id)
  raise("Could not acquire vJoy ##{id}.") unless AcquireVJD(id)
  
  @id = id
  @button_state = []
  @axis_state = {}
  @disc_pov_state = []
  @cont_pov_state = []
end
reset() click to toggle source
# File lib/ffi-vjoy.rb, line 131
def self.reset
  ResetAll()
end
status(id) click to toggle source
# File lib/ffi-vjoy.rb, line 139
def self.status(id)
  case GetVJDStatus(id)
    when VJD_STAT_OWN
      return :own
    when VJD_STAT_FREE
      return :free
    when VJD_STAT_BUSY
      return :busy
    when VJD_STAT_MISS
     return :missing
    else
      return :unknown
  end
end

Public Instance Methods

axis(axis, value) click to toggle source
# File lib/ffi-vjoy.rb, line 89
def axis(axis, value)
  axis = AXIS_MAP[axis] || axis
  raise("Invalid axis type \"#{axis}\".") unless axis.is_a?(Numeric)
  
  value = 1.0 if value > 1.0
  value = -1.0 if value < -1.0
  value = (value * 0x4000 + 0x4000).to_i
  
  return true if @axis_state[axis] == value
  @axis_state[axis] = value
  
  SetAxis(value, @id, axis)
end
button(button, value) click to toggle source
# File lib/ffi-vjoy.rb, line 82
def button(button, value)
  return true if @button_state[button] == value
  @button_state[button] = value
  
  SetBtn(value, @id, button)
end
cont_pov(pov, value) click to toggle source
# File lib/ffi-vjoy.rb, line 113
def cont_pov(pov, value)
  value = CONT_POV_MAP[value] || value
  raise("Invalid POV value \"#{value}\".") unless value.is_a?(Numeric)
  
  value = -1 if value < 0
  value = (value * 36000.0 % 36000.0).to_i if value >= 0
  
  return true if @cont_pov_state[pov] == value
  @cont_pov_state[pov] = value
  
  SetContPov(value, @id, pov)
end
disc_pov(pov, value) click to toggle source
# File lib/ffi-vjoy.rb, line 103
def disc_pov(pov, value)
  value = DISC_POV_MAP[value] || value
  raise("Invalid POV value \"#{value}\".") unless value.is_a?(Numeric)
  
  return true if @disc_pov_state[pov] == value
  @disc_pov_state[pov] = value
  
  SetDiscPov(value, @id, pov)
end
reset() click to toggle source
# File lib/ffi-vjoy.rb, line 126
def reset
  ResetVJD(@id)
  AXIS_MAP.each { | symbol, id | axis(id, 0) }
end