Class: GameMachine::Clients::TestClient

Inherits:
Actor::Base
  • Object
show all
Defined in:
lib/game_machine/clients/test_client.rb

Constant Summary

Constants inherited from Actor::Base

Actor::Base::ON_RECEIVE_HOOKS

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Actor::Base

aspect, aspects, find, find_by_address, find_distributed, find_distributed_local, find_remote, hashring, local_path, model_filter, #onReceive, player_controller, #receive_message, #schedule_message, #sender, set_player_controller

Class Method Details

.start(name, port) ⇒ Object



115
116
117
118
119
120
121
# File 'lib/game_machine/clients/test_client.rb', line 115

def start(name,port)
  client = UdtClient.start(name,'localhost',port)
  proxy = TestClientProxy.new(name,client)
  Actor::Builder.new(self,name,port,proxy).with_name(name).start
  proxy.wait_for_ctx
  proxy
end

Instance Method Details

#on_receive(message) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/game_machine/clients/test_client.rb', line 132

def on_receive(message)
  if message.is_a?(JavaLib::DefaultChannelHandlerContext)
    @ctx = message
  elsif message == 'ctx'
    sender.tell(@ctx) if @ctx
  elsif message == 'stop'
    context.stop
  else
    @proxy.actual ||= []
    client_message = ClientMessage.parse_from(message.bytes)
    client_message.get_entity_list.each do |entity|
      GameMachine.logger.info "GOT #{entity.component_names.join(' | ')}"
      @proxy.actual << entity
    end
  end
end

#post_init(*args) ⇒ Object



125
126
127
128
129
130
# File 'lib/game_machine/clients/test_client.rb', line 125

def post_init(*args)
  @name = args[0]
  @port = args[1]
  @proxy = args[2]
  @ctx = nil
end