ledmon 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f21693c2c076399ef05501077615eeb624f9888202b131c3a1b19dc0b0d231fe
4
- data.tar.gz: 452693d925de81c17b7fa29a895939b30f0d18e1e2ad1ac679528d5eaad4e3c1
3
+ metadata.gz: eb901e8c9f54f002cfba8ceb35d2da3e860f247f1d763c142efdbbfed3538c3f
4
+ data.tar.gz: ffada8db0c7e6977c421a0b8544279b73886fe597d3f04499b97414167164357
5
5
  SHA512:
6
- metadata.gz: cf93fddaa169169c2093021f1fb0232b1194ac193ce95582c3e841fda1190f5bc643da5d988b0385aaa37db62133af5c04e5268dd9656e2742867f0746c9c1a9
7
- data.tar.gz: 779225ceb84e6bc9f5af58ad572f827cdb32c7319a1dd9bddb5e53dd1afa3429a055a4edf149ac2891eeb4dc7bb06850e85291cca49809d5d23c025abb1582b4
6
+ metadata.gz: 388f073ad79448d7ff9b984bc16eec85e4166fbcd2b01a5102a9349760b125a3e6fd0ca42e5ee88932bf04fc4e5d5a2a96a1ff42a0b21a17ba3cd4cb23f2a1ee
7
+ data.tar.gz: 8053612e34fdc79ea8a6efe27ff08b553c8e4a97d598ec0449464c61763337ddf0033119771c43ce64d8fb2bf17c662812021a80ce1993bcbb304100662e2bee
data/Rakefile CHANGED
@@ -5,8 +5,4 @@ require "rspec/core/rake_task"
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- require "rubocop/rake_task"
9
-
10
- RuboCop::RakeTask.new
11
-
12
- task default: %i[spec rubocop]
8
+ task default: %i[spec]
@@ -25,5 +25,14 @@ module Ledmon::CLI
25
25
  config_value :auth
26
26
  config_value :mode
27
27
  config_value :log_level
28
+
29
+ desc "show", "Show current configuration"
30
+
31
+ def show
32
+ %i[host grpc_port http_port http_proto auth mode log_level].each do |name|
33
+ value = Ledmon::Config.public_send(name)
34
+ puts "#{name}: #{value}"
35
+ end
36
+ end
28
37
  end
29
38
  end
@@ -40,7 +40,7 @@ module Ledmon::Monster
40
40
  return true, last_challenge_response.challenge_id, last_challenge_response.challenge_input, last_challenge_algo_output
41
41
  elsif response.action == :FAILURE
42
42
  logger.debug("Challenge failed!")
43
- return false, last_challenge_response.challenge_id, last_challenge_response.challenge_input, last_challenge_algo_output
43
+ return false, last_challenge_response&.challenge_id, last_challenge_response&.challenge_input, last_challenge_algo_output
44
44
  end
45
45
  end
46
46
  end
@@ -53,6 +53,10 @@ module Ledmon::Monster
53
53
  client.research(Ledmon::ItemInfo.new(item:))
54
54
  end
55
55
 
56
+ def scrap(item)
57
+ client.scrap(Ledmon::ItemInfo.new(item:))
58
+ end
59
+
56
60
  def equip_item(item, slot)
57
61
  client.equip_item(Ledmon::EquipInfo.new(item:, slot:))
58
62
  end
@@ -74,7 +78,17 @@ module Ledmon::Monster
74
78
  end
75
79
 
76
80
  def look
77
- client.look(Ledmon::Empty.new).entities
81
+ look_data = client.look(Ledmon::Empty.new)
82
+ tiles = []
83
+ for y in -look_data.distance..look_data.distance
84
+ tile_col = []
85
+ for x in -look_data.distance..look_data.distance
86
+ tile_col << look_data.tiles[(x+look_data.distance)+(y+look_data.distance)*(look_data.distance*2+1)]
87
+ end
88
+ tiles << tile_col
89
+ end
90
+
91
+ tiles
78
92
  end
79
93
  end
80
94
  end
@@ -16,7 +16,7 @@ module Ledmon::Monster
16
16
  ],
17
17
  )
18
18
 
19
- session_responses = client.session(Ledmon::SessionRequest.new(token: Ledmon::Config.auth, avatar:,))
19
+ session_responses = client.session(Ledmon::SessionRequest.new(token: Ledmon::Config.auth, avatars: [avatar].flatten,))
20
20
 
21
21
  start_response = session_responses.next
22
22
 
@@ -66,5 +66,9 @@ module Ledmon::Monster
66
66
  def session_grpc_host
67
67
  "#{Ledmon::Config.host}:#{Ledmon::Config.grpc_port}"
68
68
  end
69
+
70
+ def set_avatar(avatar)
71
+ client.set_avatar(Ledmon::AvatarIndex.new(avatar:))
72
+ end
69
73
  end
70
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ledmon
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.6"
5
5
  end
@@ -5,17 +5,19 @@
5
5
  require 'google/protobuf'
6
6
 
7
7
 
8
- descriptor_data = "\n\x0bworld.proto\x12\x06ledmon\"\x07\n\x05\x45mpty\"\'\n\tEquipInfo\x12\x0c\n\x04item\x18\x01 \x01(\t\x12\x0c\n\x04slot\x18\x02 \x01(\t\"\x1b\n\x0bUnequipInfo\x12\x0c\n\x04slot\x18\x01 \x01(\t\"\x1c\n\tPingReply\x12\x0f\n\x07message\x18\x01 \x01(\t\"/\n\x0eSessionRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0e\n\x06\x61vatar\x18\x02 \x01(\t\"C\n\x0cSessionReply\x12%\n\x06status\x18\x01 \x01(\x0e\x32\x15.ledmon.SessionStatus\x12\x0c\n\x04name\x18\x02 \x01(\t\"F\n\nStateReply\x12\x12\n\x05state\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04\x64iff\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_stateB\x07\n\x05_diff\" \n\x08Position\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x05\"\x84\x01\n\x10MovementResponse\x12&\n\x06result\x18\x01 \x01(\x0e\x32\x16.ledmon.MovementResult\x12\'\n\x08position\x18\x02 \x01(\x0b\x32\x10.ledmon.PositionH\x00\x88\x01\x01\x12\x12\n\nsleep_time\x18\x03 \x01(\x02\x42\x0b\n\t_position\"~\n\x12InteractionRequest\x12\x30\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32 .ledmon.InteractionRequestAction\x12\x1f\n\x12\x63hallenge_response\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x15\n\x13_challenge_response\"\xa6\x01\n\x13InteractionResponse\x12\x31\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32!.ledmon.InteractionResponseAction\x12\x19\n\x0c\x63hallenge_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x0f\x63hallenge_input\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x0f\n\r_challenge_idB\x12\n\x10_challenge_input\"\x89\x01\n\rInventoryData\x12\r\n\x05items\x18\x01 \x03(\t\x12\x37\n\tequipment\x18\x02 \x03(\x0b\x32$.ledmon.InventoryData.EquipmentEntry\x1a\x30\n\x0e\x45quipmentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x1b\n\tCraftData\x12\x0e\n\x06recipe\x18\x01 \x01(\t\"\x18\n\x08ItemInfo\x12\x0c\n\x04item\x18\x01 \x01(\t\"\x1d\n\x0bHealthCount\x12\x0e\n\x06health\x18\x01 \x01(\x02\"J\n\x0e\x41\x63tionResponse\x12$\n\x06result\x18\x01 \x01(\x0e\x32\x14.ledmon.ActionResult\x12\x12\n\nsleep_time\x18\x02 \x01(\x02\"H\n\x0cLookResponse\x12$\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x12.ledmon.LookEntity\x12\x12\n\nsleep_time\x18\x02 \x01(\x02\"O\n\nLookEntity\x12\n\n\x02id\x18\x01 \x01(\t\x12\"\n\x08position\x18\x02 \x01(\x0b\x32\x10.ledmon.Position\x12\x11\n\tequipment\x18\x03 \x03(\t\"G\n\x13StorageTransferData\x12\x0c\n\x04item\x18\x01 \x01(\t\x12\"\n\x04mode\x18\x02 \x01(\x0e\x32\x14.ledmon.TransferMode\"\x1c\n\x0bStorageData\x12\r\n\x05items\x18\x01 \x03(\t\"}\n\x10ResearchProgress\x12\x38\n\x08progress\x18\x01 \x03(\x0b\x32&.ledmon.ResearchProgress.ProgressEntry\x1a/\n\rProgressEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\"\x94\x01\n\x0eTradeOfferList\x12\x32\n\x06offers\x18\x01 \x03(\x0b\x32\".ledmon.TradeOfferList.OffersEntry\x12\x0b\n\x03own\x18\x02 \x03(\t\x1a\x41\n\x0bOffersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.ledmon.TradeOffer:\x02\x38\x01\"@\n\nTradeOffer\x12\x0e\n\x06inputs\x18\x01 \x03(\t\x12\x0f\n\x07outputs\x18\x02 \x03(\t\x12\x11\n\tremaining\x18\x03 \x01(\x05\"\x1a\n\x0cTradeOfferId\x12\n\n\x02id\x18\x01 \x01(\t\"\"\n\x12\x43onsumableDuration\x12\x0c\n\x04time\x18\x01 \x01(\x02*=\n\rSessionStatus\x12\x0b\n\x07STARTED\x10\x00\x12\x0c\n\x08\x46INISHED\x10\x01\x12\x11\n\rINVALID_TOKEN\x10\x02*%\n\x0eMovementResult\x12\x06\n\x02OK\x10\x00\x12\x0b\n\x07\x42LOCKED\x10\x01*;\n\x18InteractionRequestAction\x12\t\n\x05START\x10\x00\x12\x14\n\x10SUBMIT_CHALLENGE\x10\x01*D\n\x19InteractionResponseAction\x12\x0b\n\x07SUCCESS\x10\x00\x12\x0b\n\x07\x46\x41ILURE\x10\x01\x12\r\n\tCHALLENGE\x10\x02**\n\x0c\x41\x63tionResult\x12\x0e\n\nSUCCESSFUL\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01*%\n\x0cTransferMode\x12\x08\n\x04TAKE\x10\x00\x12\x0b\n\x07\x44\x45POSIT\x10\x01\x32\xd9\r\n\x05World\x12*\n\x04Ping\x12\r.ledmon.Empty\x1a\x11.ledmon.PingReply\"\x00\x12\x32\n\nPingStream\x12\r.ledmon.Empty\x1a\x11.ledmon.PingReply\"\x00\x30\x01\x12;\n\x07Session\x12\x16.ledmon.SessionRequest\x1a\x14.ledmon.SessionReply\"\x00\x30\x01\x12+\n\tKeepAlive\x12\r.ledmon.Empty\x1a\r.ledmon.Empty\"\x00\x12/\n\x08GetState\x12\r.ledmon.Empty\x1a\x12.ledmon.StateReply\"\x00\x12\x37\n\x0eGetStateStream\x12\r.ledmon.Empty\x1a\x12.ledmon.StateReply\"\x00\x30\x01\x12\x38\n\x0bMoveForward\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x39\n\x0cMoveBackward\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x35\n\x08TurnLeft\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x36\n\tTurnRight\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x37\n\nTurnAround\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12I\n\x08Interact\x12\x1a.ledmon.InteractionRequest\x1a\x1b.ledmon.InteractionResponse\"\x00(\x01\x30\x01\x12\x34\n\x05\x43raft\x12\x11.ledmon.CraftData\x1a\x16.ledmon.ActionResponse\"\x00\x12H\n\x0fStorageTransfer\x12\x1b.ledmon.StorageTransferData\x1a\x16.ledmon.ActionResponse\"\x00\x12\x33\n\x0bStorageList\x12\r.ledmon.Empty\x1a\x13.ledmon.StorageData\"\x00\x12\x36\n\x08Research\x12\x10.ledmon.ItemInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12;\n\rScrapResearch\x12\x10.ledmon.ItemInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12@\n\x13GetResearchProgress\x12\r.ledmon.Empty\x1a\x18.ledmon.ResearchProgress\"\x00\x12:\n\x0fListTradeOffers\x12\r.ledmon.Empty\x1a\x16.ledmon.TradeOfferList\"\x00\x12>\n\x10\x43reateTradeOffer\x12\x12.ledmon.TradeOffer\x1a\x14.ledmon.TradeOfferId\"\x00\x12\x42\n\x10\x41\x63\x63\x65ptTradeOffer\x12\x14.ledmon.TradeOfferId\x1a\x16.ledmon.ActionResponse\"\x00\x12\x39\n\x10\x43\x61ncelTradeOffer\x12\x14.ledmon.TradeOfferId\x1a\r.ledmon.Empty\"\x00\x12\x36\n\x0cGetInventory\x12\r.ledmon.Empty\x1a\x15.ledmon.InventoryData\"\x00\x12\x38\n\tEquipItem\x12\x11.ledmon.EquipInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12<\n\x0bUnequipItem\x12\x13.ledmon.UnequipInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12\x31\n\tGetHealth\x12\r.ledmon.Empty\x1a\x13.ledmon.HealthCount\"\x00\x12\x31\n\x06\x41ttack\x12\r.ledmon.Empty\x1a\x16.ledmon.ActionResponse\"\x00\x12\x39\n\x0b\x43onsumeItem\x12\x10.ledmon.ItemInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12M\n\x1eGetRemainingConsumableDuration\x12\r.ledmon.Empty\x1a\x1a.ledmon.ConsumableDuration\"\x00\x12-\n\x04Look\x12\r.ledmon.Empty\x1a\x14.ledmon.LookResponse\"\x00\x62\x06proto3"
8
+ descriptor_data = "\n\x0bworld.proto\x12\x06ledmon\"\x07\n\x05\x45mpty\"\x84\x01\n\x07MapInfo\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\x10\n\x08tilesize\x18\x03 \x01(\x05\x12\x0f\n\x07spawn_x\x18\x04 \x01(\x05\x12\x0f\n\x07spawn_y\x18\x05 \x01(\x05\x12\x13\n\x0b\x66og_enabled\x18\x06 \x01(\x08\x12\x11\n\tmap_image\x18\x07 \x01(\t\"\'\n\tEquipInfo\x12\x0c\n\x04item\x18\x01 \x01(\t\x12\x0c\n\x04slot\x18\x02 \x01(\t\"\x1b\n\x0bUnequipInfo\x12\x0c\n\x04slot\x18\x01 \x01(\t\"\x1c\n\tPingReply\x12\x0f\n\x07message\x18\x01 \x01(\t\"0\n\x0eSessionRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0f\n\x07\x61vatars\x18\x02 \x03(\t\"\x1d\n\x0b\x41vatarIndex\x12\x0e\n\x06\x61vatar\x18\x01 \x01(\x05\"C\n\x0cSessionReply\x12%\n\x06status\x18\x01 \x01(\x0e\x32\x15.ledmon.SessionStatus\x12\x0c\n\x04name\x18\x02 \x01(\t\"F\n\nStateReply\x12\x12\n\x05state\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04\x64iff\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_stateB\x07\n\x05_diff\" \n\x08Position\x12\t\n\x01x\x18\x01 \x01(\x05\x12\t\n\x01y\x18\x02 \x01(\x05\"\x84\x01\n\x10MovementResponse\x12&\n\x06result\x18\x01 \x01(\x0e\x32\x16.ledmon.MovementResult\x12\'\n\x08position\x18\x02 \x01(\x0b\x32\x10.ledmon.PositionH\x00\x88\x01\x01\x12\x12\n\nsleep_time\x18\x03 \x01(\x02\x42\x0b\n\t_position\"~\n\x12InteractionRequest\x12\x30\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32 .ledmon.InteractionRequestAction\x12\x1f\n\x12\x63hallenge_response\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x15\n\x13_challenge_response\"\xa6\x01\n\x13InteractionResponse\x12\x31\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32!.ledmon.InteractionResponseAction\x12\x19\n\x0c\x63hallenge_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x0f\x63hallenge_input\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x0f\n\r_challenge_idB\x12\n\x10_challenge_input\"\x89\x01\n\rInventoryData\x12\r\n\x05items\x18\x01 \x03(\t\x12\x37\n\tequipment\x18\x02 \x03(\x0b\x32$.ledmon.InventoryData.EquipmentEntry\x1a\x30\n\x0e\x45quipmentEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x1b\n\tCraftData\x12\x0e\n\x06recipe\x18\x01 \x01(\t\"\x18\n\x08ItemInfo\x12\x0c\n\x04item\x18\x01 \x01(\t\"\x1d\n\x0bHealthCount\x12\x0e\n\x06health\x18\x01 \x01(\x02\"J\n\x0e\x41\x63tionResponse\x12$\n\x06result\x18\x01 \x01(\x0e\x32\x14.ledmon.ActionResult\x12\x12\n\nsleep_time\x18\x02 \x01(\x02\"U\n\x0cLookResponse\x12\x1f\n\x05tiles\x18\x01 \x03(\x0b\x32\x10.ledmon.LookTile\x12\x10\n\x08\x64istance\x18\x02 \x01(\x05\x12\x12\n\nsleep_time\x18\x03 \x01(\x02\"\x80\x01\n\x08LookTile\x12\x10\n\x08walkable\x18\x01 \x01(\x08\x12\x14\n\x07station\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x08\x65ntities\x18\x03 \x03(\x0b\x32\x12.ledmon.LookEntity\x12\x11\n\x04zone\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_stationB\x07\n\x05_zone\"O\n\nLookEntity\x12\n\n\x02id\x18\x01 \x01(\t\x12\"\n\x08position\x18\x02 \x01(\x0b\x32\x10.ledmon.Position\x12\x11\n\tequipment\x18\x03 \x03(\t\"G\n\x13StorageTransferData\x12\x0c\n\x04item\x18\x01 \x01(\t\x12\"\n\x04mode\x18\x02 \x01(\x0e\x32\x14.ledmon.TransferMode\"\x1c\n\x0bStorageData\x12\r\n\x05items\x18\x01 \x03(\t\"}\n\x10ResearchProgress\x12\x38\n\x08progress\x18\x01 \x03(\x0b\x32&.ledmon.ResearchProgress.ProgressEntry\x1a/\n\rProgressEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\"\x94\x01\n\x0eTradeOfferList\x12\x32\n\x06offers\x18\x01 \x03(\x0b\x32\".ledmon.TradeOfferList.OffersEntry\x12\x0b\n\x03own\x18\x02 \x03(\t\x1a\x41\n\x0bOffersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.ledmon.TradeOffer:\x02\x38\x01\"@\n\nTradeOffer\x12\x0e\n\x06inputs\x18\x01 \x03(\t\x12\x0f\n\x07outputs\x18\x02 \x03(\t\x12\x11\n\tremaining\x18\x03 \x01(\x05\"\x1a\n\x0cTradeOfferId\x12\n\n\x02id\x18\x01 \x01(\t\"\"\n\x12\x43onsumableDuration\x12\x0c\n\x04time\x18\x01 \x01(\x02\"\x1e\n\x0eScoreboardData\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\t*I\n\rSessionStatus\x12\x0b\n\x07STARTED\x10\x00\x12\x0c\n\x08\x46INISHED\x10\x01\x12\x11\n\rINVALID_TOKEN\x10\x02\x12\n\n\x06\x44\x45NIED\x10\x03*%\n\x0eMovementResult\x12\x06\n\x02OK\x10\x00\x12\x0b\n\x07\x42LOCKED\x10\x01*;\n\x18InteractionRequestAction\x12\t\n\x05START\x10\x00\x12\x14\n\x10SUBMIT_CHALLENGE\x10\x01*D\n\x19InteractionResponseAction\x12\x0b\n\x07SUCCESS\x10\x00\x12\x0b\n\x07\x46\x41ILURE\x10\x01\x12\r\n\tCHALLENGE\x10\x02**\n\x0c\x41\x63tionResult\x12\x0e\n\nSUCCESSFUL\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01*%\n\x0cTransferMode\x12\x08\n\x04TAKE\x10\x00\x12\x0b\n\x07\x44\x45POSIT\x10\x01\x32\xee\x0e\n\x05World\x12*\n\x04Ping\x12\r.ledmon.Empty\x1a\x11.ledmon.PingReply\"\x00\x12\x32\n\nPingStream\x12\r.ledmon.Empty\x1a\x11.ledmon.PingReply\"\x00\x30\x01\x12.\n\nGetMapInfo\x12\r.ledmon.Empty\x1a\x0f.ledmon.MapInfo\"\x00\x12;\n\x07Session\x12\x16.ledmon.SessionRequest\x1a\x14.ledmon.SessionReply\"\x00\x30\x01\x12+\n\tKeepAlive\x12\r.ledmon.Empty\x1a\r.ledmon.Empty\"\x00\x12/\n\x08GetState\x12\r.ledmon.Empty\x1a\x12.ledmon.StateReply\"\x00\x12\x37\n\x0eGetStateStream\x12\r.ledmon.Empty\x1a\x12.ledmon.StateReply\"\x00\x30\x01\x12\x38\n\rGetScoreboard\x12\r.ledmon.Empty\x1a\x16.ledmon.ScoreboardData\"\x00\x12\x38\n\x0bMoveForward\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x39\n\x0cMoveBackward\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x35\n\x08TurnLeft\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x36\n\tTurnRight\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12\x37\n\nTurnAround\x12\r.ledmon.Empty\x1a\x18.ledmon.MovementResponse\"\x00\x12I\n\x08Interact\x12\x1a.ledmon.InteractionRequest\x1a\x1b.ledmon.InteractionResponse\"\x00(\x01\x30\x01\x12\x34\n\x05\x43raft\x12\x11.ledmon.CraftData\x1a\x16.ledmon.ActionResponse\"\x00\x12H\n\x0fStorageTransfer\x12\x1b.ledmon.StorageTransferData\x1a\x16.ledmon.ActionResponse\"\x00\x12\x33\n\x0bStorageList\x12\r.ledmon.Empty\x1a\x13.ledmon.StorageData\"\x00\x12\x36\n\x08Research\x12\x10.ledmon.ItemInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12\x33\n\x05Scrap\x12\x10.ledmon.ItemInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12@\n\x13GetResearchProgress\x12\r.ledmon.Empty\x1a\x18.ledmon.ResearchProgress\"\x00\x12:\n\x0fListTradeOffers\x12\r.ledmon.Empty\x1a\x16.ledmon.TradeOfferList\"\x00\x12>\n\x10\x43reateTradeOffer\x12\x12.ledmon.TradeOffer\x1a\x14.ledmon.TradeOfferId\"\x00\x12\x42\n\x10\x41\x63\x63\x65ptTradeOffer\x12\x14.ledmon.TradeOfferId\x1a\x16.ledmon.ActionResponse\"\x00\x12\x39\n\x10\x43\x61ncelTradeOffer\x12\x14.ledmon.TradeOfferId\x1a\r.ledmon.Empty\"\x00\x12\x31\n\tSetAvatar\x12\x13.ledmon.AvatarIndex\x1a\r.ledmon.Empty\"\x00\x12\x36\n\x0cGetInventory\x12\r.ledmon.Empty\x1a\x15.ledmon.InventoryData\"\x00\x12\x38\n\tEquipItem\x12\x11.ledmon.EquipInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12<\n\x0bUnequipItem\x12\x13.ledmon.UnequipInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12\x31\n\tGetHealth\x12\r.ledmon.Empty\x1a\x13.ledmon.HealthCount\"\x00\x12\x31\n\x06\x41ttack\x12\r.ledmon.Empty\x1a\x16.ledmon.ActionResponse\"\x00\x12\x39\n\x0b\x43onsumeItem\x12\x10.ledmon.ItemInfo\x1a\x16.ledmon.ActionResponse\"\x00\x12M\n\x1eGetRemainingConsumableDuration\x12\r.ledmon.Empty\x1a\x1a.ledmon.ConsumableDuration\"\x00\x12-\n\x04Look\x12\r.ledmon.Empty\x1a\x14.ledmon.LookResponse\"\x00\x62\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Ledmon
14
14
  Empty = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.Empty").msgclass
