Repository: GlitchedinOrbit/dual-grid-tilemap-system-godot-gdscript
Branch: main
Commit: 240d552e4fab
Files: 10
Total size: 63.3 KB
Directory structure:
gitextract_8xtfynom/
├── .github/
│ └── FUNDING.yml
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── assets/
│ ├── SelectionIndicator.png.import
│ └── Tilemap.png.import
├── project.godot
├── scenes/
│ └── world.tscn
└── scripts/
├── cursor.gd
└── tilemap.gd
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
ko_fi: glitchedinorbit
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Dual Grid Tilemap System for Godot (GDScript)
Thank you for considering contributing to the Dual Grid Tilemap System for Godot! Your contributions help improve the project and make it more useful for everyone. Here’s how you can help out.
## Table of Contents
- [Getting Started](#getting-started)
- [Contributing Guidelines](#contributing-guidelines)
- [Code Standards](#code-standards)
- [Submitting Changes](#submitting-changes)
- [Reporting Issues](#reporting-issues)
- [License](#license)
## Getting Started
1. **Fork the repository**: Click the “Fork” button at the top right of the repository page to create your copy of the project.
2. **Clone your fork**: Clone your forked repository to your local machine using:
```bash
git clone https://github.com/your-username/dual-grid-tilemap-system-godot-gdscript.git
```
3. **Install Godot**: Make sure you have Godot Engine installed. You can download it from the [official website](https://godotengine.org/download).
4. **Open the project**: Open the project in Godot to explore its structure and functionality.
## Contributing Guidelines
- **Be Respectful**: Treat everyone with respect and kindness. Open and constructive discussions are encouraged.
- **Stay on Topic**: Ensure your contributions align with the project's goals.
- **Ask Questions**: If you’re unsure about something, feel free to ask questions in the issues or discussions sections.
## Code Standards
- Follow the [Godot GDScript style guide](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html).
- Ensure your code is well-commented to help others understand your contributions.
- Write clear and concise commit messages that explain the purpose of your changes.
## Submitting Changes
1. **Create a branch**: Make a new branch for your changes:
```bash
git checkout -b your-feature-branch
```
2. **Make your changes**: Implement your feature or fix.
3. **Test your changes**: Ensure your changes do not break existing functionality.
4. **Commit your changes**: Commit your changes with a descriptive message:
```bash
git commit -m "Add feature: Describe what you did"
```
5. **Push your changes**: Push your branch to your fork:
```bash
git push origin your-feature-branch
```
6. **Create a pull request**: Go to the original repository, and you’ll see a prompt to create a pull request. Fill in the template, detailing what you’ve done.
## Reporting Issues
If you encounter any bugs or have suggestions for improvements, please report them by creating a new issue. Include the following information:
- A clear title and description of the issue.
- Steps to reproduce the issue, if applicable.
- Any error messages or screenshots to help illustrate the problem.
## License
By contributing, you agree that your contributions will be licensed under the project's existing license (check the `LICENSE` file for details).
Thank you for contributing to the Dual Grid Tilemap System for Godot! Your efforts are greatly appreciated!
================================================
FILE: LICENSE.md
================================================
MIT License
Copyright (c) 2024 GlitchedinOrbit
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
## Dual Grid Tilemap System For Godot In GDScript
A converted version of [jess::codes' C# dual grid system repo](https://github.com/jess-hammer/dual-grid-tilemap-system-godot) into native GDScript.
<b> Draw directly in the Editor with any of the fully filled tilemap tiles to see the changes! </b>

### Features
- Draw in the Editor
- Supports multiple terrains
- Grass
- Dirt
- Water
- Sand
- Easily add new terrain types
- Draw from multiple atlas coords

Using a dual grid system has the following advantages:
- Only 16 (or 6) tiles are required in the tileset
- The tiles have perfectly rounded corners
- The tiles align to the world grid

### References
- [Dual grid Twitter post by Oskar Stålberg](https://x.com/OskSta/status/1448248658865049605)
- ['Programming Terrain Generation' video by ThinMatrix](https://www.youtube.com/watch?v=buKQjkad2I0)
- ['Drawing Fewer Tiles' video by jess::codes](https://www.youtube.com/watch?v=jEWFSv3ivTg)
### Contributing
If you’d like to contribute, please see the [Contributing Guidelines](https://github.com/GlitchedinOrbit/dual-grid-tilemap-system-godot-gdscript/blob/main/CONTRIBUTING.md).
### Contact
If you have any questions, feedback, or suggestions, feel free to reach out:
- **Twitter**: [@glitchedinorbit](https://twitter.com/glitchedinorbit)
- **Email**: glitchedinorbit[at]gmail.com
<a href="https://ko-fi.com/glitchedinorbit">
<img width="220" alt="Support me on Ko-fi" src="https://github.com/user-attachments/assets/a9611d0c-848c-4da3-b7b6-908809afd924">
</a>
================================================
FILE: assets/SelectionIndicator.png.import
================================================
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://yuxn8elmkepi"
path="res://.godot/imported/SelectionIndicator.png-77fc6f11842d7d797fee5129cf7d1aff.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/SelectionIndicator.png"
dest_files=["res://.godot/imported/SelectionIndicator.png-77fc6f11842d7d797fee5129cf7d1aff.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
================================================
FILE: assets/Tilemap.png.import
================================================
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bglmjjbb1nivg"
path="res://.godot/imported/Tilemap.png-19909328b54cd4cfedc10cbc50054a9a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Tilemap.png"
dest_files=["res://.godot/imported/Tilemap.png-19909328b54cd4cfedc10cbc50054a9a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
================================================
FILE: project.godot
================================================
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Dual Grid System GDScript"
run/main_scene="res://scenes/world.tscn"
config/features=PackedStringArray("4.2", "Mobile")
[display]
window/size/viewport_width=640
window/size/viewport_height=360
window/size/mode=3
window/stretch/mode="canvas_items"
[filesystem]
import/blender/enabled=false
[input]
left_click={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
right_click={
"deadzone": 0.5,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
[rendering]
textures/canvas_textures/default_texture_filter=0
renderer/rendering_method="mobile"
================================================
FILE: scenes/world.tscn
================================================
[gd_scene load_steps=12 format=3 uid="uid://bj2e3y6dtnn83"]
[ext_resource type="Texture2D" uid="uid://bglmjjbb1nivg" path="res://assets/Tilemap.png" id="1_ni7nt"]
[ext_resource type="Script" path="res://scripts/tilemap.gd" id="2_7qj53"]
[ext_resource type="Texture2D" uid="uid://yuxn8elmkepi" path="res://assets/SelectionIndicator.png" id="4_nti6n"]
[ext_resource type="Script" path="res://scripts/cursor.gd" id="5_00xh7"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_eivu5"]
texture = ExtResource("1_ni7nt")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:0/0 = 0
5:0/0 = 0
5:1/0 = 0
6:1/0 = 0
6:2/0 = 0
6:3/0 = 0
7:3/0 = 0
7:2/0 = 0
7:1/0 = 0
7:0/0 = 0
6:0/0 = 0
4:1/0 = 0
4:2/0 = 0
4:3/0 = 0
5:3/0 = 0
5:2/0 = 0
3:4/0 = 0
3:5/0 = 0
3:6/0 = 0
3:7/0 = 0
2:7/0 = 0
1:7/0 = 0
0:7/0 = 0
0:6/0 = 0
0:5/0 = 0
0:4/0 = 0
1:4/0 = 0
2:4/0 = 0
2:5/0 = 0
2:6/0 = 0
1:6/0 = 0
1:5/0 = 0
7:4/0 = 0
6:4/0 = 0
5:4/0 = 0
4:4/0 = 0
4:5/0 = 0
4:6/0 = 0
4:7/0 = 0
5:7/0 = 0
6:7/0 = 0
7:7/0 = 0
7:6/0 = 0
7:5/0 = 0
6:5/0 = 0
5:5/0 = 0
5:6/0 = 0
6:6/0 = 0
0:8/0 = 0
0:9/0 = 0
0:10/0 = 0
0:11/0 = 0
1:8/0 = 0
1:9/0 = 0
1:10/0 = 0
1:11/0 = 0
2:8/0 = 0
2:9/0 = 0
2:10/0 = 0
2:11/0 = 0
3:8/0 = 0
3:9/0 = 0
3:10/0 = 0
3:11/0 = 0
[sub_resource type="TileSet" id="TileSet_hneuh"]
sources/0 = SubResource("TileSetAtlasSource_eivu5")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s05eq"]
texture = ExtResource("1_ni7nt")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:0/0 = 0
5:0/0 = 0
6:0/0 = 0
7:0/0 = 0
7:1/0 = 0
7:2/0 = 0
7:3/0 = 0
6:3/0 = 0
5:3/0 = 0
4:3/0 = 0
4:2/0 = 0
4:1/0 = 0
5:1/0 = 0
6:1/0 = 0
6:2/0 = 0
5:2/0 = 0
3:4/0 = 0
3:5/0 = 0
3:6/0 = 0
2:6/0 = 0
2:7/0 = 0
1:7/0 = 0
0:7/0 = 0
0:6/0 = 0
0:5/0 = 0
0:4/0 = 0
1:4/0 = 0
1:5/0 = 0
2:5/0 = 0
2:4/0 = 0
1:6/0 = 0
3:7/0 = 0
4:4/0 = 0
5:4/0 = 0
6:4/0 = 0
7:4/0 = 0
7:5/0 = 0
7:6/0 = 0
7:7/0 = 0
6:7/0 = 0
5:7/0 = 0
4:7/0 = 0
4:6/0 = 0
4:5/0 = 0
5:5/0 = 0
6:5/0 = 0
6:6/0 = 0
5:6/0 = 0
0:8/0 = 0
0:9/0 = 0
0:10/0 = 0
0:11/0 = 0
1:8/0 = 0
1:9/0 = 0
1:10/0 = 0
1:11/0 = 0
2:8/0 = 0
2:9/0 = 0
2:10/0 = 0
2:11/0 = 0
3:8/0 = 0
3:9/0 = 0
3:10/0 = 0
3:11/0 = 0
[sub_resource type="TileSet" id="TileSet_77ea1"]
sources/0 = SubResource("TileSetAtlasSource_s05eq")
[sub_resource type="AtlasTexture" id="AtlasTexture_bjwxa"]
atlas = ExtResource("4_nti6n")
region = Rect2(0, 0, 17, 17)
[sub_resource type="AtlasTexture" id="AtlasTexture_ayys0"]
atlas = ExtResource("4_nti6n")
region = Rect2(17, 0, 17, 17)
[sub_resource type="SpriteFrames" id="SpriteFrames_v82uo"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_bjwxa")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ayys0")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="World" type="Node2D"]
[node name="WorldTileMap" type="TileMap" parent="." node_paths=PackedStringArray("offset_tilemap")]
tile_set = SubResource("TileSet_hneuh")
format = 2
layer_0/tile_data = PackedInt32Array(0, 131072, 1, 65536, 131072, 1, 131072, 131072, 1, 196608, 131072, 1, 262144, 131072, 1, 327680, 131072, 1, 393216, 131072, 1, 458752, 131072, 1, 524288, 131072, 1, 589824, 131072, 1, 1, 131072, 1, 65537, 131072, 1, 131073, 131072, 1, 196609, 131072, 1, 262145, 131072, 1, 327681, 131072, 1, 393217, 131072, 1, 458753, 131072, 1, 524289, 0, 3, 589825, 131072, 1, 2, 131072, 1, 65538, 0, 3, 131074, 131072, 1, 196610, 131072, 1, 262146, 131072, 1, 327682, 131072, 1, 393218, 131072, 1, 458754, 131072, 1, 524290, 0, 3, 589826, 131072, 1, 3, 131072, 1, 65539, 131072, 1, 131075, 131072, 1, 196611, 131072, 1, 262147, 0, 3, 327683, 0, 3, 393219, 0, 3, 458755, 0, 3, 524291, 0, 3, 589827, 131072, 1, 4, 131072, 1, 65540, 131072, 1, 131076, 131072, 1, 196612, 0, 3, 262148, 0, 3, 327684, 0, 3, 393220, 131072, 1, 458756, 131072, 1, 524292, 131072, 1, 589828, 131072, 1, 5, 131072, 1, 65541, 131072, 1, 131077, 131072, 1, 196613, 0, 3, 262149, 0, 3, 327685, 0, 3, 393221, 0, 3, 458757, 131072, 1, 524293, 131072, 1, 589829, 131072, 1, 6, 131072, 1, 65542, 131072, 1, 131078, 131072, 1, 196614, 0, 3, 262150, 131072, 1, 327686, 131072, 1, 393222, 0, 3, 458758, 131072, 1, 524294, 131072, 1, 589830, 131072, 1, 7, 131072, 1, 65543, 131072, 1, 131079, 131072, 1, 196615, 0, 3, 262151, 131072, 1, 327687, 131072, 1, 393223, 0, 3, 458759, 131072, 1, 524295, 0, 3, 589831, 131072, 1, 8, 131072, 1, 65544, 0, 3, 131080, 0, 3, 196616, 0, 3, 262152, 131072, 1, 327688, 131072, 1, 393224, 0, 3, 458760, 0, 3, 524296, 0, 3, 589832, 131072, 1, 9, 131072, 1, 65545, 131072, 1, 131081, 131072, 1, 196617, 131072, 1, 262153, 131072, 1, 327689, 131072, 1, 393225, 0, 3, 458761, 131072, 1, 524297, 131072, 1, 589833, 131072, 1, 10, 131072, 1, 65546, 131072, 1, 131082, 131072, 1, 196618, 131072, 1, 262154, 131072, 1, 327690, 131072, 1, 393226, 131072, 1, 458762, 131072, 1, 524298, 0, 3, 589834, 0, 3, 11, 131072, 1, 65547, 0, 3, 131083, 0, 3, 196619, 131072, 1, 262155, 131072, 1, 327691, 131072, 1, 393227, 131072, 1, 458763, 131072, 1, 524299, 131072, 1, 589835, 131072, 1, 12, 131072, 1, 65548, 0, 3, 131084, 0, 3, 196620, 131072, 1, 262156, 0, 3, 327692, 0, 3, 393228, 0, 3, 458764, 0, 3, 524300, 0, 3, 589836, 0, 3, 13, 131072, 1, 65549, 131072, 1, 131085, 131072, 1, 196621, 131072, 1, 262157, 131072, 1, 327693, 131072, 1, 393229, 131072, 1, 458765, 131072, 1, 524301, 131072, 1, 589837, 131072, 1, 655373, 131072, 1, 720909, 0, 3, 786445, 131072, 1, 851981, 393216, 1, 917517, 393216, 1, 983053, 131072, 1, 1048589, 0, 3, 1114125, 131072, 1, 1179661, 131072, 1, 1245197, 131072, 1, 1310733, 131072, 1, 1376269, 131072, 1, 1441805, 131072, 1, 14, 131072, 1, 65550, 131072, 1, 131086, 131072, 1, 196622, 131072, 1, 262158, 131072, 1, 327694, 0, 3, 393230, 0, 3, 458766, 131072, 1, 524302, 131072, 1, 589838, 131072, 1, 655374, 131072, 1, 720910, 131072, 1, 786446, 131072, 1, 851982, 131072, 1, 917518, 131072, 1, 983054, 131072, 1, 1048590, 0, 3, 1114126, 131072, 1, 1179662, 131072, 1, 1245198, 131072, 1, 1310734, 131072, 1, 1376270, 131072, 1, 1441806, 131072, 1, 15, 131072, 1, 65551, 131072, 1, 131087, 0, 3, 196623, 0, 3, 262159, 0, 3, 327695, 131072, 1, 393231, 0, 3, 458767, 131072, 1, 524303, 131072, 1, 589839, 131072, 1, 655375, 131072, 1, 720911, 131072, 1, 786447, 131072, 1, 851983, 131072, 1, 917519, 131072, 1, 983055, 131072, 1, 1048591, 0, 3, 1114127, 131072, 1, 1179663, 131072, 1, 1245199, 131072, 1, 1310735, 131072, 1, 1376271, 131072, 1, 1441807, 131072, 1, 16, 131072, 1, 65552, 131072, 1, 131088, 131072, 1, 196624, 131072, 1, 262160, 131072, 1, 327696, 131072, 1, 393232, 0, 3, 458768, 0, 3, 524304, 0, 3, 589840, 0, 3, 655376, 0, 3, 720912, 0, 3, 786448, 0, 3, 851984, 0, 3, 917520, 0, 3, 983056, 0, 3, 1048592, 0, 3, 1114128, 131072, 1, 1179664, 131072, 1, 1245200, 131072, 1, 1310736, 131072, 1, 1376272, 131072, 1, 1441808, 131072, 1, 17, 131072, 1, 65553, 131072, 1, 131089, 131072, 1, 196625, 393216, 1, 262161, 131072, 1, 327697, 131072, 1, 393233, 0, 3, 458769, 131072, 1, 524305, 131072, 1, 589841, 131072, 1, 655377, 131072, 1, 720913, 131072, 1, 786449, 0, 3, 851985, 131072, 1, 917521, 131072, 1, 983057, 131072, 1, 1048593, 0, 3, 1114129, 131072, 1, 1179665, 131072, 1, 1245201, 131072, 1, 1310737, 131072, 1, 1376273, 131072, 1, 1441809, 131072, 1, 18, 131072, 1, 65554, 131072, 1, 131090, 131072, 1, 196626, 131072, 1, 262162, 131072, 1, 327698, 0, 3, 393234, 131072, 1, 458770, 131072, 1, 524306, 131072, 1, 589842, 131072, 1, 655378, 131072, 1, 720914, 0, 3, 786450, 0, 3, 851986, 131072, 1, 917522, 131072, 1, 983058, 131072, 1, 1048594, 0, 3, 1114130, 131072, 1, 1179666, 131072, 1, 1245202, 131072, 1, 1310738, 0, 3, 1376274, 131072, 1, 1441810, 131072, 1, 19, 131072, 1, 65555, 131072, 1, 131091, 131072, 1, 196627, 131072, 1, 262163, 131072, 1, 327699, 0, 3, 393235, 131072, 1, 458771, 131072, 1, 524307, 131072, 1, 589843, 131072, 1, 655379, 0, 3, 720915, 0, 3, 786451, 131072, 1, 851987, 131072, 1, 917523, 131072, 1, 983059, 131072, 1, 1048595, 0, 3, 1114131, 131072, 1, 1179667, 131072, 1, 1245203, 0, 3, 1310739, 0, 3, 1376275, 131072, 1, 1441811, 131072, 1, 20, 131072, 1, 65556, 131072, 1, 131092, 131072, 1, 196628, 131072, 1, 262164, 131072, 1, 327700, 0, 3, 393236, 131072, 1, 458772, 131072, 1, 524308, 131072, 1, 589844, 131072, 1, 655380, 0, 3, 720916, 131072, 1, 786452, 131072, 1, 851988, 131072, 1, 917524, 131072, 1, 983060, 131072, 1, 1048596, 0, 3, 1114132, 131072, 1, 1179668, 0, 3, 1245204, 0, 3, 1310740, 0, 3, 1376276, 131072, 1, 1441812, 131072, 1, 65557, 131072, 1, 131093, 131072, 1, 196629, 131072, 1, 262165, 131072, 1, 458773, 131072, 1, 524309, 131072, 1, 589845, 131072, 1, 655381, 0, 3, 720917, 131072, 1, 786453, 131072, 1, 851989, 131072, 1, 917525, 131072, 1, 983061, 131072, 1, 1048597, 0, 3, 1114133, 0, 3, 1179669, 0, 3, 1245205, 131072, 1, 1310741, 131072, 1, 1376277, 131072, 1, 1441813, 131072, 1, 22, 131072, 1, 65558, 131072, 1, 131094, 131072, 1, 196630, 131072, 1, 262166, 131072, 1, 458774, 131072, 1, 524310, 131072, 1, 589846, 131072, 1, 655382, 0, 3, 720918, 131072, 1, 786454, 131072, 1, 851990, 131072, 1, 917526, 131072, 1, 983062, 131072, 1, 1048598, 131072, 1, 1114134, 0, 3, 1179670, 131072, 1, 1245206, 393216, 5, 1310742, 393216, 5, 1376278, 393216, 5, 1441814, 393216, 5, 65559, 393216, 1, 131095, 393216, 1, 196631, 393216, 1, 262167, 131072, 1, 458775, 131072, 1, 524311, 131072, 1, 589847, 131072, 1, 655383, 0, 3, 720919, 131072, 1, 786455, 131072, 1, 851991, 131072, 1, 917527, 131072, 1, 983063, 0, 3, 1048599, 0, 3, 1114135, 0, 3, 1179671, 131072, 1, 1245207, 393216, 5, 1310743, 131072, 1, 1376279, 131072, 1, 1441815, 131072, 1, 65560, 393216, 1, 131096, 131072, 1, 196632, 393216, 1, 262168, 131072, 1, 458776, 131072, 1, 524312, 131072, 1, 589848, 131072, 1, 655384, 0, 3, 720920, 131072, 1, 786456, 131072, 1, 851992, 131072, 1, 917528, 131072, 1, 983064, 0, 3, 1048600, 131072, 1, 1114136, 0, 3, 1179672, 131072, 1, 1245208, 393216, 5, 1310744, 131072, 1, 1376280, 131072, 1, 1441816, 131072, 1, 65561, 393216, 1, 131097, 131072, 1, 196633, 393216, 1, 262169, 131072, 1, 458777, 131072, 1, 524313, 131072, 1, 589849, 131072, 1, 655385, 0, 3, 720921, 131072, 1, 786457, 131072, 1, 851993, 131072, 1, 917529, 131072, 1, 983065, 0, 3, 1048601, 0, 3, 1114137, 0, 3, 1179673, 0, 3, 1245209, 393216, 5, 1310745, 131072, 1, 1376281, 131072, 1, 1441817, 131072, 1, 65562, 393216, 1, 131098, 131072, 1, 196634, 393216, 1, 262170, 131072, 1, 327706, 0, 3, 393242, 131072, 1, 458778, 131072, 1, 524314, 131072, 1, 589850, 131072, 1, 655386, 0, 3, 720922, 131072, 1, 786458, 131072, 1, 851994, 131072, 1, 917530, 131072, 1, 983066, 131072, 1, 1048602, 0, 3, 1114138, 131072, 1, 1179674, 0, 3, 1245210, 393216, 5, 1310746, 131072, 1, 1376282, 131072, 1, 1441818, 131072, 1, 65563, 393216, 1, 131099, 393216, 1, 196635, 393216, 1, 262171, 131072, 1, 327707, 0, 3, 393243, 0, 3, 458779, 0, 3, 524315, 0, 3, 589851, 0, 3, 655387, 0, 3, 720923, 131072, 1, 786459, 131072, 1, 851995, 131072, 1, 917531, 131072, 1, 1114139, 131072, 1, 1179675, 0, 3, 1245211, 393216, 5, 1310747, 131072, 1, 1376283, 131072, 1, 1441819, 131072, 1, 262172, 131072, 1, 327708, 0, 3, 393244, 0, 3, 458780, 131072, 1, 524316, 131072, 1, 589852, 0, 3, 655388, 131072, 1, 720924, 131072, 1, 786460, 131072, 1, 851996, 131072, 1, 917532, 131072, 1, 1245212, 393216, 5, 1310748, 131072, 1, 1376284, 131072, 1, 1441820, 131072, 1, 262173, 131072, 1, 327709, 131072, 1, 393245, 131072, 1, 458781, 131072, 1, 524317, 131072, 1, 589853, 0, 3, 655389, 0, 3, 720925, 131072, 1, 786461, 131072, 1, 851997, 131072, 1, 917533, 131072, 1, 1245213, 393216, 5, 1310749, 131072, 1, 1376285, 131072, 1, 1441821, 131072, 1, 262174, 131072, 1, 327710, 131072, 1, 393246, 131072, 1, 458782, 0, 3, 524318, 0, 3, 589854, 0, 3, 655390, 0, 3, 720926, 131072, 1, 786462, 131072, 1, 851998, 131072, 1, 1245214, 393216, 5, 1310750, 131072, 1, 1376286, 131072, 1, 1441822, 131072, 1, 262175, 131072, 1, 327711, 131072, 1, 393247, 0, 3, 458783, 0, 3, 524319, 131072, 1, 589855, 131072, 1, 655391, 0, 3, 720927, 0, 3, 786463, 0, 3, 851999, 0, 3, 1048607, 393216, 1, 1376287, 131072, 1, 1441823, 131072, 1, 262176, 131072, 1, 327712, 131072, 1, 393248, 131072, 1, 458784, 131072, 1, 524320, 131072, 1, 589856, 131072, 1, 655392, 131072, 1, 720928, 131072, 1, 786464, 0, 3, 852000, 0, 3, 983072, 0, 3, 1048608, 0, 3, 1179680, 131072, 1, 1245216, 393216, 5, 1376288, 131072, 1, 1441824, 131072, 1, 262177, 262144, 7, 327713, 262144, 7, 393249, 131072, 1, 458785, 131072, 1, 524321, 131072, 1, 589857, 131072, 1, 655393, 131072, 1, 720929, 131072, 1, 786465, 131072, 1, 852001, 131072, 1, 983073, 131072, 1, 1048609, 0, 3, 1179681, 131072, 1, 1245217, 393216, 5, 1310753, 393216, 5, 1376289, 393216, 5, 1441825, 393216, 5, 262178, 262144, 7, 327714, 131072, 1, 393250, 131072, 1, 458786, 131072, 1, 524322, 131072, 1, 589858, 131072, 1, 655394, 131072, 1, 720930, 262144, 7, 786466, 131072, 1, 852002, 131072, 1, 983074, 131072, 1, 1048610, 131072, 1, 1179682, 131072, 1, 1245218, 393216, 5, 1310754, 131072, 1, 1376290, 131072, 1, 1441826, 131072, 1, 262179, 131072, 1, 327715, 131072, 1, 393251, 131072, 1, 458787, 131072, 1, 524323, 262144, 7, 589859, 131072, 1, 655395, 131072, 1, 720931, 131072, 1, 786467, 131072, 1, 852003, 131072, 1, 983075, 131072, 1, 1048611, 131072, 1, 1179683, 262144, 7, 1245219, 262144, 7, 1310755, 262144, 7, 1376291, 262144, 7, 1441827, 262144, 7, 65572, 262144, 7, 131108, 131072, 1, 196644, 131072, 1, 262180, 131072, 1, 327716, 131072, 1, 393252, 131072, 1, 458788, 262144, 7, 524324, 262144, 7, 589860, 262144, 7, 655396, 131072, 1, 720932, 131072, 1, 1048612, 131072, 1, 1179684, 262144, 7, 1245220, 262144, 7, 1310756, 393216, 1, 1376292, 393216, 1, 1441828, 262144, 7, 65573, 262144, 7, 131109, 262144, 7, 196645, 131072, 1, 262181, 131072, 1, 327717, 131072, 1, 1179685, 393216, 1, 1245221, 393216, 1, 1310757, 393216, 1, 1376293, 393216, 1, 1441829, 262144, 7, 65574, 131072, 1, 131110, 262144, 7, 196646, 262144, 7, 262182, 262144, 7, 327718, 262144, 7, 1179686, 393216, 1, 1245222, 393216, 1, 1310758, 393216, 1, 1376294, 262144, 7, 1441830, 262144, 7, 65575, 131072, 1, 131111, 131072, 1, 196647, 131072, 1, 262183, 131072, 1, 327719, 131072, 1, 1441831, 131072, 1, 655360, 393216, 1, 720896, 393216, 1, 786432, 393216, 1, 851968, 393216, 1, 917504, 393216, 1, 983040, 393216, 1, 1048576, 393216, 1, 1114112, 393216, 1, 1179648, 131072, 1, 1245184, 131072, 1, 1310720, 131072, 1, 1376256, 131072, 1, 1441792, 131072, 1, 655361, 393216, 1, 720897, 131072, 1, 786433, 131072, 1, 851969, 131072, 1, 917505, 131072, 1, 983041, 393216, 1, 1048577, 131072, 1, 1114113, 393216, 1, 1179649, 131072, 1, 1245185, 131072, 1, 1310721, 131072, 1, 1376257, 131072, 1, 1441793, 131072, 1, 655362, 393216, 1, 720898, 131072, 1, 786434, 0, 3, 851970, 131072, 1, 917506, 131072, 1, 983042, 393216, 1, 1048578, 131072, 1, 1310722, 131072, 1, 1376258, 131072, 1, 1441794, 131072, 1, 655363, 393216, 1, 720899, 131072, 1, 786435, 0, 3, 851971, 131072, 1, 917507, 131072, 1, 983043, 393216, 1, 1048579, 131072, 1, 1114115, 131072, 1, 1179651, 131072, 1, 1245187, 131072, 1, 1310723, 131072, 1, 1376259, 131072, 1, 1441795, 131072, 1, 655364, 393216, 1, 720900, 131072, 1, 786436, 0, 3, 851972, 131072, 1, 917508, 131072, 1, 983044, 393216, 1, 1048580, 131072, 1, 1114116, 131072, 1, 1179652, 131072, 1, 1245188, 393216, 1, 1310724, 131072, 1, 1376260, 131072, 1, 1441796, 131072, 1, 655365, 393216, 1, 720901, 131072, 1, 786437, 0, 3, 851973, 131072, 1, 917509, 131072, 1, 983045, 131072, 1, 1048581, 393216, 1, 1114117, 393216, 1, 1179653, 393216, 1, 1245189, 131072, 1, 1310725, 131072, 1, 1376261, 131072, 1, 1441797, 131072, 1, 655366, 131072, 1, 720902, 131072, 1, 786438, 0, 3, 851974, 131072, 1, 917510, 393216, 1, 983046, 393216, 1, 1048582, 393216, 1, 1114118, 131072, 1, 1179654, 131072, 1, 1245190, 131072, 1, 1310726, 131072, 1, 1376262, 131072, 1, 1441798, 131072, 1, 655367, 131072, 1, 720903, 131072, 1, 786439, 0, 3, 851975, 131072, 1, 917511, 131072, 1, 983047, 131072, 1, 1048583, 131072, 1, 1114119, 131072, 1, 1179655, 131072, 1, 1245191, 131072, 1, 1310727, 131072, 1, 1376263, 131072, 1, 1441799, 131072, 1, 655368, 131072, 1, 720904, 131072, 1, 786440, 0, 3, 851976, 0, 3, 917512, 131072, 1, 983048, 131072, 1, 1048584, 131072, 1, 1114120, 131072, 1, 1179656, 131072, 1, 1245192, 131072, 1, 1310728, 131072, 1, 1376264, 131072, 1, 1441800, 131072, 1, 655369, 131072, 1, 720905, 131072, 1, 786441, 0, 3, 851977, 0, 3, 917513, 0, 3, 983049, 0, 3, 1048585, 0, 3, 1114121, 0, 3, 1179657, 0, 3, 1245193, 131072, 1, 1310729, 131072, 1, 1376265, 131072, 1, 1441801, 131072, 1, 655370, 0, 3, 720906, 0, 3, 786442, 0, 3, 851978, 131072, 1, 917514, 131072, 1, 983050, 131072, 1, 1048586, 0, 3, 1114122, 131072, 1, 1179658, 131072, 1, 1245194, 131072, 1, 1310730, 131072, 1, 1376266, 131072, 1, 1441802, 131072, 1, 655371, 131072, 1, 720907, 131072, 1, 786443, 131072, 1, 851979, 131072, 1, 917515, 131072, 1, 983051, 131072, 1, 1048587, 0, 3, 1114123, 131072, 1, 1179659, 131072, 1, 1245195, 131072, 1, 1310731, 131072, 1, 1376267, 131072, 1, 1441803, 131072, 1, 655372, 0, 3, 720908, 131072, 1, 786444, 131072, 1, 851980, 393216, 1, 917516, 393216, 1, 983052, 131072, 1, 1048588, 0, 3, 1114124, 131072, 1, 1179660, 131072, 1, 1245196, 131072, 1, 1310732, 131072, 1, 1376268, 131072, 1, 1441804, 131072, 1, 65576, 131072, 1, 131112, 131072, 1, 196648, 131072, 1, 262184, 131072, 1, 327720, 131072, 1, 393256, 131072, 1, -65516, 131072, 1, -65517, 131072, 1, -65518, 131072, 1, -65519, 131072, 1, -65520, 131072, 1, -65521, 131072, 1, -65522, 131072, 1, -65523, 131072, 1, -65524, 131072, 1, -65525, 131072, 1, -65526, 131072, 1, -65527, 131072, 1, -65528, 131072, 1, -65529, 131072, 1, -65530, 131072, 1, -65531, 131072, 1, -65532, 131072, 1, -65533, 131072, 1, -65534, 131072, 1, -65535, 131072, 1, -65536, 131072, 1, 1048606, 393216, 1, 786468, 131072, 1, 852004, 131072, 1, 983076, 131072, 1, 1507327, 131072, 1, 1441791, 131072, 1, 1376255, 131072, 1, 1310719, 131072, 1, 1245183, 131072, 1, 1179647, 131072, 1, 1114111, 131072, 1, 1048575, 131072, 1, 983039, 131072, 1, 917503, 131072, 1, 851967, 131072, 1, 786431, 131072, 1, 720895, 131072, 1, 655359, 131072, 1, 589823, 131072, 1, 524287, 131072, 1, 458751, 131072, 1, 393215, 131072, 1, 327679, 131072, 1, 262143, 131072, 1, 196607, 131072, 1, 131071, 131072, 1, 65535, 131072, 1, 786472, 131072, 1, 720936, 131072, 1, 655400, 131072, 1, 589864, 131072, 1, 524328, 131072, 1, 458792, 131072, 1, 1310760, 131072, 1, 1245224, 131072, 1, 1179688, 131072, 1, 917544, 131072, 1, 852008, 131072, 1, 1376295, 262144, 7, 1310759, 262144, 7, 1245223, 262144, 7, 1179687, 262144, 7, 1114151, 262144, 7, 917543, 131072, 1, 852007, 131072, 1, 786471, 131072, 1, 720935, 131072, 1, 655399, 131072, 1, 589863, 131072, 1, 524327, 131072, 1, 458791, 131072, 1, 393255, 131072, 1, 393254, 262144, 7, 393253, 262144, 7, 852005, 131072, 1, 917541, 131072, 1, 1048613, 262144, 7, 458789, 262144, 7, 524325, 131072, 1, 589861, 131072, 1, 655397, 131072, 1, 720933, 131072, 1, 786469, 131072, 1, 458790, 262144, 7, 524326, 131072, 1, 589862, 131072, 1, 655398, 131072, 1, 720934, 131072, 1, 786470, 131072, 1, 852006, 131072, 1, 917542, 131072, 1, 1048614, 262144, 7, 23, 131072, 1, 24, 131072, 1, 25, 131072, 1, 26, 131072, 1, 27, 131072, 1, -65508, 131072, 1, -65507, 131072, 1, -65506, 131072, 1, -65505, 131072, 1, -65504, 131072, 1, -65503, 131072, 1, -65502, 131072, 1, -65501, 131072, 1, -65500, 131072, 1, 36, 262144, 7, -65499, 131072, 1, 37, 262144, 7, -65498, 131072, 1, 38, 131072, 1, -65497, 131072, 1, 39, 131072, 1, -65496, 131072, 1, 40, 131072, 1, 1441832, 131072, 1, 1376296, 131072, 1, 1114152, 131072, 1, 983080, 131072, 1, 983079, 131072, 1, 983078, 131072, 1, 983077, 131072, 1, 917540, 131072, 1, 917539, 131072, 1, 917538, 131072, 1, 917537, 131072, 1, 917536, 0, 3, 917535, 131072, 1, 917534, 131072, 1, 983071, 0, 3, 983070, 0, 3, 983069, 0, 3, 983068, 0, 3, 983067, 131072, 1, 1048603, 0, 3, 1048604, 0, 3, 1114141, 0, 3, 1114142, 0, 3, 1179678, 131072, 1, 1048605, 0, 3, 1114140, 131072, 1, 1179676, 0, 3, 1179677, 0, 3, 1048616, 131072, 1, 1048615, 262144, 7, 1114150, 262144, 7, 1114149, 262144, 7, 1114148, 262144, 7, 1114147, 131072, 1, 1114146, 131072, 1, 1114145, 0, 3, 1114144, 0, 3, 1114143, 0, 3, 1179679, 131072, 1, 1245215, 393216, 5, 1310751, 131072, 1, 1310752, 131072, 1, 1572863, 131072, 1, 1507328, 131072, 1, 1507329, 131072, 1, 1507330, 131072, 1, 1507331, 131072, 1, 1507332, 131072, 1, 1507333, 131072, 1, 1507334, 131072, 1, 1507335, 131072, 1, 1507336, 131072, 1, 1507337, 131072, 1, 1507338, 131072, 1, 1507339, 131072, 1, 1507340, 131072, 1, 1507341, 131072, 1, 1507342, 131072, 1, 1507343, 131072, 1, 1507344, 131072, 1, 1507345, 131072, 1, 1507346, 131072, 1, 1507347, 131072, 1, 1507348, 131072, 1, 1507349, 131072, 1, 1507350, 393216, 5, 1507351, 393216, 5, 1507352, 393216, 5, 1507353, 393216, 5, 1507354, 393216, 5, 1507355, 393216, 5, 1507356, 393216, 5, 1507357, 393216, 5, 1507358, 393216, 5, 1507359, 393216, 5, 1507360, 393216, 5, 1507361, 393216, 5, 1507362, 131072, 1, 1507363, 131072, 1, 1507364, 131072, 1, 1507365, 131072, 1, 1507366, 131072, 1, 1507367, 131072, 1, 1507368, 131072, 1, 1114114, 393216, 1, 1179650, 393216, 1, 1245186, 131072, 1, -1, 131072, 1, 393239, 131072, 1, 393238, 131072, 1, 327702, 0, 3, 327701, 0, 3, 393237, 131072, 1, 393240, 131072, 1, 393241, 131072, 1, 327705, 0, 3, 327704, 0, 3, 327703, 0, 3, -65509, 131072, 1, -65510, 131072, 1, -65511, 131072, 1, -65512, 131072, 1, -65513, 131072, 1, -65514, 131072, 1, -65515, 131072, 1, 21, 131072, 1, 28, 131072, 1, 65564, 393216, 1, 131100, 393216, 1, 196636, 131072, 1, 29, 131072, 1, 65565, 131072, 1, 131101, 131072, 1, 196637, 131072, 1, 65570, 262144, 7, 65569, 262144, 7, 65568, 131072, 1, 65567, 131072, 1, 65566, 131072, 1, 131102, 131072, 1, 131103, 131072, 1, 131104, 131072, 1, 131105, 262144, 7, 131106, 262144, 7, 131107, 131072, 1, 196641, 131072, 1, 196642, 262144, 7, 196643, 262144, 7, 33, 131072, 1, 34, 131072, 1, 35, 262144, 7, 65571, 262144, 7, 196640, 131072, 1, 196639, 131072, 1, 196638, 131072, 1, 30, 131072, 1, 31, 131072, 1, 32, 131072, 1)
script = ExtResource("2_7qj53")
offset_tilemap = NodePath("../OffsetTileMap")
[node name="OffsetTileMap" type="TileMap" parent="."]
position = Vector2(-8, -8)
tile_set = SubResource("TileSet_77ea1")
format = 2
layer_0/tile_data = PackedInt32Array(0, 393216, 5, 1, 393216, 5, 65536, 393216, 5, 65537, 393216, 5, 131072, 393216, 5, 131073, 393216, 5, 196608, 393216, 5, 196609, 393216, 5, 262144, 393216, 5, 262145, 393216, 5, 327680, 393216, 5, 327681, 393216, 5, 393216, 393216, 5, 393217, 393216, 5, 458752, 393216, 5, 458753, 393216, 5, 524288, 393216, 5, 524289, 196608, 1, 589824, 393216, 5, 589825, 131072, 0, 655360, 65536, 7, 655361, 196608, 4, 2, 393216, 5, 65538, 196608, 1, 131074, 131072, 0, 196610, 393216, 5, 262146, 393216, 5, 327682, 393216, 5, 393218, 393216, 5, 458754, 393216, 5, 524290, 65536, 2, 589826, 196608, 0, 655362, 196608, 4, 3, 393216, 5, 65539, 131072, 2, 131075, 65536, 1, 196611, 393216, 5, 262147, 196608, 1, 327683, 196608, 2, 393219, 196608, 2, 458755, 196608, 2, 524291, 196608, 3, 589827, 196608, 0, 655363, 196608, 4, 4, 393216, 5, 65540, 393216, 5, 131076, 393216, 5, 196612, 196608, 1, 262148, 196608, 3, 327684, 262144, 3, 393220, 65536, 3, 458756, 65536, 0, 524292, 65536, 0, 589828, 65536, 1, 655364, 196608, 4, 5, 393216, 5, 65541, 393216, 5, 131077, 393216, 5, 196613, 65536, 2, 262149, 262144, 3, 327685, 262144, 3, 393221, 0, 0, 458757, 131072, 0, 524293, 393216, 5, 589829, 393216, 5, 655365, 196608, 4, 6, 393216, 5, 65542, 393216, 5, 131078, 393216, 5, 196614, 65536, 2, 262150, 65536, 3, 327686, 65536, 0, 393222, 0, 2, 458758, 196608, 0, 524294, 393216, 5, 589830, 393216, 5, 655366, 0, 4, 7, 393216, 5, 65543, 393216, 5, 131079, 393216, 5, 196615, 65536, 2, 262151, 196608, 0, 327687, 393216, 5, 393223, 65536, 2, 458759, 196608, 0, 524295, 196608, 1, 589831, 131072, 0, 655367, 393216, 5, 8, 393216, 5, 65544, 196608, 1, 131080, 196608, 2, 196616, 196608, 3, 262152, 196608, 0, 327688, 393216, 5, 393224, 65536, 2, 458760, 0, 0, 524296, 196608, 3, 589832, 196608, 0, 655368, 393216, 5, 9, 393216, 5, 65545, 131072, 2, 131081, 65536, 0, 196617, 65536, 0, 262153, 65536, 1, 327689, 393216, 5, 393225, 65536, 2, 458761, 65536, 3, 524297, 65536, 0, 589833, 65536, 1, 655369, 393216, 5, 10, 393216, 5, 65546, 393216, 5, 131082, 393216, 5, 196618, 393216, 5, 262154, 393216, 5, 327690, 393216, 5, 393226, 131072, 2, 458762, 65536, 1, 524298, 196608, 1, 589834, 196608, 2, 655370, 196608, 2, 11, 393216, 5, 65547, 196608, 1, 131083, 196608, 2, 196619, 131072, 0, 262155, 393216, 5, 327691, 393216, 5, 393227, 393216, 5, 458763, 393216, 5, 524299, 131072, 2, 589835, 65536, 0, 655371, 65536, 0, 12, 393216, 5, 65548, 65536, 2, 131084, 262144, 3, 196620, 196608, 0, 262156, 196608, 1, 327692, 196608, 2, 393228, 196608, 2, 458764, 196608, 2, 524300, 196608, 2, 589836, 196608, 2, 655372, 196608, 2, 13, 393216, 5, 65549, 131072, 2, 131085, 65536, 0, 196621, 65536, 1, 262157, 131072, 2, 327693, 65536, 0, 393229, 65536, 0, 458765, 65536, 0, 524301, 65536, 0, 589837, 65536, 0, 655373, 65536, 0, 14, 393216, 5, 65550, 393216, 5, 131086, 393216, 5, 196622, 393216, 5, 262158, 393216, 5, 327694, 196608, 1, 393230, 196608, 2, 458766, 131072, 0, 524302, 393216, 5, 589838, 393216, 5, 655374, 393216, 5, 720909, 131072, 3, 720910, 131072, 2, 786445, 131072, 0, 786446, 65536, 1, 851981, 196608, 4, 851982, 0, 4, 917517, 131072, 9, 917518, 196608, 6, 1179661, 393216, 5, 1179662, 393216, 5, 1245197, 393216, 5, 1245198, 393216, 5, 1310733, 393216, 5, 1310734, 393216, 5, 1376269, 393216, 5, 1376270, 393216, 5, 1441805, 393216, 5, 1441806, 393216, 5, 1507341, 393216, 5, 1507342, 393216, 5, 15, 393216, 5, 65551, 393216, 5, 131087, 196608, 1, 196623, 196608, 2, 262159, 196608, 2, 327695, 0, 1, 393231, 0, 2, 458767, 196608, 0, 524303, 393216, 5, 589839, 393216, 5, 655375, 393216, 5, 720911, 393216, 5, 786447, 393216, 5, 851983, 393216, 5, 917519, 393216, 5, 983055, 393216, 5, 1179663, 393216, 5, 1245199, 393216, 5, 1310735, 393216, 5, 1376271, 393216, 5, 1441807, 393216, 5, 1507343, 393216, 5, 16, 393216, 5, 65552, 393216, 5, 131088, 131072, 2, 196624, 65536, 0, 262160, 65536, 0, 327696, 65536, 1, 393232, 65536, 2, 458768, 0, 0, 524304, 196608, 2, 589840, 196608, 2, 655376, 196608, 2, 720912, 196608, 2, 786448, 196608, 2, 1179664, 393216, 5, 1245200, 393216, 5, 1310736, 393216, 5, 1376272, 393216, 5, 1441808, 393216, 5, 1507344, 393216, 5, 17, 393216, 5, 65553, 393216, 5, 131089, 393216, 5, 196625, 65536, 7, 262161, 0, 6, 327697, 393216, 5, 393233, 65536, 2, 458769, 65536, 3, 524305, 65536, 0, 589841, 65536, 0, 655377, 65536, 0, 786449, 0, 2, 1179665, 393216, 5, 1245201, 393216, 5, 1310737, 393216, 5, 1376273, 393216, 5, 1441809, 393216, 5, 1507345, 393216, 5, 18, 393216, 5, 65554, 393216, 5, 131090, 393216, 5, 196626, 0, 4, 262162, 196608, 7, 327698, 196608, 1, 393234, 0, 1, 458770, 65536, 1, 524306, 393216, 5, 589842, 393216, 5, 655378, 393216, 5, 786450, 196608, 3, 851986, 196608, 0, 917522, 393216, 5, 983058, 393216, 5, 1179666, 393216, 5, 1245202, 393216, 5, 1441810, 393216, 5, 1507346, 393216, 5, 19, 393216, 5, 65555, 393216, 5, 131091, 393216, 5, 196627, 393216, 5, 262163, 393216, 5, 327699, 65536, 2, 393235, 196608, 0, 458771, 393216, 5, 524307, 393216, 5, 589843, 393216, 5, 786451, 65536, 3, 851987, 65536, 1, 917523, 393216, 5, 983059, 393216, 5, 1179667, 393216, 5, 1245203, 196608, 1, 1441811, 393216, 5, 1507347, 393216, 5, 20, 393216, 5, 65556, 393216, 5, 131092, 393216, 5, 196628, 393216, 5, 262164, 393216, 5, 327700, 65536, 2, 393236, 196608, 0, 458772, 393216, 5, 524308, 393216, 5, 589844, 393216, 5, 786452, 65536, 1, 851988, 393216, 5, 917524, 393216, 5, 983060, 393216, 5, 1310740, 262144, 3, 1441812, 393216, 5, 1507348, 393216, 5, 21, 393216, 5, 65557, 393216, 5, 131093, 393216, 5, 458773, 393216, 5, 524309, 393216, 5, 589845, 393216, 5, 786453, 393216, 5, 851989, 393216, 5, 917525, 393216, 5, 983061, 393216, 5, 1179669, 196608, 3, 1441813, 393216, 5, 1507349, 393216, 5, 22, 393216, 5, 65558, 393216, 5, 131094, 393216, 5, 196630, 393216, 5, 262166, 393216, 5, 458774, 393216, 5, 524310, 393216, 5, 589846, 393216, 5, 786454, 393216, 5, 851990, 393216, 5, 917526, 393216, 5, 983062, 393216, 5, 1310742, 393216, 5, 1376278, 393216, 5, 1441814, 393216, 5, 1507350, 393216, 5, 23, 393216, 5, 65559, 65536, 7, 131095, 65536, 4, 196631, 65536, 4, 262167, 0, 6, 458775, 393216, 5, 524311, 393216, 5, 589847, 393216, 5, 786455, 393216, 5, 851991, 393216, 5, 917527, 393216, 5, 1245207, 393216, 5, 1310743, 393216, 5, 1376279, 393216, 5, 1441815, 393216, 5, 1507351, 393216, 5, 65560, 196608, 4, 131096, 196608, 5, 196632, 131072, 4, 262168, 65536, 6, 458776, 393216, 5, 524312, 393216, 5, 589848, 393216, 5, 786456, 393216, 5, 851992, 393216, 5, 917528, 393216, 5, 1245208, 393216, 5, 1310744, 393216, 5, 1376280, 393216, 5, 1441816, 393216, 5, 1507352, 393216, 5, 65561, 196608, 4, 131097, 65536, 6, 196633, 196608, 4, 262169, 65536, 6, 458777, 393216, 5, 524313, 393216, 5, 589849, 393216, 5, 786457, 393216, 5, 851993, 393216, 5, 917529, 393216, 5, 1310745, 393216, 5, 1376281, 393216, 5, 1441817, 393216, 5, 1507353, 393216, 5, 65562, 196608, 4, 131098, 65536, 6, 196634, 196608, 4, 262170, 65536, 6, 458778, 393216, 5, 524314, 393216, 5, 589850, 393216, 5, 786458, 393216, 5, 851994, 393216, 5, 917530, 393216, 5, 1310746, 393216, 5, 1376282, 393216, 5, 1441818, 393216, 5, 1507354, 393216, 5, 65563, 196608, 4, 131099, 131072, 6, 196635, 65536, 5, 262171, 65536, 6, 524315, 196608, 2, 786459, 393216, 5, 851995, 393216, 5, 917531, 393216, 5, 983067, 393216, 5, 1310747, 393216, 5, 1376283, 393216, 5, 1441819, 393216, 5, 1507355, 393216, 5, 65564, 196608, 4, 131100, 131072, 9, 196636, 196608, 5, 262172, 196608, 7, 327708, 65536, 2, 393244, 262144, 3, 458780, 65536, 3, 524316, 65536, 0, 589852, 0, 2, 655388, 65536, 3, 720924, 65536, 1, 786460, 393216, 5, 851996, 393216, 5, 917532, 393216, 5, 983068, 196608, 1, 1310748, 393216, 5, 1376284, 393216, 5, 1441820, 393216, 5, 1507356, 393216, 5, 65565, 0, 4, 131101, 196608, 6, 196637, 196608, 7, 262173, 393216, 5, 327709, 131072, 2, 393245, 65536, 0, 458781, 65536, 1, 524317, 393216, 5, 589853, 65536, 2, 655389, 0, 0, 720925, 131072, 0, 786461, 393216, 5, 851997, 393216, 5, 917533, 393216, 5, 1310749, 393216, 5, 1376285, 393216, 5, 1441821, 393216, 5, 1507357, 393216, 5, 327710, 393216, 5, 393246, 393216, 5, 458782, 196608, 1, 524318, 196608, 2, 589854, 196608, 3, 655390, 262144, 3, 720926, 196608, 0, 786462, 393216, 5, 851998, 393216, 5, 917534, 393216, 5, 1310750, 393216, 5, 1376286, 393216, 5, 1441822, 393216, 5, 1507358, 393216, 5, 327711, 393216, 5, 393247, 196608, 1, 458783, 196608, 3, 524319, 65536, 3, 589855, 65536, 0, 655391, 0, 2, 720927, 0, 0, 1245215, 393216, 5, 1376287, 393216, 5, 1441823, 393216, 5, 1507359, 393216, 5, 327712, 393216, 5, 524320, 65536, 1, 589856, 393216, 5, 655392, 131072, 2, 852000, 262144, 3, 1376288, 393216, 5, 1441824, 393216, 5, 1507360, 393216, 5, 1114145, 262144, 3, 1245216, 393216, 5, 1245217, 393216, 5, 1310752, 393216, 5, 1310753, 393216, 5, 1376289, 393216, 5, 1507361, 393216, 5, 983074, 393216, 5, 1048610, 131072, 2, 1245218, 393216, 5, 1310754, 393216, 5, 1376290, 393216, 5, 1441826, 393216, 5, 1507362, 393216, 5, 983075, 393216, 5, 1048611, 393216, 5, 1114147, 393216, 5, 1179683, 458752, 5, 1507363, 393216, 4, 983076, 393216, 5, 1048612, 393216, 5, 1245220, 0, 11, 1376293, 131072, 9, 1310758, 131072, 9, 1441832, 327680, 5, 1507368, 393216, 5, 720896, 65536, 4, 720897, 196608, 5, 786432, 65536, 4, 786433, 196608, 6, 851968, 65536, 4, 851969, 196608, 6, 917504, 65536, 4, 917505, 196608, 6, 983040, 65536, 4, 983041, 131072, 4, 1048576, 65536, 4, 1048577, 196608, 5, 1114112, 65536, 4, 1114113, 131072, 4, 1179648, 0, 6, 1179649, 65536, 6, 1245184, 393216, 5, 1245185, 393216, 5, 1310720, 393216, 5, 1310721, 393216, 5, 1376256, 393216, 5, 1376257, 393216, 5, 1441792, 393216, 5, 1441793, 393216, 5, 1507328, 393216, 5, 1507329, 393216, 5, 720898, 65536, 6, 851970, 131072, 0, 917506, 393216, 5, 983042, 196608, 4, 1048578, 65536, 6, 1114114, 196608, 4, 1179650, 131072, 6, 1245186, 0, 6, 1310722, 393216, 5, 1376258, 393216, 5, 1441794, 393216, 5, 1507330, 393216, 5, 720899, 65536, 6, 786435, 65536, 2, 851971, 196608, 0, 917507, 393216, 5, 983043, 196608, 4, 1048579, 65536, 6, 1114115, 0, 4, 1179651, 196608, 6, 1245187, 196608, 7, 1310723, 393216, 5, 1376259, 393216, 5, 1441795, 393216, 5, 1507331, 393216, 5, 720900, 65536, 6, 786436, 65536, 2, 851972, 196608, 0, 917508, 393216, 5, 983044, 196608, 4, 1048580, 65536, 6, 1114116, 393216, 5, 1179652, 393216, 5, 1245188, 65536, 7, 1310724, 0, 6, 1376260, 393216, 5, 1441796, 393216, 5, 1507332, 393216, 5, 720901, 65536, 6, 786437, 65536, 2, 851973, 196608, 0, 917509, 393216, 5, 983045, 0, 4, 1048581, 0, 5, 1114117, 65536, 4, 1179653, 65536, 4, 1245189, 131072, 7, 1310725, 196608, 7, 1376261, 393216, 5, 1441797, 393216, 5, 1507333, 393216, 5, 720902, 196608, 7, 786438, 65536, 2, 851974, 196608, 0, 917510, 65536, 7, 983046, 65536, 4, 1048582, 65536, 5, 1114118, 196608, 5, 1179654, 196608, 6, 1245190, 196608, 7, 1310726, 393216, 5, 1376262, 393216, 5, 1441798, 393216, 5, 1507334, 393216, 5, 720903, 393216, 5, 786439, 65536, 2, 851975, 196608, 0, 917511, 0, 4, 983047, 196608, 6, 1048583, 196608, 6, 1114119, 196608, 7, 1179655, 393216, 5, 1245191, 393216, 5, 1310727, 393216, 5, 1376263, 393216, 5, 1441799, 393216, 5, 1507335, 393216, 5, 720904, 393216, 5, 786440, 65536, 2, 851976, 0, 0, 917512, 131072, 0, 983048, 393216, 5, 1048584, 393216, 5, 1114120, 393216, 5, 1179656, 393216, 5, 1245192, 393216, 5, 1310728, 393216, 5, 1376264, 393216, 5, 1441800, 393216, 5, 1507336, 393216, 5, 720905, 393216, 5, 786441, 65536, 2, 851977, 262144, 3, 917513, 0, 0, 983049, 196608, 2, 1048585, 196608, 2, 1114121, 196608, 2, 1179657, 196608, 2, 1245193, 131072, 0, 1310729, 393216, 5, 1376265, 393216, 5, 1441801, 393216, 5, 1507337, 393216, 5, 720906, 196608, 2, 786442, 196608, 3, 851978, 65536, 3, 917514, 65536, 0, 983050, 65536, 0, 1048586, 0, 2, 1114122, 65536, 3, 1179658, 65536, 0, 1245194, 65536, 1, 1310730, 393216, 5, 1376266, 393216, 5, 1441802, 393216, 5, 1507338, 393216, 5, 720907, 65536, 0, 786443, 65536, 0, 851979, 65536, 1, 917515, 393216, 5, 983051, 393216, 5, 1048587, 65536, 2, 1114123, 196608, 0, 1179659, 393216, 5, 1245195, 393216, 5, 1310731, 393216, 5, 1376267, 393216, 5, 1441803, 393216, 5, 1507339, 393216, 5, 720908, 131072, 0, 786444, 393216, 5, 851980, 65536, 7, 917516, 65536, 4, 983052, 0, 6, 1179660, 393216, 5, 1245196, 393216, 5, 1310732, 393216, 5, 1376268, 393216, 5, 1441804, 393216, 5, 1507340, 393216, 5, -65514, 131072, 1, -65513, 131072, 1, -65515, 131072, 1, -65516, 131072, 1, -65517, 131072, 1, -65518, 131072, 1, -65519, 131072, 1, -65520, 131072, 1, -65521, 131072, 1, -65522, 131072, 1, -65523, 131072, 1, -65524, 131072, 1, -65525, 131072, 1, -65526, 131072, 1, -65527, 131072, 1, -65528, 131072, 1, -65529, 131072, 1, -65530, 131072, 1, -65531, 131072, 1, -65532, 131072, 1, -65533, 131072, 1, -65534, 131072, 1, -65535, 131072, 1, -65536, 131072, 1, 1572864, 131072, 1, 1572865, 131072, 1, 1572866, 131072, 1, 1572867, 131072, 1, 1572868, 131072, 1, 1572869, 131072, 1, 1572870, 131072, 1, 1572871, 131072, 1, 1572872, 131072, 1, 1572873, 131072, 1, 1572874, 131072, 1, 1572875, 131072, 1, 1572876, 131072, 1, 1572884, 131072, 1, 1572885, 131072, 1, 1572886, 131072, 1, 1572887, 131072, 1, 1572888, 131072, 1, 1572883, 131072, 1, 1572882, 131072, 1, 1572881, 131072, 1, 1572880, 131072, 1, 1572879, 131072, 1, 1572878, 131072, 1, 1572877, 131072, 1, 1572889, 131072, 1, 1572890, 131072, 1, 1572891, 131072, 1, 1572892, 131072, 1, 1572893, 131072, 1, 1572894, 131072, 1, 1572895, 131072, 1, 1572896, 131072, 1, 1572897, 131072, 1, 1572898, 131072, 1, 1572899, 131072, 1, 1572900, 131072, 1, 1572901, 131072, 1, 1572902, 131072, 1, 1572903, 131072, 1, 1572904, 131072, 1, 983077, 393216, 5, 1572863, 131072, 1, 1638399, 131072, 1, 1507327, 131072, 1, 1441791, 131072, 1, 1376255, 131072, 1, 1310719, 131072, 1, 1245183, 131072, 1, 1179647, 131072, 1, 1114111, 131072, 1, 1048575, 131072, 1, 983039, 131072, 1, 917503, 131072, 1, 851967, 131072, 1, 786431, 131072, 1, 720895, 131072, 1, 655359, 131072, 1, 589823, 131072, 1, 524287, 131072, 1, 458751, 131072, 1, 393215, 131072, 1, 327679, 131072, 1, 262143, 131072, 1, 196607, 131072, 1, 131071, 131072, 1, 65535, 131072, 1, -1, 131072, 1, 1310761, 131072, 1, 1376297, 131072, 1, 1245225, 131072, 1, 1179689, 131072, 1, 983080, 393216, 5, 983081, 131072, 1, 983079, 393216, 5, 983078, 393216, 5, -65512, 131072, 1, 24, 393216, 5, -65511, 131072, 1, 25, 393216, 5, -65510, 131072, 1, 26, 393216, 5, -65509, 131072, 1, 27, 393216, 5, -65508, 131072, 1, 28, 393216, 5, -65507, 131072, 1, 29, 393216, 5, -65506, 131072, 1, 30, 393216, 5, -65505, 131072, 1, 31, 393216, 5, -65504, 131072, 1, 32, 393216, 5, 1507369, 131072, 1, 1572905, 131072, 1, 1441833, 131072, 1, 1114153, 131072, 1, 1048616, 393216, 6, 1048617, 131072, 1, 1048605, 262144, 3, 1245206, 65536, 1, 655385, 65536, 2, 720921, 196608, 0, 655384, 65536, 2, 720920, 196608, 0, 655382, 65536, 2, 720918, 196608, 0, 720914, 196608, 1, 655379, 196608, 1, 655380, 65536, 2, 983063, 196608, 1, 393248, 131072, 2, 458784, 65536, 0, 196629, 393216, 5, 262165, 393216, 5, 327701, 65536, 2, 393237, 196608, 0, 327702, 65536, 2, 393238, 196608, 0, 327703, 65536, 2, 393239, 196608, 0, 327704, 65536, 2, 327705, 65536, 2, 393240, 196608, 0, 458779, 196608, 2, 393241, 196608, 0, 393242, 196608, 0, 393243, 0, 0, 327706, 65536, 2, 327707, 65536, 2, 262174, 393216, 5, 262175, 393216, 5, 262176, 393216, 5, 65566, 393216, 5, 131102, 393216, 5, 196638, 393216, 5, 65568, 393216, 5, 131104, 393216, 5, 65567, 393216, 5, 131103, 393216, 5, 196639, 393216, 5, 196640, 393216, 5, 786434, 196608, 1, 720928, 65536, 0, 917536, 0, 0, 786463, 196608, 2, 851999, 196608, 2, 786464, 0, 2, 262177, 458752, 5, 327713, 458752, 6, 393249, 393216, 4, 458785, 393216, 5, 524321, 393216, 5, 589857, 393216, 5, 655393, 393216, 5, 720929, 393216, 5, 786465, 131072, 2, 852001, 65536, 0, 917537, 65536, 0, 262178, 458752, 7, 327714, 327680, 7, 393250, 327680, 5, 458786, 393216, 5, 524322, 393216, 5, 589858, 393216, 5, 655394, 393216, 5, 720930, 458752, 5, 786466, 393216, 4, 852002, 393216, 5, 917538, 393216, 5, 262179, 327680, 7, 327715, 327680, 5, 393251, 393216, 5, 458787, 393216, 5, 524323, 458752, 5, 589859, 393216, 4, 655395, 393216, 5, 720931, 393216, 6, 852003, 393216, 5, 917539, 393216, 5, 262180, 327680, 5, 327716, 393216, 5, 393252, 393216, 5, 458788, 458752, 5, 524324, 458752, 7, 589860, 262144, 4, 655396, 393216, 4, 720932, 393216, 5, 786468, 393216, 5, 852004, 393216, 5, 917540, 393216, 5, 65572, 0, 11, 65573, 0, 11, 131108, 458752, 4, 131109, 262144, 4, 196644, 393216, 6, 196645, 393216, 4, 262181, 393216, 5, 327717, 393216, 5, 393253, 458752, 5, 524325, 327680, 7, 589861, 327680, 4, 720933, 393216, 5, 786469, 393216, 5, 65574, 327680, 4, 131110, 262144, 6, 196646, 262144, 4, 262182, 458752, 6, 327718, 458752, 6, 65575, 393216, 5, 131111, 393216, 6, 196647, 327680, 4, 262183, 327680, 4, 327719, 327680, 4, 393255, 327680, 4, 65576, 393216, 5, 131112, 393216, 5, 196648, 393216, 5, 262184, 393216, 5, 327720, 393216, 5, 393256, 393216, 5, 65577, 131072, 1, 131113, 131072, 1, 196649, 131072, 1, 262185, 131072, 1, 327721, 131072, 1, 393257, 131072, 1, 458792, 393216, 5, 458793, 131072, 1, 852005, 393216, 5, 917541, 393216, 5, 786472, 393216, 5, 786473, 131072, 1, 852008, 393216, 5, 852009, 131072, 1, 720936, 393216, 5, 720937, 131072, 1, 655400, 393216, 5, 655401, 131072, 1, 589864, 393216, 5, 589865, 131072, 1, 524328, 393216, 5, 524329, 131072, 1, 917544, 393216, 5, 917545, 131072, 1, 917543, 393216, 5, 852007, 393216, 5, 786471, 393216, 5, 720935, 393216, 5, 655399, 393216, 5, 589863, 393216, 5, 524327, 327680, 5, 458791, 327680, 4, 458790, 0, 11, 852006, 393216, 5, 524326, 458752, 4, 589862, 393216, 5, 655398, 393216, 5, 720934, 393216, 5, 786470, 393216, 5, -65503, 131072, 1, 33, 393216, 5, -65502, 131072, 1, 34, 393216, 5, -65501, 131072, 1, 35, 458752, 5, -65500, 131072, 1, 36, 327680, 6, -65499, 131072, 1, 37, 327680, 6, -65498, 131072, 1, 38, 393216, 6, -65497, 131072, 1, 39, 393216, 5, -65496, 131072, 1, 40, 393216, 5, -65495, 131072, 1, 41, 131072, 1, 65570, 327680, 6, 65571, 458752, 7, 131106, 0, 11, 131107, 327680, 7, 65569, 458752, 5, 131105, 458752, 6, 196641, 393216, 4, 196642, 262144, 4, 196643, 262144, 6, 589851, 196608, 2, 655386, 65536, 2, 720922, 196608, 0, 655387, 196608, 3, 720923, 196608, 0, 786467, 327680, 5, 655397, 327680, 5, 917542, 393216, 5, 983053, 65536, 6, 983054, 196608, 7, 458789, 458752, 7, 393254, 458752, 7, 1245222, 131072, 9, 1114151, 0, 11, 1114150, 0, 11, 1048597, 65536, 2, 1114133, 0, 0, 1048598, 131072, 2, 1245205, 65536, 3, 1310741, 65536, 0, 1245204, 196608, 3, 1310739, 196608, 3, 1376275, 196608, 0, 1114134, 0, 2, 1179670, 65536, 3, 1179681, 196608, 0, 1114146, 65536, 0, 1048608, 262144, 0, 983070, 65536, 2, 983071, 65536, 2, 1179676, 65536, 2, 1179674, 0, 2, 1114138, 65536, 3, 1048602, 0, 2, 983065, 65536, 2, 1048601, 0, 0, 983064, 65536, 2, 1048599, 196608, 2, 1048600, 65536, 3, 1114137, 196608, 3, 1179673, 0, 0, 1114136, 0, 2, 1179672, 196608, 0, 1114135, 196608, 3, 1179671, 196608, 0, 917535, 131072, 0, 1114142, 262144, 2, 1114144, 458752, 3, 1048606, 327680, 3, 1310757, 65536, 9, 1179680, 196608, 0, 1179677, 196608, 3, 1179678, 65536, 3, 1245212, 196608, 0, 1245209, 131072, 0, 1245214, 65536, 1, 983066, 131072, 2, 1245210, 196608, 0, 655381, 65536, 2, 720917, 196608, 0, 655383, 65536, 2, 720919, 196608, 0, 1114140, 196608, 0, 983072, 196608, 3, 983073, 65536, 0, 1048604, 196608, 3, 1114141, 0, 0, 1048607, 458752, 0, 1114143, 327680, 2, 1048609, 0, 2, 1310751, 393216, 5, 1441825, 393216, 5, 1179682, 65536, 1, 1179679, 196608, 0, 1048603, 65536, 2, 1114139, 196608, 0, 1179675, 65536, 2, 1245211, 196608, 0, 983069, 65536, 2, 1245213, 196608, 0, 1310738, 196608, 1, 1376274, 131072, 0, 1376277, 65536, 1, 720913, 65536, 0, 720915, 196608, 3, 720916, 65536, 3, 1179668, 196608, 1, 1376276, 196608, 0, 1048596, 65536, 2, 1114132, 196608, 0, 1048595, 65536, 2, 1114131, 196608, 0, 1048594, 65536, 2, 1114130, 196608, 0, 1114129, 196608, 0, 1114128, 196608, 0, 1048591, 65536, 2, 1114127, 196608, 0, 1048590, 65536, 2, 1114126, 196608, 0, 1048589, 65536, 2, 1114125, 196608, 0, 1048588, 65536, 2, 1114124, 196608, 0, 1048592, 196608, 3, 1048593, 0, 2, 983056, 196608, 2, 983057, 65536, 0, 851984, 196608, 2, 917520, 196608, 2, 851985, 65536, 3, 917521, 65536, 0, 1441828, 0, 10, 1507367, 327680, 5, 1114148, 458752, 5, 1048613, 458752, 5, 1245221, 65536, 8, 1310756, 65536, 11, 1376292, 65536, 8, 1376291, 458752, 6, 1310755, 458752, 6, 1245219, 458752, 6, 1179684, 458752, 7, 1441829, 65536, 10, 1507365, 458752, 4, 1441830, 196608, 11, 1179685, 65536, 11, 1179686, 196608, 8, 1245223, 196608, 10, 1245224, 327680, 4, 1310759, 196608, 10, 1310760, 327680, 4, 1376294, 196608, 9, 1376295, 196608, 11, 1179687, 0, 8, 1507366, 458752, 4, 1441827, 458752, 6, 1507364, 458752, 4, 1441831, 327680, 7, 1376296, 327680, 4, 1048615, 327680, 6, 1114149, 458752, 7, 1048614, 327680, 6, 1179688, 327680, 4, 1114152, 327680, 4)
[node name="Cursor" type="AnimatedSprite2D" parent="." node_paths=PackedStringArray("dual_grid_tilemap")]
visible = false
sprite_frames = SubResource("SpriteFrames_v82uo")
frame_progress = 0.0325107
script = ExtResource("5_00xh7")
dual_grid_tilemap = NodePath("../WorldTileMap")
[node name="Camera2D" type="Camera2D" parent="."]
limit_left = 0
limit_top = 0
limit_right = 640
limit_bottom = 360
================================================
FILE: scripts/cursor.gd
================================================
extends Node2D
enum TileType { None, Grass, Dirt, Water, Sand }
@export var dual_grid_tilemap: TileMap
@onready var cursor = $"."
func _ready():
cursor.visible = true
func _process(_delta: float) -> void:
var coords: Vector2i = dual_grid_tilemap.local_to_map(position)
if Input.is_action_pressed("left_click"):
dual_grid_tilemap.set_tile(coords, dual_grid_tilemap.terrain_atlas_coords[TileType.Dirt][0])
elif Input.is_action_pressed("right_click"):
dual_grid_tilemap.set_tile(coords, dual_grid_tilemap.terrain_atlas_coords[TileType.Grass][0])
func _physics_process(_delta: float) -> void:
var world_pos = get_world_pos_tile(get_global_mouse_position())
global_position = world_pos + Vector2i(8, 8)
func get_world_pos_tile(world_pos: Vector2) -> Vector2i:
var x_int: int = int(floor(world_pos.x / 16) * 16)
var y_int: int = int(floor(world_pos.y / 16) * 16)
return Vector2i(x_int, y_int)
================================================
FILE: scripts/tilemap.gd
================================================
@tool
extends TileMap
const NEIGHBOURS = [Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)]
enum TileType { None, Grass, Dirt, Water, Sand }
@export var offset_tilemap: TileMap
@export var atlas_source_id: int = 0
@export var terrain_atlas_coords: Dictionary = {
TileType.Grass: [Vector2i(2, 1), Vector2i(0, 7), Vector2i(6, 5)],
TileType.Dirt: [Vector2i(0, 3), Vector2i(4, 3)],
TileType.Water: [Vector2i(6, 1), Vector2i(2, 5), Vector2i(2, 9)],
TileType.Sand: [Vector2i(4, 7), Vector2i(0, 11)]
}
var neighbours_to_atlas_coord := {
# First terrain combination: grass and dirt
[TileType.Dirt, TileType.Dirt, TileType.Grass, TileType.Dirt]: Vector2i(0, 0),
[TileType.Dirt, TileType.Grass, TileType.Dirt, TileType.Grass]: Vector2i(1, 0),
[TileType.Grass, TileType.Dirt, TileType.Grass, TileType.Grass]: Vector2i(2, 0),
[TileType.Dirt, TileType.Dirt, TileType.Grass, TileType.Grass]: Vector2i(3, 0),
[TileType.Grass, TileType.Dirt, TileType.Dirt, TileType.Grass]: Vector2i(0, 1),
[TileType.Dirt, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(1, 1),
[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(2, 1),
[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Dirt]: Vector2i(3, 1),
[TileType.Dirt, TileType.Grass, TileType.Dirt, TileType.Dirt]: Vector2i(0, 2),
[TileType.Grass, TileType.Grass, TileType.Dirt, TileType.Dirt]: Vector2i(1, 2),
[TileType.Grass, TileType.Grass, TileType.Dirt, TileType.Grass]: Vector2i(2, 2),
[TileType.Grass, TileType.Dirt, TileType.Grass, TileType.Dirt]: Vector2i(3, 2),
[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(0, 3),
[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Grass]: Vector2i(1, 3),
[TileType.Dirt, TileType.Grass, TileType.Grass, TileType.Dirt]: Vector2i(2, 3),
[TileType.Grass, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(3, 3),
# Second terrain combination: water and dirt
[TileType.Dirt, TileType.Dirt, TileType.Water, TileType.Dirt]: Vector2i(4, 0),
[TileType.Dirt, TileType.Water, TileType.Dirt, TileType.Water]: Vector2i(5, 0),
[TileType.Water, TileType.Dirt, TileType.Water, TileType.Water]: Vector2i(6, 0),
[TileType.Dirt, TileType.Dirt, TileType.Water, TileType.Water]: Vector2i(7, 0),
[TileType.Water, TileType.Dirt, TileType.Dirt, TileType.Water]: Vector2i(4, 1),
[TileType.Dirt, TileType.Water, TileType.Water, TileType.Water]: Vector2i(5, 1),
[TileType.Water, TileType.Water, TileType.Water, TileType.Water]: Vector2i(6, 1),
[TileType.Water, TileType.Water, TileType.Water, TileType.Dirt]: Vector2i(7, 1),
[TileType.Dirt, TileType.Water, TileType.Dirt, TileType.Dirt]: Vector2i(4, 2),
[TileType.Water, TileType.Water, TileType.Dirt, TileType.Dirt]: Vector2i(5, 2),
[TileType.Water, TileType.Water, TileType.Dirt, TileType.Water]: Vector2i(6, 2),
[TileType.Water, TileType.Dirt, TileType.Water, TileType.Dirt]: Vector2i(7, 2),
[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(4, 3),
[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Water]: Vector2i(5, 3),
[TileType.Dirt, TileType.Water, TileType.Water, TileType.Dirt]: Vector2i(6, 3),
[TileType.Water, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(7, 3),
# Third terrain combination: water and grass
[TileType.Grass, TileType.Grass, TileType.Water, TileType.Grass]: Vector2i(0, 4),
[TileType.Grass, TileType.Water, TileType.Grass, TileType.Water]: Vector2i(1, 4),
[TileType.Water, TileType.Grass, TileType.Water, TileType.Water]: Vector2i(2, 4),
[TileType.Grass, TileType.Grass, TileType.Water, TileType.Water]: Vector2i(3, 4),
[TileType.Water, TileType.Grass, TileType.Grass, TileType.Water]: Vector2i(0, 5),
[TileType.Grass, TileType.Water, TileType.Water, TileType.Water]: Vector2i(1, 5),
[TileType.Water, TileType.Water, TileType.Water, TileType.Water]: Vector2i(2, 5),
[TileType.Water, TileType.Water, TileType.Water, TileType.Grass]: Vector2i(3, 5),
[TileType.Grass, TileType.Water, TileType.Grass, TileType.Grass]: Vector2i(0, 6),
[TileType.Water, TileType.Water, TileType.Grass, TileType.Grass]: Vector2i(1, 6),
[TileType.Water, TileType.Water, TileType.Grass, TileType.Water]: Vector2i(2, 6),
[TileType.Water, TileType.Grass, TileType.Water, TileType.Grass]: Vector2i(3, 6),
[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(0, 7),
[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water]: Vector2i(1, 7),
[TileType.Grass, TileType.Water, TileType.Water, TileType.Grass]: Vector2i(2, 7),
[TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(3, 7),
# Fourth terrain combination: grass and sand
[TileType.Sand, TileType.Sand, TileType.Grass, TileType.Sand]: Vector2i(4, 4),
[TileType.Sand, TileType.Grass, TileType.Sand, TileType.Grass]: Vector2i(5, 4),
[TileType.Grass, TileType.Sand, TileType.Grass, TileType.Grass]: Vector2i(6, 4),
[TileType.Sand, TileType.Sand, TileType.Grass, TileType.Grass]: Vector2i(7, 4),
[TileType.Grass, TileType.Sand, TileType.Sand, TileType.Grass]: Vector2i(4, 5),
[TileType.Sand, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(5, 5),
[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(6, 5),
[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Sand]: Vector2i(7, 5),
[TileType.Sand, TileType.Grass, TileType.Sand, TileType.Sand]: Vector2i(4, 6),
[TileType.Grass, TileType.Grass, TileType.Sand, TileType.Sand]: Vector2i(5, 6),
[TileType.Grass, TileType.Grass, TileType.Sand, TileType.Grass]: Vector2i(6, 6),
[TileType.Grass, TileType.Sand, TileType.Grass, TileType.Sand]: Vector2i(7, 6),
[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(4, 7),
[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Grass]: Vector2i(5, 7),
[TileType.Sand, TileType.Grass, TileType.Grass, TileType.Sand]: Vector2i(6, 7),
[TileType.Grass, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(7, 7),
# Fifth terrain combination: water and sand
[TileType.Sand, TileType.Sand, TileType.Water, TileType.Sand]: Vector2i(0, 8),
[TileType.Sand, TileType.Water, TileType.Sand, TileType.Water]: Vector2i(1, 8),
[TileType.Water, TileType.Sand, TileType.Water, TileType.Water]: Vector2i(2, 8),
[TileType.Sand, TileType.Sand, TileType.Water, TileType.Water]: Vector2i(3, 8),
[TileType.Water, TileType.Sand, TileType.Sand, TileType.Water]: Vector2i(0, 9),
[TileType.Sand, TileType.Water, TileType.Water, TileType.Water]: Vector2i(1, 9),
[TileType.Water, TileType.Water, TileType.Water, TileType.Water]: Vector2i(2, 9),
[TileType.Water, TileType.Water, TileType.Water, TileType.Sand]: Vector2i(3, 9),
[TileType.Sand, TileType.Water, TileType.Sand, TileType.Sand]: Vector2i(0, 10),
[TileType.Water, TileType.Water, TileType.Sand, TileType.Sand]: Vector2i(1, 10),
[TileType.Water, TileType.Water, TileType.Sand, TileType.Water]: Vector2i(2, 10),
[TileType.Water, TileType.Sand, TileType.Water, TileType.Sand]: Vector2i(3, 10),
[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(0, 11),
[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Water]: Vector2i(1, 11),
[TileType.Sand, TileType.Water, TileType.Water, TileType.Sand]: Vector2i(2, 11),
[TileType.Water, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(3, 11)
}
func _ready() -> void:
#print("Dictionary keys:")
for key in neighbours_to_atlas_coord.keys():
#print(key)
pass
for coord in get_used_cells(0):
#print("Initial tile at ", coord)
set_display_tile(Vector2i(coord))
func _process(_delta):
# Only update in editor mode
if Engine.is_editor_hint():
update_all_tiles()
func update_all_tiles() -> void:
# Go through all the used cells and set their display tiles
for coord in get_used_cells(0):
set_display_tile(Vector2i(coord))
func set_tile(coords: Vector2i, atlas_coords: Vector2i) -> void:
set_cell(0, coords, atlas_source_id, atlas_coords)
set_display_tile(coords) # Update the OffsetTileMap immediately
func set_display_tile(pos: Vector2i) -> void:
for i in range(NEIGHBOURS.size()):
var new_pos = pos + NEIGHBOURS[i]
offset_tilemap.set_cell(0, new_pos, atlas_source_id, calculate_display_tile(new_pos))
func calculate_display_tile(coords: Vector2i) -> Vector2i:
var bottom_right = get_world_tile(coords - NEIGHBOURS[0])
var bottom_left = get_world_tile(coords - NEIGHBOURS[1])
var top_right = get_world_tile(coords - NEIGHBOURS[2])
var top_left = get_world_tile(coords - NEIGHBOURS[3])
var tile_key = [top_left, top_right, bottom_left, bottom_right]
#print("Generated tile key for ", coords, ": ", tile_key)
# Track number of terrain types
var terrain_tiles = {}
for tile in tile_key:
if tile != TileType.None:
terrain_tiles[tile] = true # Use a dictionary to track unique types
# If there are more than 2 unique terrains, return a special value (e.g., -1)
if terrain_tiles.size() > 2:
return Vector2i(-1, -1) # Special value to indicate skipping tile placement
# Existing behavior if 2 or fewer terrains are detected
if tile_key in neighbours_to_atlas_coord:
return neighbours_to_atlas_coord[tile_key]
if bottom_right != TileType.None or bottom_left != TileType.None or top_right != TileType.None or top_left != TileType.None:
if bottom_right == TileType.Grass or bottom_left == TileType.Grass or top_right == TileType.Grass or top_left == TileType.Grass:
#print("Grass border found at ", coords)
return terrain_atlas_coords[TileType.Grass][0] # Return the first coordinate for grass
elif bottom_right == TileType.Dirt or bottom_left == TileType.Dirt or top_right == TileType.Dirt or top_left == TileType.Dirt:
#print("Dirt border found at ", coords)
return terrain_atlas_coords[TileType.Dirt][0] # Return the first coordinate for dirt
elif bottom_right == TileType.Water or bottom_left == TileType.Water or top_right == TileType.Water or top_left == TileType.Water:
#print("Water border found at ", coords)
return terrain_atlas_coords[TileType.Water][0] # Return the first coordinate for water
elif bottom_right == TileType.Sand or bottom_left == TileType.Sand or top_right == TileType.Sand or top_left == TileType.Sand:
#print("Sand border found at ", coords)
return terrain_atlas_coords[TileType.Sand][0] # Return the first coordinate for sand
# If no valid neighbours, return a default tile
#print("Tile key not found in dictionary, defaulting to (0, 0) at ", coords)
return Vector2i(0, 0)
func get_world_tile(coords: Vector2i) -> TileType:
var atlas_coord = get_cell_atlas_coords(0, coords)
# Iterate through the dictionary to find which terrain type the atlas_coord belongs to
for terrain in terrain_atlas_coords.keys():
if atlas_coord in terrain_atlas_coords[terrain]:
return terrain # Return the terrain type if atlas_coord is found in its list
return TileType.None # Return None if no match is found
gitextract_8xtfynom/
├── .github/
│ └── FUNDING.yml
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── assets/
│ ├── SelectionIndicator.png.import
│ └── Tilemap.png.import
├── project.godot
├── scenes/
│ └── world.tscn
└── scripts/
├── cursor.gd
└── tilemap.gd
Condensed preview — 10 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (66K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 23,
"preview": "ko_fi: glitchedinorbit\n"
},
{
"path": "CONTRIBUTING.md",
"chars": 3060,
"preview": "# Contributing to Dual Grid Tilemap System for Godot (GDScript)\n\nThank you for considering contributing to the Dual Grid"
},
{
"path": "LICENSE.md",
"chars": 1071,
"preview": "MIT License\n\nCopyright (c) 2024 GlitchedinOrbit\n\nPermission is hereby granted, free of charge, to any person obtaining a"
},
{
"path": "README.md",
"chars": 1711,
"preview": "## Dual Grid Tilemap System For Godot In GDScript\n\nA converted version of [jess::codes' C# dual grid system repo](https:"
},
{
"path": "assets/SelectionIndicator.png.import",
"chars": 794,
"preview": "[remap]\n\nimporter=\"texture\"\ntype=\"CompressedTexture2D\"\nuid=\"uid://yuxn8elmkepi\"\npath=\"res://.godot/imported/SelectionInd"
},
{
"path": "assets/Tilemap.png.import",
"chars": 762,
"preview": "[remap]\n\nimporter=\"texture\"\ntype=\"CompressedTexture2D\"\nuid=\"uid://bglmjjbb1nivg\"\npath=\"res://.godot/imported/Tilemap.png"
},
{
"path": "project.godot",
"chars": 1504,
"preview": "; Engine configuration file.\n; It's best edited using the editor UI and not directly,\n; since the parameters that go her"
},
{
"path": "scenes/world.tscn",
"chars": 44044,
"preview": "[gd_scene load_steps=12 format=3 uid=\"uid://bj2e3y6dtnn83\"]\n\n[ext_resource type=\"Texture2D\" uid=\"uid://bglmjjbb1nivg\" pa"
},
{
"path": "scripts/cursor.gd",
"chars": 912,
"preview": "extends Node2D\n\nenum TileType { None, Grass, Dirt, Water, Sand }\n\n@export var dual_grid_tilemap: TileMap\n\n@onready var c"
},
{
"path": "scripts/tilemap.gd",
"chars": 10898,
"preview": "@tool\nextends TileMap\n\nconst NEIGHBOURS = [Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)]\n\nenum TileTyp"
}
]
About this extraction
This page contains the full source code of the GlitchedinOrbit/dual-grid-tilemap-system-godot-gdscript GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 10 files (63.3 KB), approximately 32.9k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.