ledmon 0.1.9 → 0.1.12

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: c43f33956f6f89bb1395db53322a618825b1ead5644db9dc15ae4059d6d25e47
4
- data.tar.gz: b8e086c450a5b161f82678e637560d6dea5b2a55684b7192cbf26526cdb9cda0
3
+ metadata.gz: ecf1db142a50bc31784297907cd0f59595fdf5aec5e8f86f85af143a37024309
4
+ data.tar.gz: 49819b1a93b45927e3f11286de31f28f62f8cca5b9442e04d9a781a6d7d8728d
5
5
  SHA512:
6
- metadata.gz: 0ae6579842cc73b1222893a15d757154f3284d4e72a70f0e8fa0b132347943f21b0c05a0ee74b7f4db87a39b6faf0965c24cc8d38e9a67259ca33307fe494d41
7
- data.tar.gz: c753136022675e48813c5f104273b7c1a39c5aca8ea9828b3a6199347d619ab974474d2830005bcf6823e29ba577ad7ae5101d0deb7159a5fc3ff2e6fbd7a7ba
6
+ metadata.gz: 76ff0bd3fb92ca8cb1abc4cb051d179fd9ef890e3fd11fbf158c95826ebacd6883995df9a90401bdd537b8bae7d62f3f6078e3865ad64ac86b0f938f44b0feca
7
+ data.tar.gz: edf5748b95dc6a195d59f50134fc47cd79990777e39158eeb66263db42926dac6cb40f30502de6289f5c2655c4b1665495db5f4e2fdbab4cff556e14c42eed04
data/DOCS.md CHANGED
@@ -204,6 +204,37 @@ slot = ask("Slot: ")
204
204
  unequip_item(slot)
