class RuneRb::Model::Player

Attributes

action_queue[R]

Interaction

appearance[R]
bank[R]
chat_queue[R]

Chat information

connection[R]

The EventMachine connection.

current_chat_message[RW]
current_shop[RW]
equipment[R]
gained_items[R]
in_cipher[R]
interface_state[R]
inventory[R]
io[R]
members[RW]
model[RW]
name[R]
name_long[R]
offered_items[R]
out_cipher[R]
password[R]
request_manager[R]

Trade

rights[RW]
session[R]
settings[RW]
skills[R]

Items

uid[R]

Info

used_item[RW]
used_loc[RW]
var[R]

Data

varp[R]

Public Class Methods

new(session) click to toggle source
Calls superclass method RuneRb::Model::Entity::new
# File app/model/player.rb, line 50
def initialize(session)
  super()
  @connection = session.connection
  @session = session
  @in_cipher = session.in_cipher
  @out_cipher = session.out_cipher
  @uid = session.uid
  @name = session.username
  @name_long = RuneRb::Misc::NameUtils.name_to_long(@name) #session.name_long
  @password = session.password
  @appearance = RuneRb::Player::Appearance.new
  @skills = RuneRb::Player::Skills.new(self)
  
  @var = OpenStruct.new
  @varp = OpenStruct.new
  
  @interface_state = RuneRb::Player::InterfaceState.new self
  @io = RuneRb::Net::ActionSender.new(self)
  @action_queue = RuneRb::Engine::ActionQueue.new
  
  @rights = :player
  @members = true
  @model = -1
  
  @flags.flag :appearance
  @teleporting = true
  
  @equipment = RuneRb::Item::Container.new false, 14
  @inventory = RuneRb::Item::Container.new false, 28
  @bank = RuneRb::Item::Container.new true, 352
  @settings = {}
    
  @request_manager = RuneRb::Player::RequestManager.new
  @offered_items = RuneRb::Item::Container.new false, 28
  @gained_items = RuneRb::Item::Container.new false, 28
  
  @chat_queue = []
  @current_chat_message = nil
end

Public Instance Methods

add_to_region(region) click to toggle source
# File app/model/player.rb, line 101
def add_to_region(region)
  region.players << self
end
change_session(session) click to toggle source
# File app/model/player.rb, line 90
def change_session(session)
  @connection = session.connection
  @session = session
  @in_cipher = session.in_cipher
  @out_cipher = session.out_cipher
  @uid = session.uid
  @name = session.username
  @name_long = RuneRb::Misc::NameUtils.name_to_long(@name)
  @password = session.password
end
remove_from_region(region) click to toggle source
# File app/model/player.rb, line 105
def remove_from_region(region)
  region.players.delete self
end
update_energy(running) click to toggle source
# File app/model/player.rb, line 109
def update_energy(running)
  @settings[:energy] ||= 100.0
  
  energy = @settings[:energy]
  
  if running
    # Decrease, we're running
    energy -= 0.6
  else
    # Increase, we're standing/walking
    energy += 0.2
  end
  
  # Cap 0 < energy < 100
  energy = 100.0 if energy > 100.0
  energy = 0.0 if energy < 0.0
  
  # Turn off if we're out of energy
  if running && energy < 1.0
    @walking_queue.run_toggle = false
    @settings[:move_speed] = 0
    @io.send_config 173, 0
  end
  
  # Save energy state
  @settings[:energy] = energy
  
  # Update client
  @connection.send_data RuneRb::Net::PacketBuilder.new(110).add_byte(@settings[:energy].to_i).to_packet
end