15
+ MapInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.MapInfo").msgclass
15
16
  EquipInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.EquipInfo").msgclass
16
17
  UnequipInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.UnequipInfo").msgclass
17
18
  PingReply = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.PingReply").msgclass
18
19
  SessionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.SessionRequest").msgclass
20
+ AvatarIndex = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.AvatarIndex").msgclass
19
21
  SessionReply = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.SessionReply").msgclass
20
22
  StateReply = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.StateReply").msgclass
21
23
  Position = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.Position").msgclass
@@ -28,6 +30,7 @@ module Ledmon
28
30
  HealthCount = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.HealthCount").msgclass
29
31
  ActionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.ActionResponse").msgclass
30
32
  LookResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.LookResponse").msgclass
33
+ LookTile = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.LookTile").msgclass
31
34
  LookEntity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.LookEntity").msgclass
32
35
  StorageTransferData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.StorageTransferData").msgclass
33
36
  StorageData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.StorageData").msgclass
@@ -36,6 +39,7 @@ module Ledmon
36
39
  TradeOffer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.TradeOffer").msgclass
37
40
  TradeOfferId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.TradeOfferId").msgclass
38
41
  ConsumableDuration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.ConsumableDuration").msgclass
42
+ ScoreboardData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.ScoreboardData").msgclass
39
43
  SessionStatus = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.SessionStatus").enummodule
