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 +4 -4
- data/Rakefile +1 -5
- data/lib/ledmon/cli/config.rb +9 -0
- data/lib/ledmon/monster/interaction.rb +16 -2
- data/lib/ledmon/monster/session.rb +5 -1
- data/lib/ledmon/version.rb +1 -1
- data/lib/ledmon/world_pb.rb +6 -2
- data/lib/ledmon/world_services_pb.rb +4 -1
- data/monster.rb.sample +14 -6
- data/protos/world.proto +35 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb901e8c9f54f002cfba8ceb35d2da3e860f247f1d763c142efdbbfed3538c3f
|
4
|
+
data.tar.gz: ffada8db0c7e6977c421a0b8544279b73886fe597d3f04499b97414167164357
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 388f073ad79448d7ff9b984bc16eec85e4166fbcd2b01a5102a9349760b125a3e6fd0ca42e5ee88932bf04fc4e5d5a2a96a1ff42a0b21a17ba3cd4cb23f2a1ee
|
7
|
+
data.tar.gz: 8053612e34fdc79ea8a6efe27ff08b553c8e4a97d598ec0449464c61763337ddf0033119771c43ce64d8fb2bf17c662812021a80ce1993bcbb304100662e2bee
|
data/Rakefile
CHANGED
data/lib/ledmon/cli/config.rb
CHANGED
@@ -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
|
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)
|
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
|
data/lib/ledmon/version.rb
CHANGED
data/lib/ledmon/world_pb.rb
CHANGED
@@ -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\"
|
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 :
|
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
|
-
|
46
|
-
|
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
|
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
|
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
|
150
|
-
|
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
|
+
}
|