-
Notifications
You must be signed in to change notification settings - Fork 44
feat(spx-gui): add tilemap's layer zIndex property & dispose tilemap load the project #2285
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
PR Review: Tilemap Layer zIndex Property & DisposalChanges Summary:
Issues Found🔧 High Priority Issues
|
Summary of ChangesHello @Overu, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the tilemap system by adding a Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces two main changes: it adds a zIndex
property to tilemap layers for controlling their stacking order, and it ensures that the tilemap
is properly disposed of and reset when a new project is loaded. The changes are well-implemented across the model, tests, and configuration. I have one suggestion to improve the default behavior for zIndex
to make it more intuitive when it's not explicitly provided in the configuration.
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [], z_index }) => | ||
id != null ? { id, name, tileData: tile_data, zIndex: z_index ?? 1 } : [] | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The default value for zIndex
is set to 1
if z_index
is not provided in the configuration. This means that all layers without an explicit z_index
will be assigned the same zIndex
of 1
, which could lead to an ambiguous rendering order.
A more robust approach would be to use the layer's index from the rawLayers
array as the default zIndex
. This would preserve the stacking order of layers as defined in the source file when z_index
is not specified, making the behavior more predictable.
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [], z_index }) => | |
id != null ? { id, name, tileData: tile_data, zIndex: z_index ?? 1 } : [] | |
) | |
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [], z_index }, index) => | |
id != null ? { id, name, tileData: tile_data, zIndex: z_index ?? index } : [] | |
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review Suggestions
Found 2 high-confidence issues that can be improved:
• Fix zIndex default value logic - Use explicit undefined check to preserve 0
values
• Add type annotation - Improve type safety for z_index parameter
These changes will prevent potential layer ordering bugs and improve code maintainability.
const decorators = rawDecorators.flatMap((d) => Decorator.load(d, currentDir, tileTextures) ?? []) | ||
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [] }) => | ||
id != null ? { id, name, tileData: tile_data } : [] | ||
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [], z_index }) => |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix zIndex default value logic and add type annotation. The original code z_index ?? 1
treats 0
as falsy and defaults it to 1
, which could cause unexpected layer ordering. Using explicit undefined check preserves z_index: 0
while defaulting truly missing values to 1
. Also adds proper type annotation for better type safety.
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [], z_index }) => | |
const layers = rawLayers.flatMap(({ id, name = '', tile_data = [], z_index }: { id?: number; name?: string; tile_data?: number[]; z_index?: number }) => | |
id != null ? { id, name, tileData: tile_data, zIndex: z_index !== undefined ? z_index : 1 } : [] |
This PR has been deployed to the preview environment. You can explore it using the preview URL. Warning Please note that deployments in the preview environment are temporary and will be automatically cleaned up after a certain period. Make sure to explore it before it is removed. For any questions, contact the XBuilder team. |
Fixed #2283