Code Monkey home page Code Monkey logo

k3ssdev / stacompanion Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 43.23 MB

STA Companion App is a companion application for Android devices for the Star Trek Adventures tabletop RPG. It allows players to manage their characters and starships, perform special dice rolls, and export their character and starship sheets to PDF.

License: MIT License

Java 99.30% Roff 0.70%
android android-app android-studio firebase startrek ttrpg startrek-adventures

stacompanion's Introduction

STA Companion App

A companion app for the Star Trek Adventures tabletop RPG.

license last-commit repo-top-language repo-language-count

Developed with the software and tools below.

Android Java


Quick Links


Overview

STA Companion App is a companion application for Android devices for the Star Trek Adventures tabletop RPG. It allows players to manage their characters and starships, perform special dice rolls, and export their character and starship sheets to PDF.

This project was conceived as the capstone for the CFGS Multiplatform Application Development course. It leverages Firebase for user authentication and data storage, serving as a practical exploration of Google's APIs.

Screenshots Screenshot 1 Screenshot 3 Screenshot 4 Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8 Screenshot 9 Screenshot 10

Features

  • Character Sheets: Manage your character's stats, inventory, and more.
  • Starship Sheets: Keep track of your starship's stats and inventory.
  • Special Star Trek Adventures Dice Rolls: Perform special dice rolls unique to Star Trek Adventures.
  • Export Sheets to PDF: Export your character and starship sheets to PDF for easy sharing and printing.
  • Firebase Authentication: Securely log in to the app using Firebase Authentication.
  • Firebase Realtime Database: Store and retrieve data in real time with Firebase's NoSQL cloud database.
  • Selectable Design: Choose between red, blue, and gold themes to customize the app's appearance.

Repository Structure