40
44
  MovementResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.MovementResult").enummodule
41
45
  InteractionRequestAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("ledmon.InteractionRequestAction").enummodule
@@ -16,10 +16,12 @@ module Ledmon
16
16
 
17
17
  rpc :Ping, ::Ledmon::Empty, ::Ledmon::PingReply
18
18
  rpc :PingStream, ::Ledmon::Empty, stream(::Ledmon::PingReply)
19
+ rpc :GetMapInfo, ::Ledmon::Empty, ::Ledmon::MapInfo
19
20
  rpc :Session, ::Ledmon::SessionRequest, stream(::Ledmon::SessionReply)
20
21
  rpc :KeepAlive, ::Ledmon::Empty, ::Ledmon::Empty
21
22
  rpc :GetState, ::Ledmon::Empty, ::Ledmon::StateReply
22
23
  rpc :GetStateStream, ::Ledmon::Empty, stream(::Ledmon::StateReply)
24
+ rpc :GetScoreboard, ::Ledmon::Empty, ::Ledmon::ScoreboardData
23
25
  rpc :MoveForward, ::Ledmon::Empty, ::Ledmon::MovementResponse
24
26
  rpc :MoveBackward, ::Ledmon::Empty, ::Ledmon::MovementResponse
25
27
  rpc :TurnLeft, ::Ledmon::Empty, ::Ledmon::MovementResponse
@@ -30,12 +32,13 @@ module Ledmon
30
32
  rpc :StorageTransfer, ::Ledmon::StorageTransferData, ::Ledmon::ActionResponse
31
33
  rpc :StorageList, ::Ledmon::Empty, ::Ledmon::StorageData
32
34
  rpc :Research, ::Ledmon::ItemInfo, ::Ledmon::ActionResponse
33
- rpc :ScrapResearch, ::Ledmon::ItemInfo, ::Ledmon::ActionResponse
35
+ rpc :Scrap, ::Ledmon::ItemInfo, ::Ledmon::ActionResponse
34
36
  rpc :GetResearchProgress, ::Ledmon::Empty, ::Ledmon::ResearchProgress
35
37
  rpc :ListTradeOffers, ::Ledmon::Empty, ::Ledmon::TradeOfferList
36
38
  rpc :CreateTradeOffer, ::Ledmon::TradeOffer, ::Ledmon::TradeOfferId
37
39
  rpc :AcceptTradeOffer, ::Ledmon::TradeOfferId, ::Ledmon::ActionResponse
38
40
  rpc :CancelTradeOffer, ::Ledmon::TradeOfferId, ::Ledmon::Empty
41
+ rpc :SetAvatar, ::Ledmon::AvatarIndex, ::Ledmon::Empty
39
42
  rpc :GetInventory, ::Ledmon::Empty, ::Ledmon::InventoryData