205
205
  ```
206
206
 
207
+ ### `storage_transfer(item, take)`
208
+ Vyberie/Vloži item zo storage-u.
209
+
210
+ ```ruby
211
+ item = ask("Item: ")
212
+ take = yes?("take: ")
213
+ storage_transfer(item, take)
214
+ ```
215
+
216
+ ### `storage_list`
217
+ Vráti všetky predmety v storage-i.
218
+
219
+ ```ruby
220
+ say storage_list.inspect
221
+ ```
222
+
223
+ ### `consume_item(item)`
224
+ Zkonzumuje item.
225
+
226
+ ```ruby
227
+ item = ask("item: ")
228
+ consume_item item
229
+ ```
230
+
231
+ ### `get_remaining_consumable_duration`
232
+ Vráti, koľko ešte bude trvať efekt skonzumovaného itemu.
233
+
234
+ ```ruby
235
+ say get_remaining_consumable_duration
236
+ ```
237
+
207
238
  ## 🔨 Crafting a výskum
208
239
 
209
240
  ### `craft(recept)`
@@ -61,7 +61,7 @@ module Ledmon::CLI
61
61
  end
62
62
  end
63
63
 
64
- desc 'docs', 'Generate and open API documentation in browser'
64
+ desc 'docs', 'Generate and serve API documentation on localhost'
65
65
 
66
66
  def docs
67
67
  say "Generating API documentation ...", :yellow
@@ -80,21 +80,45 @@ module Ledmon::CLI
80
80
  # Convert to HTML
81
81
  html_content = markdown_to_html(markdown_content)
82
82
 
83
- # Create temporary HTML file
84
- require 'tempfile'
85
- Tempfile.create(%w[ledmon-docs .html]) do |temp_file|
86
- temp_file.write(html_content)
87
- temp_file.close
83
+ # Start simple web server
84
+ require 'webrick'
88
85
 
89
- say "Opening documentation in browser ...", :green
86
+ port = 31337
87
+ server = WEBrick::HTTPServer.new(Port: port, Logger: WEBrick::Log.new('/dev/null'))
90
88
 
91
- # Open in default browser using launchy
92
- require 'launchy'
93
- Launchy.open("file://#{temp_file.path}")
89
+ server.mount_proc '/docs' do |req, res|
90
+ res.content_type = 'text/html'
91
+ res.body = html_content
92
+ end
93
+
94
+ say "Documentation server started at http://localhost:#{port}/docs", :green
95
+
96
+ # Start server in background thread
97
+ server_thread = Thread.new { server.start }
94
98
 
95
- say "Documentation opened! Press any key to continue ...", :cyan
96
- STDIN.getch rescue nil
99
+ # Give server a moment to start
100
+ sleep 1
101
+
102
+ # Open in browser
103
+ require 'launchy'
104
+ Launchy.open("http://localhost:#{port}/docs") do |error|
105
+ if RbConfig::CONFIG['host_os'] == 'linux' && %x[uname -a] =~ /WSL/
106
+ ENV['BROWSER'] = 'cmd.exe /c start'
107
+ Launchy.open("http://localhost:#{port}/docs")
108
+ else
109
+ say_error "Failed to open browser automatically: #{error.message}", :red
110
+ end
97
111
  end
112
+
113
+ say "Press any key to stop the server ...", :cyan
114
+
115
+ # Wait for keypress
116
+ STDIN.getch rescue nil
117
+
118
+ # Stop server
119
+ server.shutdown
120
+ server_thread.join
121
+ say "Documentation server stopped", :yellow
98
122
  rescue Ledmon::Error => e
99
123
  say_error e.message, :red
100
124
  exit 1
@@ -139,7 +163,7 @@ module Ledmon::CLI
139
163
  <html>
140
164
  <head>
141
165
  <meta charset="utf-8">
142
- <title>Ledmon API Documentation</title>
166
+ <title>Ledmon API Documentation - ledmon gem #{Ledmon::VERSION}</title>
143
167
  <style>
144
168
  body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; line-height: 1.6; }
145
169
  h1, h2, h3 { color: #333; }
@@ -85,6 +85,21 @@ module Ledmon::Monster
85
85
  client.attack(Ledmon::Empty.new)
86
86
  end
87
87
 
88
+ def storage_transfer(item, take)
89
+ client.storage_transfer(Ledmon::StorageTransferData.new(item:, mode: if take then :TAKE else :DEPOSIT end))
90
+ end
91
+
92
+ def storage_list
93
+ client.storage_list(Ledmon::Empty.new).items.to_a
94
+ end
95
+
96
+ def consume_item(item)
97
+ client.consume_item(Ledmon::ItemInfo.new(item:))
98
+ end
99
+ def get_remaining_consumable_duration
100
+ client.get_remaining_consumable_duration(Ledmon::Empty.new).time
101
+ end
102
+
88
103
  def look
89
104
  look_data = client.look(Ledmon::Empty.new)
90
105
  tiles = []
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ledmon
4
- VERSION = "0.1.9"
4
+ VERSION = "0.1.12"
5
5
  end
@@ -5,7 +5,7 @@
5
5
  require 'google/protobuf'
6
6
 
7
7
 
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\"\x81\x01\n\x0cSessionReply\x12%\n\x06status\x18\x01 \x01(\x0e\x32\x15.ledmon.SessionStatus\x12\x0c\n\x04name\x18\x02 \x01(\t\x12/\n\x08movement\x18\x03 \x01(\x0b\x32\x18.ledmon.MovementResponseH\x00\x88\x01\x01\x42\x0b\n\t_movement\"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\"\xa6\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\x12\x14\n\x07heading\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_positionB\n\n\x08_heading\"~\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(\x02:\x02\x38\x01\".\n\x0bRecipesData\x12\x1f\n\x07recipes\x18\x01 \x03(\x0b\x32\x0e.ledmon.Recipe\"<\n\x06Recipe\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x13\n\x0bingredients\x18\x04 \x03(\t\x12\x10\n\x08products\x18\x05 \x03(\t\"\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\xa2\x0f\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\x32\n\nGetRecipes\x12\r.ledmon.Empty\x1a\x13.ledmon.RecipesData\"\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"
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\"\x81\x01\n\x0cSessionReply\x12%\n\x06status\x18\x01 \x01(\x0e\x32\x15.ledmon.SessionStatus\x12\x0c\n\x04name\x18\x02 \x01(\t\x12/\n\x08movement\x18\x03 \x01(\x0b\x32\x18.ledmon.MovementResponseH\x00\x88\x01\x01\x42\x0b\n\t_movement\"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\"\xa6\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\x12\x14\n\x07heading\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_positionB\n\n\x08_heading\"~\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\"a\n\x0e\x41\x63tionResponse\x12$\n\x06result\x18\x01 \x01(\x0e\x32\x14.ledmon.ActionResult\x12\x12\n\nsleep_time\x18\x02 \x01(\x02\x12\x15\n\rerror_message\x18\x03 \x01(\t\"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(\x02:\x02\x38\x01\".\n\x0bRecipesData\x12\x1f\n\x07recipes\x18\x01 \x03(\x0b\x32\x0e.ledmon.Recipe\"<\n\x06Recipe\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x13\n\x0bingredients\x18\x04 \x03(\t\x12\x10\n\x08products\x18\x05 \x03(\t\"\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\xa2\x0f\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\x32\n\nGetRecipes\x12\r.ledmon.Empty\x1a\x13.ledmon.RecipesData\"\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
10
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
data/protos/world.proto CHANGED
@@ -168,6 +168,7 @@ enum ActionResult {
168
168
  message ActionResponse {
169
169
  ActionResult result = 1;
170
170
  float sleep_time = 2;
171
+ string error_message = 3;
171
172
  }
172
173
 
173
174
  message LookResponse{
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.9
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmed Al Hafoudh
@@ -191,6 +191,20 @@ dependencies:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
193
  version: '3.1'
194
+ - !ruby/object:Gem::Dependency
195
+ name: webrick
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '1.9'
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '1.9'
194
208
  - !ruby/object:Gem::Dependency
195
209
  name: grpc-tools
196
210
  requirement: !ruby/object:Gem::Requirement