Files & folders
.
└── STACompanion
    ├── app
    │   ├── build.gradle.kts
    │   ├── proguard-rules.pro
    │   ├── release
    │   │   ├── app-release.aab
    │   │   ├── app-release.apk
    │   │   └── output-metadata.json
    │   ├── src
    │   │   ├── androidTest
    │   │   │   └── java
    │   │   │       └── io
    │   │   │           └── github
    │   │   │               └── k3ssdev
    │   │   │                   └── stacompanion
    │   │   │                       └── ExampleInstrumentedTest.java
    │   │   ├── google-services.json
    │   │   ├── main
    │   │   │   ├── AndroidManifest.xml
    │   │   │   ├── assets
    │   │   │   │   ├── STA_personaje.pdf
    │   │   │   │   └── Stardate81316-aolE.ttf
    │   │   │   ├── ic_launcher-playstore.png
    │   │   │   ├── java
    │   │   │   │   └── io
    │   │   │   │       └── github
    │   │   │   │           └── k3ssdev
    │   │   │   │               └── stacompanion
    │   │   │   │                   ├── data
    │   │   │   │                   │   ├── CharacterFragmentAdapter.java
    │   │   │   │                   │   ├── CharacterSheet.java
    │   │   │   │                   │   ├── SheetSettings.java
    │   │   │   │                   │   └── Starship.java
    │   │   │   │                   ├── LegalActivity.java
    │   │   │   │                   ├── LoginActivity.java
    │   │   │   │                   ├── MainActivity.java
    │   │   │   │                   ├── ui
    │   │   │   │                   │   ├── characters
    │   │   │   │                   │   │   ├── CharactersFragment.java
    │   │   │   │                   │   │   ├── charactersheet
    │   │   │   │                   │   │   │   ├── CharacterSheetFragment.java
    │   │   │   │                   │   │   │   ├── DataTabFragment.java
    │   │   │   │                   │   │   │   ├── OthersFragment.java
    │   │   │   │                   │   │   │   ├── SkillsFragment.java
    │   │   │   │                   │   │   │   └── StatusFragment.java
    │   │   │   │                   │   │   ├── CharacterSheetEditActivity.java
    │   │   │   │                   │   │   └── CharacterSheetViewModel.java
    │   │   │   │                   │   ├── dice
    │   │   │   │                   │   │   ├── DiceFragment.java
    │   │   │   │                   │   │   ├── DiceResultAdapter.java
    │   │   │   │                   │   │   ├── DiceResult.java
    │   │   │   │                   │   │   ├── DiceViewModel.java
    │   │   │   │                   │   │   └── SpaceItemDecoration.java
    │   │   │   │                   │   └── settings
    │   │   │   │                   │       ├── SettingsFragment.java
    │   │   │   │                   │       └── SettingsViewModel.java
    │   │   │   │                   └── util
    │   │   │   │                       └── PdfUtil.java
    │   │   │   └── res
    │   │   │       ├── anim
    │   │   │       │   └── rotate_animation.xml
    │   │   │       ├── drawable
    │   │   │       │   ├── baseline_add_24.xml
    │   │   │       │   ├── baseline_casino_24.xml
    │   │   │       │   ├── baseline_contact_page_24.xml
    │   │   │       │   ├── baseline_delete_forever_24.xml
    │   │   │       │   ├── baseline_edit_24.xml
    │   │   │       │   ├── baseline_manage_accounts_24.xml
    │   │   │       │   ├── baseline_picture_as_pdf_24.xml
    │   │   │       │   ├── baseline_replay_24.xml
    │   │   │       │   ├── baseline_restart_alt_24.xml
    │   │   │       │   ├── baseline_sort_24.xml
    │   │   │       │   ├── custom_edittext.xml
    │   │   │       │   ├── dice20_01.xml
    │   │   │       │   ├── dice20_02.xml
    │   │   │       │   ├── dice20_03.xml
    │   │   │       │   ├── dice20_04.xml
    │   │   │       │   ├── dice20_05.xml
    │   │   │       │   ├── dice20_06.xml
    │   │   │       │   ├── dice20_07.xml
    │   │   │       │   ├── dice20_08.xml
    │   │   │       │   ├── dice20_09.xml
    │   │   │       │   ├── dice20_10.xml
    │   │   │       │   ├── dice20_11.xml
    │   │   │       │   ├── dice20_12.xml
    │   │   │       │   ├── dice20_13.xml
    │   │   │       │   ├── dice20_14.xml
    │   │   │       │   ├── dice20_15.xml
    │   │   │       │   ├── dice20_16.xml
    │   │   │       │   ├── dice20_17.xml
    │   │   │       │   ├── dice20_18.xml
    │   │   │       │   ├── dice20_19.xml
    │   │   │       │   ├── dice20_20.xml
    │   │   │       │   ├── dice6_fail.xml
    │   │   │       │   ├── dice6_special.xml
    │   │   │       │   ├── dice6_success_double.xml
    │   │   │       │   ├── dice6_success.xml
    │   │   │       │   ├── google_icon.png
    │   │   │       │   ├── ic_baseline_person_24.xml
    │   │   │       │   ├── ic_dashboard_black_24dp.xml
    │   │   │       │   ├── ic_email.xml
    │   │   │       │   ├── ic_google.xml
    │   │   │       │   ├── ic_home_black_24dp.xml
    │   │   │       │   ├── ic_launcher_background.xml
    │   │   │       │   ├── ic_launcher_foreground.xml
    │   │   │       │   ├── ic_notifications_black_24dp.xml
    │   │   │       │   ├── ic_search_black_24dp.xml
    │   │   │       │   ├── lock_76.xml
    │   │   │       │   ├── outline_file_save_24.xml
    │   │   │       │   └── rounded_button.xml
    │   │   │       ├── drawable-night
    │   │   │       │   ├── baseline_add_24.xml
    │   │   │       │   ├── baseline_casino_24.xml
    │   │   │       │   ├── baseline_edit_24.xml
    │   │   │       │   ├── baseline_replay_24.xml
    │   │   │       │   ├── dice20_01.xml
    │   │   │       │   ├── dice20_02.xml
    │   │   │       │   ├── dice20_03.xml
    │   │   │       │   ├── dice20_04.xml
    │   │   │       │   ├── dice20_05.xml
    │   │   │       │   ├── dice20_06.xml
    │   │   │       │   ├── dice20_07.xml
    │   │   │       │   ├── dice20_08.xml
    │   │   │       │   ├── dice20_09.xml
    │   │   │       │   ├── dice20_10.xml
    │   │   │       │   ├── dice20_11.xml
    │   │   │       │   ├── dice20_12.xml
    │   │   │       │   ├── dice20_13.xml
    │   │   │       │   ├── dice20_14.xml
    │   │   │       │   ├── dice20_15.xml
    │   │   │       │   ├── dice20_16.xml
    │   │   │       │   ├── dice20_17.xml
    │   │   │       │   ├── dice20_18.xml
    │   │   │       │   ├── dice20_19.xml
    │   │   │       │   ├── dice20_20.xml
    │   │   │       │   ├── dice6_fail.xml
    │   │   │       │   ├── dice6_special.xml
    │   │   │       │   ├── dice6_success_double.xml
    │   │   │       │   ├── dice6_success.xml
    │   │   │       │   ├── ic_baseline_person_24.xml
    │   │   │       │   ├── ic_email.xml
    │   │   │       │   ├── ic_search_black_24dp.xml
    │   │   │       │   ├── lock_76.xml
    │   │   │       │   └── outline_file_save_24.xml
    │   │   │       ├── layout
    │   │   │       │   ├── activity_character_sheet_edit.xml
    │   │   │       │   ├── activity_legal.xml
    │   │   │       │   ├── activity_login.xml
    │   │   │       │   ├── activity_main.xml
    │   │   │       │   ├── character_sheet_item.xml
    │   │   │       │   ├── dice_result_item.xml
    │   │   │       │   ├── fragment_account.xml
    │   │   │       │   ├── fragment_character_sheet.xml
    │   │   │       │   ├── fragment_character.xml
    │   │   │       │   ├── fragment_dice.xml
    │   │   │       │   ├── fragment_tab_sheet_data.xml
    │   │   │       │   ├── fragment_tab_sheet_others.xml
    │   │   │       │   ├── fragment_tab_sheet_skills.xml
    │   │   │       │   └── fragment_tab_sheet_status.xml
    │   │   │       ├── menu
    │   │   │       │   ├── bottom_nav_menu.xml
    │   │   │       │   ├── character_sheet_toolbar_menu_edit.xml
    │   │   │       │   ├── character_sheet_toolbar_menu.xml
    │   │   │       │   ├── dice_menu.xml
    │   │   │       │   └── toolbar_menu.xml
    │   │   │       ├── mipmap-anydpi-v26
    │   │   │       │   ├── ic_launcher_round.xml
    │   │   │       │   └── ic_launcher.xml
    │   │   │       ├── mipmap-hdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   ├── ic_launcher.webp
    │   │   │       │   ├── stacompanion_blue.png
    │   │   │       │   ├── stacompanion_logo2.png
    │   │   │       │   ├── stacompanion_logo.png
    │   │   │       │   ├── stacompanion_red.png
    │   │   │       │   └── stacompanion_yellow.png
    │   │   │       ├── mipmap-mdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── mipmap-xhdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── mipmap-xxhdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── mipmap-xxxhdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── navigation
    │   │   │       │   └── mobile_navigation.xml
    │   │   │       ├── values
    │   │   │       │   ├── colors.xml
    │   │   │       │   ├── dimens.xml
    │   │   │       │   ├── keys.xml
    │   │   │       │   ├── strings.xml
    │   │   │       │   ├── styles.xml
    │   │   │       │   └── themes.xml
    │   │   │       ├── values-es
    │   │   │       │   └── strings.xml
    │   │   │       ├── values-night
    │   │   │       │   ├── keys.xml
    │   │   │       │   ├── strings.xml
    │   │   │       │   └── themes.xml
    │   │   │       ├── values-v26
    │   │   │       │   ├── strings.xml
    │   │   │       │   └── styles.xml
    │   │   │       └── xml
    │   │   │           ├── backup_rules.xml
    │   │   │           ├── data_extraction_rules.xml
    │   │   │           └── file_paths.xml
    │   │   └── test
    │   │       └── java
    │   │           └── io
    │   │               └── github
    │   │                   └── k3ssdev
    │   │                       └── stacompanion
    │   │                           └── ExampleUnitTest.java
    │   └── stacompanion-a1286-default-rtdb-export.json
    ├── build.gradle.kts
    │   └── wrapper
    │       │          
    │       │           
    │       │           
    │       │          
    │       ├── gradle-wrapper.jar
    │       └── gradle-wrapper.properties
    ├── gradle.properties
    ├── gradlew
    ├── gradlew.bat
    ├── images
    │   ├── stacompanion_blue.png
    │   ├── stacompanion_blue_rounded.png
    │   ├── stacompanion_screenshot_1.jpg
    │   ├── stacompanion_screenshot_2.jpg
    │   └── stacompanion_screenshot_3.jpg
    ├── LICENSE
    ├── local.properties
    ├── README.MD
    ├── settings.gradle.kts
    └── sta_tree.md

