diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 87361b3..58064f3 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -65,6 +65,8 @@ jobs: test: runs-on: macos-latest + if: always() + needs: [lint, format] steps: - uses: actions/checkout@v4 @@ -82,6 +84,7 @@ jobs: build: runs-on: macos-latest if: false # skips job + needs: [lint, format, test] steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 43ee104..f3f16cd 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,81 @@ ![GitHub Pull Requests](https://img.shields.io/github/issues-pr/flixcoo/Cabo-Counter?logo=github) ![GitHub Last Commit](https://img.shields.io/github/last-commit/flixcoo/Cabo-Counter?logo=github) -Mobile app for the card game CABO. +A mobile score tracker for the card game Cabo, helping players effortlessly manage scores and automatically calculate round results. -`// todo` +## 📱 Description +Cabo Counter is an intuitive Flutter-based mobile application designed to enhance your CABO card game experience. It eliminates manual scorekeeping by automatically calculating points per round. + +## ✨ Features + +- 🆕 Create new games with customizable rules +- 👥 Support for 2-5 players +- ⚖️ Two game modes: + - **100 Points Mode** (Standard) + - **Infinite Mode** (Casual play) +- 🔢 Automatic score calculation with: + - Kamikaze rule handling + - Exact 100-point bonus (score halving) +- 📊 Round history tracking + +## 🚀 Getting Started + +### Prerequisites +- Flutter 3.24.5+ +- Dart 3.5.4+ + +### Installation + +```bash +git clone https://github.com/flixcoo/Cabo-Counter.git +cd Cabo-Counter +flutter pub get +flutter run +``` + +## 🎮 Usage + +1. **Start New Game** +- Choose game mode (100 Points or Infinite) +- Add 2-5 players + +2. **Gameplay** +- Track rounds with automatic scoring +- Handle special rules (Kamikaze, exact 100 points) +- View real-time standings + +3. **Round Management** +- Automatic winner detection +- Penalty point calculation +- Game-over detection (100 Points mode) + +## 🃏 Key Rules Overview + +### Scoring System +- Round winner: 0 points +- Other players: Sum of card values +- Failed Cabo call: +5 penalty points +- Kamikaze: 0 points for caller, 50 for others +- Exact 100 points: Score halved + +### Game End +- First player ≥101 points triggers final scoring +- Lowest total score wins + +## 🤝 Contributing + +Contributions are welcome! If you'd like to improve Cabo Counter, please: +- Follow the existing code style and architecture +- Maintain clean, well-documented code +- Keep changes focused and test your work + +Feel free to open issues or submit pull requests! + +## ⚠️ Disclaimer + +This project is not affiliated with or endorsed by Smiling Monster GmbH. CABO is a registered trademark of its respective owners. This app is designed for scorekeeping purposes only and does not include actual game components. + +--- + +> 🚀 Powered by Flutter | Developed with 🩵 diff --git a/assets/cabo-counter-logo_rounded.png b/assets/cabo-counter-logo_rounded.png index e7c440b..68d0a13 100644 Binary files a/assets/cabo-counter-logo_rounded.png and b/assets/cabo-counter-logo_rounded.png differ diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index c268585..804f441 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -476,7 +476,7 @@ DEVELOPMENT_TEAM = RJB4MM6RVS; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "CABO Counter"; + INFOPLIST_KEY_CFBundleDisplayName = "Cabo Counter"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -484,11 +484,16 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.flixco.caboCounterApp; + PRODUCT_BUNDLE_IDENTIFIER = com.flixcoo.caboCounter; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Profile; @@ -668,7 +673,7 @@ DEVELOPMENT_TEAM = RJB4MM6RVS; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "CABO Counter"; + INFOPLIST_KEY_CFBundleDisplayName = "Cabo Counter"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -676,12 +681,17 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.flixco.caboCounterApp; + PRODUCT_BUNDLE_IDENTIFIER = com.flixcoo.caboCounter; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -698,7 +708,7 @@ DEVELOPMENT_TEAM = RJB4MM6RVS; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = "CABO Counter"; + INFOPLIST_KEY_CFBundleDisplayName = "Cabo Counter"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -706,11 +716,16 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.flixco.caboCounterApp; + PRODUCT_BUNDLE_IDENTIFIER = com.flixcoo.caboCounter; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 1.png index e7c440b..68d0a13 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 1.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 2.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 2.png index e7c440b..68d0a13 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 2.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded 2.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded.png index e7c440b..68d0a13 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/cabo-counter-logo_rounded.png differ diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 9db35c3..f992151 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -7,7 +7,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - CABO-Counter + Cabo Counter CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -24,6 +24,12 @@ ???? CFBundleVersion $(FLUTTER_BUILD_NUMBER) + LSApplicationQueriesSchemes + + https + http + instagram + LSRequiresIPhoneOS UIApplicationSupportsIndirectInputEvents @@ -32,14 +38,10 @@ LaunchScreen UIMainStoryboardFile Main + UIStatusBarHidden + UIStatusBarStyle UIStatusBarStyleDarkContent - LSApplicationQueriesSchemes - - https - http - instagram - UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/lib/main.dart b/lib/main.dart index 53d2f11..9580339 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,7 +21,7 @@ class App extends StatelessWidget { ), ), debugShowCheckedModeBanner: false, - title: 'CABO-Counter', + title: 'Cabo Counter', home: const MainMenuView(), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 048a6bf..e09b4e3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: cabo_counter -description: "Mobile app for the card game CABO" +description: "Mobile app for the card game Cabo" publish_to: 'none' version: 0.1.3+63