forked from townforge/townforge
tests: add test for building with palette change
This commit is contained in:
parent
ac4b549063
commit
09c272a064
@ -4271,6 +4271,8 @@ namespace tools
|
||||
cmd.block_data.assign(encoded, encoded + encoded_len);
|
||||
}
|
||||
cmd.remove = req.remove;
|
||||
for (const auto &e: req.palette)
|
||||
cmd.palette.push_back({e.index, e.variant_delta});
|
||||
uint32_t priority = m_wallet->adjust_priority(req.priority);
|
||||
std::vector<wallet2::pending_tx> ptx_vector = m_wallet->create_cc_transactions(cmd, priority);
|
||||
if (ptx_vector.empty())
|
||||
|
@ -2744,6 +2744,17 @@ namespace wallet_rpc
|
||||
|
||||
struct COMMAND_RPC_CC_BUILD
|
||||
{
|
||||
struct palette_entry_t
|
||||
{
|
||||
uint8_t index;
|
||||
int16_t variant_delta;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(index)
|
||||
KV_SERIALIZE(variant_delta)
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
struct request_t
|
||||
{
|
||||
uint32_t flag;
|
||||
@ -2753,6 +2764,7 @@ namespace wallet_rpc
|
||||
uint8_t height;
|
||||
uint16_t build_height;
|
||||
std::vector<uint8_t> block_data;
|
||||
std::vector<palette_entry_t> palette;
|
||||
bool encoded;
|
||||
bool remove;
|
||||
uint64_t parent;
|
||||
@ -2771,6 +2783,7 @@ namespace wallet_rpc
|
||||
KV_SERIALIZE(block_data)
|
||||
KV_SERIALIZE(encoded)
|
||||
KV_SERIALIZE(remove)
|
||||
KV_SERIALIZE(palette)
|
||||
KV_SERIALIZE(parent)
|
||||
KV_SERIALIZE(priority)
|
||||
KV_SERIALIZE_OPT(do_not_relay, false)
|
||||
|
@ -44,6 +44,7 @@ FIRST_CITY_Y = 2502907875
|
||||
ITEM_STONE = 1
|
||||
ITEM_MEDIUM_STONE = 2
|
||||
ITEM_WOOD = 4
|
||||
MATERIAL_VARIANT_PLOUGHED_FIELD = 32
|
||||
ITEM_LABOUR = 256
|
||||
ITEM_FIRST_PATENT = 1024
|
||||
ITEM_FIRST_FOOD = ITEM_FIRST_PATENT + 4096
|
||||
@ -688,6 +689,18 @@ class CCTest():
|
||||
else:
|
||||
assert not 'data' in res.tiles[i]
|
||||
|
||||
# embedded palette changes
|
||||
res = self.wallet[2].cc_build(flag_id, 0, 3, 3, 1, block_data = [9, 0, 9], encoded = False, palette = [{'index': 9, 'variant_delta': MATERIAL_VARIANT_PLOUGHED_FIELD}])
|
||||
assert len(res.tx_hash) == 64
|
||||
|
||||
self.generate_blocks('TF1MM8HqWBathu8hS5mwMNHm1da3cZCzg2rkqWLKCxpUarKtPszP3MjiocrJeLvph4AghgYu1AXonCmckfEuyE8Q2FFm8jNdiz3', 1)
|
||||
|
||||
res = daemon.cc_get_flag(flag_id, True)
|
||||
assert len(res.tiles) == 90*90
|
||||
assert res.tiles[270].data == [9]
|
||||
assert 'data' not in res.tiles[271] or res.tiles[271].data == []
|
||||
assert res.tiles[272].data == [9]
|
||||
|
||||
def test_trading(self):
|
||||
daemon = self.daemon
|
||||
|
||||
|
@ -1120,7 +1120,7 @@ class Wallet(object):
|
||||
}
|
||||
return self.rpc.send_json_rpc_request(cc_buy_land)
|
||||
|
||||
def cc_build(self, flag, dx, dy, width, height, block_data, encoded, remove = False, build_height = 0, parent = 0, priority = 0, do_not_relay = False, get_tx_hex = False, get_tx_metadata = False):
|
||||
def cc_build(self, flag, dx, dy, width, height, block_data, encoded, palette = [], remove = False, build_height = 0, parent = 0, priority = 0, do_not_relay = False, get_tx_hex = False, get_tx_metadata = False):
|
||||
cc_build = {
|
||||
'method': 'cc_build',
|
||||
'params': {
|
||||
@ -1133,6 +1133,7 @@ class Wallet(object):
|
||||
'encoded': encoded,
|
||||
'remove': remove,
|
||||
'build_height': build_height,
|
||||
'palette': palette,
|
||||
'parent': parent,
|
||||
'priority': priority,
|
||||
'do_not_relay': do_not_relay,
|
||||
|
Loading…
Reference in New Issue
Block a user