Skip to content

iOS: Android-Design-Parität (Menü, Just Play, Level Complete, Tutorial) - #8

Merged
djschilling merged 13 commits into
masterfrom
feature/ios-android-design-parity
Jul 21, 2026
Merged

iOS: Android-Design-Parität (Menü, Just Play, Level Complete, Tutorial)#8
djschilling merged 13 commits into
masterfrom
feature/ios-android-design-parity

Conversation

@djschilling

@djschilling djschilling commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Ziel

iOS an das aktuelle Android-Design angleichen (Vorlagen: sopa-android/pr/dev-screenshots/).
Alle vorhandenen Screens wurden live im Simulator (iPhone 17 Pro, iOS 26.5, via idb) gegen die
Android-Referenz verglichen und angepasst.

Änderungen pro Screen

Screen Änderung
Hauptmenü Android-Social-Icons (ShareThis + Twitter-Vogel) statt SF-Symbols; irreführender „SETTINGS"-Button → „TUTORIAL" (öffnet real das Tutorial)
Level-Auswahl (bereits Android-konform)
Level-Mode Spiel (bereits Android-konform)
Level Complete Titel „N. Level Complete", Untertitel „Moves for 3 Stars", Play-Dreieck statt Chevron, schwarzer Hintergrund
Just-Play Spiel Schwarzer Hintergrund + Android-HUD (Min. Moves / Current Moves / Left Time als Label + große Zahl); Buttons neu positioniert (keine Label-Überlappung/Notch-Kollision mehr)
Just-Play Highscore Schwarzer Hintergrund, farbige Balken (blau Score / gelb Level), neuer „SHARE SCORE"-Button
Tutorial Komplett neu als visuelle Android-Screens (Original-Artwork importiert): 2-Screen-Ablauf mit Grid + farbigem Text (GREEN/RED/BLUE) → „Lets GO" → interaktives Tutorial-Level
Credits (bereits Android-konform, schwarz/Neon)

Grundlegende Fixes

  • Alle verbliebenen warm-braunen Hintergründe → schwarz (Basis-GameScene, Level Complete, JustPlay Score/Lost, Tutorial).
  • Debug-print in LevelModeGameScene entfernt.
  • Ungenutzte makeSocialButtonTexture entfernt.
  • Neue ButtonTextureFactory.makeCircleTextButtonTexture für den „SHARE SCORE"-Button.

Bewusst zurückgestellt (Absprache)

  • Settings + Audio/Musik werden vorerst nicht gebaut; der Menüpunkt bleibt „TUTORIAL" (kein SETTINGS-Eintrag).
  • Tutorial-Einstiegspunkt bleibt im Menü (Android startet es aus der Level-Auswahl).

Doku

  • ANDROID_DESIGN_PARITY_PLAN.md: vollständige Screen-für-Screen-Gap-Analyse + Status.
  • AGENTS.md: idb-Workflow (Tap/Swipe/Screenshot) zur visuellen Verifikation dokumentiert.
  • CLAUDE.md: Verweis auf AGENTS.md.

Verifikation

  • xcodebuild ... clean build testBUILD SUCCEEDED, 19/19 Tests grün.
  • Jeder geänderte Screen live im Simulator per idb gegengeprüft.

Hinweis: Enthält zwei ältere WIP:-Commits vom Vorstand des Branches — beim Merge ggf. Squash verwenden.

🤖 Generated with Claude Code


Note

Medium Risk
Large UI-only refactor across many scenes and assets; gameplay logic is mostly untouched, but layout regressions on device sizes and share/external URL flows deserve a quick smoke test.

Overview
This PR brings the iOS SpriteKit UI in line with the current Android look: black backgrounds, Impact-style HUD copy, neon menu styling, and updated artwork across the main flows.

Theme & structure: Default GameScene backgrounds move from warm brown to black. Menu, credits, tutorial, and level-select scenes are split out of the monolithic LevelChoiceScene.swift into dedicated files, with shared SopaTheme, ButtonTextureFactory, and LabelSizing helpers wired into the Xcode project.

Screens: Start menu uses neon text buttons (LEVEL MODE / JUST PLAY / TUTORIAL / CREDITS), Android ShareThis and Twitter assets, plus share/open-URL actions. Level choice gets a black background, page arrows, and neon-framed level buttons with improved tap hit-testing. Level mode & Just Play override HUD layout (Min./Current Moves, Left Time, repositioned back/restart). Level complete updates wording and uses a play icon for next level. Just Play game over shows blue/yellow stat bars and a SHARE SCORE button via UIActivityViewController. Tutorial is rebuilt as a two-step Android artwork flow that auto-continues into the interactive tutorial level.

