register_input("Next_Tileset", {{"key", "t"}}) register_input("Prev_Tileset", {{"key", "r"}}) register_comp("Room_Editor", function(ent) ent.room_editor = { tile = 1, } end) function tile_place_sys(ent) local room_editor = ent.room_editor if not im.has_focus() then if is_input_pressed("Right_Click") then local scn = get_current_scene() assert(scn, "no scene set.") local mx, my = get_mouse_pos() local tx, ty = to_tile_coords(mx, my) set_tile(scn.tilemap, tx, ty, room_editor.tile) end if is_input_pressed("Left_Click") then local scn = get_current_scene() assert(scn, "no scene set.") local mx, my = get_mouse_pos() local tx, ty = to_tile_coords(mx, my) remove_tile(scn.tilemap, tx, ty) end end if is_input_just_pressed("Next_Tileset") then room_editor.tile = math.min(room_editor.tile + 1, get_tileset_count()) end if is_input_just_pressed("Prev_Tileset") then room_editor.tile = math.max(room_editor.tile - 1, 1) end end function room_editor_ui_sys(ent) local room_editor = ent.room_editor im.begin_window("Room Editor", 120, 5, 180, 320, {}) im.text("Tile: " .. tostring(room_editor.tile)) im.separator() im.layout({0.1, 0.6, 1}) for tileset_id=1, get_tileset_count() do local text = " " if tileset_id == room_editor.tile then text = "*" elseif tileset_id == room_editor.tile - 1 then text = "r" elseif tileset_id == room_editor.tile + 1 then text = "t" end im.text(text) if im.button("select") then room_editor.tile = tileset_id end im.image(TILE_TEX, get_tileset_quad(tileset_id)) end im.layout() im.end_window() end