Modules

The STA Companion App is organized into several modules:

  • app: This is the main module of the application. It contains all the activities, fragments, view models, and other classes related to the user interface of the app.

  • data: This module contains classes related to data handling in the app, such as data models and data sources.

  • ui: This module contains classes related to the user interface of the app, such as custom views and adapters.

Each module has its own build.gradle.kts file for configuration and dependencies specific to that module.


Getting Started

Requirements
  • Android Studio Hedgehog

  • Android SDK 30

  • Android Build Tools v30.0.3

  • Android Emulator or Android device

  • Android 9.0 (API level 28) or higher

  • Java 8 or higher

  • Kotlin 1.4.32 or higher

  • Firebase Authentication

  • Firebase Realtime Database

  • For PDF generation, you will need to add the STA_personaje.pdf file to the app/src/assets directory. This file is included in the repository.

  • For dice rolling, you will need to add the Stardate81316-aolE.ttf file to the app/src/assets directory. This file is included in the repository.

  • For dice rolling, you will need to add the dice20_01.xml to dice20_20.xml files to the app/src/drawable directory. These files are included in the repository.

  • For dice rolling, you will need to add the dice6_fail.xml, dice6_special.xml, dice6_success.xml, and dice6_success_double.xml files to the app/src/drawable directory. These files are included in the repository.

  • For dice rolling, you will need to add the rotate_animation.xml file to the app/src/anim directory. This file is included in the repository.

  • For Firebase integration, you will need to create a Firebase project and add the google-services.json file to the app/src directory. For more information, see Add Firebase to your Android project.

  • You will need to fill in the keys.xml file located in the app/src/res/values directory with your Firebase server client ID and Firebase database URL. The file should look like this:

<resources>
    <string name="server_client_id">YOUR_SERVER_CLIENT_ID</string>
    <string name="firebase_database_url">YOUR_FIREBASE_DATABASE_URL</string>
</resources>
Installation

To install the STA Companion App on your local machine for development and testing purposes, follow these steps:

  1. Clone the repository

    Open your terminal and use the following command to clone the repository:

    git clone https://github.com/k3ssdev/STACompanion.git
  2. Navigate to the project directory

    Change your current directory to the project's directory:

    cd STACompanion
  3. Sync the project

    Open the project in Android Studio and sync the project with Gradle files. This can be done by clicking on the Sync Project with Gradle Files button in the toolbar or by using the File > Sync Project with Gradle Files option in the menu.

  4. Build the project

    Build the project by clicking on the Build > Make Project option in the menu or by clicking on the Make Project button in the toolbar (the hammer icon).

  5. Run the project

    Run the app by clicking on the Run > Run 'app' option in the menu or by clicking on the Run button in the toolbar (the green play icon).

Please note that you need to have Android Studio and the Android SDK installed on your machine. Also, an Android device or emulator is required for running the app.

Running STA Companion
  1. Select the Run Configuration

    In Android Studio, select the appropriate run configuration from the dropdown in the toolbar. For most cases, this will be the app configuration.

  2. Select the Target Device

    Click on the Select Target Device button in the toolbar (next to the run configuration dropdown). This will open a dialog where you can select an Android device or emulator to run the app on. If you don't have a device connected or an emulator set up, you can create a new Android Virtual Device (AVD) from this dialog.

  3. Run the App

    Click on the Run button in the toolbar (the green play icon). This will build and run the app on the selected device or emulator.

Please note that the app requires Android 9.0 (API level 28) or higher to run.

Tests

WIP


Project Roadmap

General:

  • ► Create a splash screen.
  • ► Create a login screen.
  • ► Create a main screen with a bottom navigation bar.
  • ► Create a character sheet screen.
  • ► Create a dice rolling screen.
  • ► Create a settings screen.
  • ► Create a character sheet edit screen.
  • ► Create PDF files of character sheets.
  • ► Add localization support for Spanish.
  • ► Add localization support for English.
  • ► Create a legal screen.
  • ► Create a ship sheet screen.
  • ► Create PDF files of ship sheets.
  • ► Responsive design for different screen sizes.
  • ► Landscape orientation support.
  • ► Selectable design for different themes.

Firebase Integration:

  • ► Implement authentication system for user account management.
  • ► Securely store character and ship data in Firebase for each user.
  • ► Implement a settings menu for viewing user's data, closing session and delete account.
  • ► Add a chat system between users.

Dice Rolling System:

  • ► Perform rolls using special 6-sided dice used in Star Trek Adventures and 20-sided dices.
  • ► Allow selection of the number of dice to roll and display the result.
  • ► Add animations during the dice roll.

Character sheets:

  • ► Create, edit, and delete character sheets.
  • ► Create, edit, and delete ship sheets.
  • ► Display character sheet information in a tabbed layout.
  • ► Include images for both player and ship sheets.

Skill Rolls:

  • ► Simplify skill rolls directly from the sheets with a single touch.
  • ► Display the roll result and any applied modifiers.

Export to PDF:

  • ► Generate PDF files of sheets in the official game format.
  • ► Include all relevant information in the PDF, such as attributes, skills, and notes.

Feedback

Your feedback is important to us. Please use the following resources to provide feedback:


License

This project is licensed under the MIT License. See the LICENSE file for details.


Credits

The character sheet used in this application is the version edited by Holocubierta for Spain. You can find the original character sheet at the following link: Character Sheet - Holocubierta


Legal Notice

The Star Trek Adventures character sheet used in this application is owned by Holocubierta. This application is an unofficial project and is not affiliated with or endorsed by Holocubierta.

This application is provided "as is" and "as available" without any warranties of any kind. The developers of this application are not liable for any damages or harm arising from its use.

All references to "Star Trek" and "Holocubierta" in this application and its documentation are used for identification and reference purposes only and do not intend to infringe on the rights of CBS Studios or Holocubierta.

Return

stacompanion's People

Contributors

k3ssdev avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.