Assets & docs: Tile/border catalog entries point at correct PNGs; tutorial and menu image sets are added. ANDROID_DESIGN_PARITY_PLAN.md and AGENTS.md (idb simulator workflow) document the parity work; CLAUDE.md points at AGENTS.md.

Reviewed by Cursor Bugbot for commit 0a0378f. Bugbot is set up for automated code reviews on this repo. Configure here.

djschilling and others added 12 commits February 25, 2026 21:18
- Remove stray print(difference) in LevelModeGameScene.stopCounter
- Rename misleading "SETTINGS" menu button to "TUTORIAL" (it opens the
  tutorial scene; no settings scene exists on iOS)
- Add CLAUDE.md referencing AGENTS.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ANDROID_DESIGN_PARITY_PLAN.md: per-screen gap analysis (live-captured
  via idb) with prioritized tasks toward Android design parity
- AGENTS.md: idb tap/swipe/screenshot workflow, menu tap coordinates,
  setup notes (Python 3.12), corrected simulator name in build commands

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Switch all remaining warm-brown backgrounds to black to match Android:
  base GameScene, LevelModeScoreScene, TutorialScene, JustPlay score/lost
- JustPlayGameScene: override addStaticLabels/addDynamicLabels for the
  Android HUD layout (Min. Moves / Current Moves / Left Time as label +
  large number) instead of the old inline "Optimum:/Moves:/N. Level"
- Reposition JustPlay game buttons (restart bottom-right, minimal back
  top-left) so they no longer overlap the HUD labels

Verified via idb: Just Play game + game-over and Tutorial now render on
black with the correct HUD; 19 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Backgrounds + Just Play HUD checked off (verified via idb)
- Clarify that the empty space below the game field matches Android
  (FIELD_SART_FROM_TOP=0.2); GameFieldNode intentionally left unchanged
- Note IPadProportionSet is an empty subclass of IPhone6Proportionset

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Level Complete (LevelModeScoreScene):
- Title "N. Level Complete" (was "Level N Complete")
- Subtitle "Moves for 3 Stars" (was "3-star target")
- Next button uses a play triangle (was chevron)

Just Play Game Over (JustPlayLostScene):
- Score/Level shown as colored bars (blue Score, yellow Level) matching
  Android, replacing the plain Score/Reached Level/Highscore text
- Added a "SHARE SCORE" button; buttons now back / restart / share
- New ButtonTextureFactory.makeCircleTextButtonTexture for the text circle

Verified via idb: Just Play game-over matches Android (black, colored
bars, three buttons); 19 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Import Android tutorial artwork (first/second screen A+B halves and
  Let's Go) into Assets.xcassets/tutorial
- Rewrite TutorialScene to show the two visual screens (grid + colored
  GREEN/RED/BLUE instructions), tap to advance, then Let's Go -> the
  interactive tutorial level, matching the Android flow
- Replaces the old text-only pages; runs on black

Verified via idb: both tutorial screens, Let's Go, and the transition
into the interactive level render correctly; 19 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Import Android ShareThis + Twitter bird artwork into Assets.xcassets/menu
- StartMenuScene uses these images instead of SF-symbol textures
  (paper plane -> classic Twitter bird; share glyph now pixel-matches)
- Remove now-unused ButtonTextureFactory.makeSocialButtonTexture

Verified via idb: menu social icons match Android; 19 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ntry deferred per user

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a255e5e. Configure here.

Comment thread SOPA/view/LevelMode/LevelSelectButton.swift
The level-grid redesign draws the button frame as SKShapeNode children,
but LevelButtonArea.tabOn only resolved SKLabelNode/SKSpriteNode hits to
their parent button. Taps landing on the frame stroke stayed on the
SKShapeNode and were ignored. Walk up the parent chain to the enclosing
LevelSelectButton instead, so any child node type resolves correctly.

Reported by Cursor Bugbot on PR #8. Verified via idb: tapping the frame
border now opens the level; 19 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@djschilling
djschilling merged commit 5a93b11 into master Jul 21, 2026
3 checks passed
@djschilling
djschilling deleted the feature/ios-android-design-parity branch July 21, 2026 03:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant