#!python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2021/10/13 20:26:24 +0900> """ Make road pattern json files. Windows10 x64 21H1 + Python 3.9.7 64bit """ import json files = [ { "in": "road_middle_new.json", "out": "block_road_middle.json", "sizew": 8, "sizeh": 8 }, { "in": "road_large.json", "out": "block_road_large.json", "sizew": 8, "sizeh": 8 } ] def dump_pat_json(infile, outfile, sw, sh): print("Input: %s" % infile) # load json file with open(infile, 'r') as f: data = json.load(f) map_w = int(data["width"]) map_h = int(data["height"]) # tile_w = int(data["tilewidth"]) # tile_h = int(data["tileheight"]) # get layer data and shift ID tilemap_orig = list(map(lambda x: x - 1, data["layers"][0]["data"])) m = [[0 for x in range(map_w)] for y in range(map_h)] for y in range(map_h): for x in range(map_w): id = tilemap_orig[y * map_w + x] m[y][x] = id empty = [-1 for x in range(sw * sh)] # split data, get block blocks = [] for y in range(0, map_h, sh): for x in range(0, map_w, sw): l = [] for ly in range(sh): for lx in range(sw): l.append(m[y + ly][x + lx]) if l == empty: continue blocks.append(l) # write json file with open(outfile, 'w') as f: json.dump(blocks, f) print("Output: %s" % outfile) def main(): for d in files: infile = d["in"] outfile = d["out"] sw = d["sizew"] sh = d["sizeh"] dump_pat_json(infile, outfile, sw, sh) # print("in: %s, out: %s, sw x sh = %d x %d" % (infile, outfile, sw, sh)) if __name__ == "__main__": main()