40
43
  rpc :EquipItem, ::Ledmon::EquipInfo, ::Ledmon::ActionResponse
41
44
  rpc :UnequipItem, ::Ledmon::UnequipInfo, ::Ledmon::ActionResponse
data/monster.rb.sample CHANGED
@@ -1,7 +1,3 @@
1
- def name
2
- 'ahmed'
3
- end
4
-
5
1
  def avatar
6
2
  "@@@@@
7
3
  @)))@
@@ -42,8 +38,20 @@ def brain
42
38
  when 'j' then
43
39
  attack
44
40
  when 'l' then
45
- entities = look
46
- say "look: #{entities.inspect}"
41
+ tiles = look
42
+
43
+ for col in tiles
44
+ for tile in col
45
+ if tile.entities.size > 0 then
46
+ print "E "
47
+ elsif tile.walkable
48
+ print "_ "
49
+ else
50
+ print "O "
51
+ end
52
+ end
53
+ puts ""
54
+ end
47
55
  else
48
56
  nil
49
57
  end
data/protos/world.proto CHANGED
@@ -6,12 +6,16 @@ service World {
6
6
  rpc Ping (Empty) returns (PingReply) {}
7
7
  rpc PingStream (Empty) returns (stream PingReply) {}
8
8
 
9
+ rpc GetMapInfo (Empty) returns (MapInfo) {}
10
+
9
11
  rpc Session (SessionRequest) returns (stream SessionReply) {}
10
12
  rpc KeepAlive (Empty) returns (Empty) {}
11
13
 
12
14
  rpc GetState (Empty) returns (StateReply) {}
13
15
  rpc GetStateStream (Empty) returns (stream StateReply) {}
14
16
 
17
+ rpc GetScoreboard (Empty) returns (ScoreboardData) {}
18
+
15
19
  rpc MoveForward (Empty) returns (MovementResponse) {}
16
20
  rpc MoveBackward (Empty) returns (MovementResponse) {}
17
21
  rpc TurnLeft (Empty) returns (MovementResponse) {}
@@ -23,13 +27,15 @@ service World {
23
27
  rpc StorageTransfer (StorageTransferData) returns (ActionResponse) {}
24
28
  rpc StorageList (Empty) returns (StorageData) {}
25
29
  rpc Research (ItemInfo) returns (ActionResponse) {}
26
- rpc ScrapResearch (ItemInfo) returns (ActionResponse) {}
30
+ rpc Scrap (ItemInfo) returns (ActionResponse) {}
27
31
  rpc GetResearchProgress (Empty) returns (ResearchProgress) {}
28
32
  rpc ListTradeOffers (Empty) returns (TradeOfferList) {}
29
33
  rpc CreateTradeOffer (TradeOffer) returns (TradeOfferId) {}
30
34
  rpc AcceptTradeOffer (TradeOfferId) returns (ActionResponse) {}
31
35
  rpc CancelTradeOffer (TradeOfferId) returns (Empty) {}
32
36
 
37
+ rpc SetAvatar (AvatarIndex) returns (Empty) {}
38
+
33
39
  rpc GetInventory (Empty) returns (InventoryData) {}
34
40
  rpc EquipItem (EquipInfo) returns (ActionResponse) {}
35
41
  rpc UnequipItem (UnequipInfo) returns (ActionResponse) {}
@@ -46,6 +52,16 @@ message Empty {
46
52
 
47
53
  }
48
54
 
55
+ message MapInfo {
56
+ int32 width = 1;
57
+ int32 height = 2;
58
+ int32 tilesize = 3;
59
+ int32 spawn_x = 4;
60
+ int32 spawn_y = 5;
61
+ bool fog_enabled = 6;
62
+ string map_image = 7;
63
+ }
64
+
49
65
  message EquipInfo{
50
66
  string item = 1;
51
67
  string slot = 2;
@@ -60,7 +76,11 @@ message PingReply {
60
76
 
61
77
  message SessionRequest {
62
78
  string token = 1;
63
- string avatar = 2;
79
+ repeated string avatars = 2;
80
+ }
81
+
82
+ message AvatarIndex{
83
+ int32 avatar = 1;
64
84
  }
65
85
 
66
86
  message SessionReply {
@@ -72,6 +92,7 @@ enum SessionStatus {
72
92
  STARTED = 0;
73
93
  FINISHED = 1;
74
94
  INVALID_TOKEN = 2;
95
+ DENIED = 3;
75
96
  }
76
97
 
77
98
  message StateReply {
@@ -146,8 +167,15 @@ message ActionResponse {
146
167
  }
147
168
 
148
169
  message LookResponse{
149
- repeated LookEntity entities = 1;
150
- float sleep_time = 2;
170
+ repeated LookTile tiles = 1;
171
+ int32 distance = 2;
172
+ float sleep_time = 3;
173
+ }
174
+ message LookTile{
175
+ bool walkable = 1;
176
+ optional string station = 2;
177
+ repeated LookEntity entities = 3;
178
+ optional string zone = 4;
151
179
  }
152
180
  message LookEntity{
153
181
  string id = 1;
@@ -183,3 +211,6 @@ message TradeOfferId{
183
211
  message ConsumableDuration{
184
212
  float time = 1;
185
213
  }
214
+ message ScoreboardData{
215
+ string data = 1;
216
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ledmon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmed Al Hafoudh