Skip to content

Repository files navigation

Run & Conquer - Final Submission

Run & Conquer is a local-first Android app for running-based territory capture. Users can record or import runs, save them as activities, and capture map territory when a route forms a valid closed area.

Quick start

  • Open the project in Android Studio.
  • Sync Gradle.
  • Run the app configuration on an Android 34+ emulator or device.

Main flow to verify

  1. Start on Home.
  2. Tap the red center Activity button.
  3. Record a run or import a GPX file.
  4. Save the completed activity.
  5. Confirm that the run appears in Home and You.
  6. Open Map -> Territory and verify captured areas and route trails.
  7. Open Ranking to compare currently held territory.

Final verification

Run these before the final presentation:

./gradlew testDebugUnitTest
./gradlew assembleDebug
git diff --check

Latest verified locally: 2026-06-29.

Map previews (no API key)

  • Route previews compose real OpenStreetMap raster tiles (tile.openstreetmap.org) and draw the run on top.
  • The preview is static and cached, so the feed keeps the same map feel without embedding a full interactive map.
  • On emulator: map previews need internet access; if tiles are unavailable, a local placeholder is shown.
  • Ensure the emulator has internet access.

Data flow

UI -> ViewModel -> RunConquerRepository -> Local Room (Runs, RoutePoints, TerritoryCells, AttackProgress)

GPX imports and live runs use the same repository path, so Home, You, Map, stats, and ranking read from the same central local state.

Final scope

  • Implemented: GPS tracking, GPX import, local activity storage, feed/profile views.
  • Implemented: closed-loop territory capture, repeated strength, attacks, takeovers.
  • Implemented: territory ranking from all currently held cells.
  • Implemented: territory map with filled areas, route trails, and cached viewport loading.
  • Out of scope for final submission: backend sync, live friend updates, background tracking.

Territory Grid

  • Gebiete werden auf einem Raster (ca. 20 m Zellen) berechnet.
  • Ein geschlossener Lauf markiert alle Zellen innerhalb der Route als dein Gebiet.
  • Jede erneute Umrundung erhoeht die Staerke (bis max. 100).
  • Zellen und Staerke werden lokal in Room gespeichert.
  • Die UI rendert zusammenhaengende Zellen als groessere Flaechen, damit die Map weniger pixelig wirkt.
  • Die gerenderten Flaechen nutzen dieselben Grid-Grenzen wie die Berechnung, damit Route und Fuellung zusammenpassen.

Assignment reports

  • Alpha / Assignment 3: MVP_ASSIGNMENT_REPORT.md
  • Beta / Assignment 4: BETA_ASSIGNMENT_REPORT.md
  • Final / Assignment 5: FINAL_SUBMISSION_REPORT.md
  • Final requirements: FINAL_REQUIREMENTS.md
  • Final test report: FINAL_TEST_REPORT.md
  • Release notes: CHANGELOG.md
  • Live demo checklist: FINAL_DEMO_CHECKLIST.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages