Persona 3 Portable Helper App
The Persona 3 Portable Companion App is a native Android application I am developing using Xamarin. Its purpose is to serve as a convenient companion for fans and players of Persona 3 Portable, providing assistance without acting as a complete walkthrough.
The app will feature several key functionalities, including SLinks, requests, missing persons, important calendar dates, a persona compendium, and answers to school questions. The intention is to expand the app's features over time based on user feedback and additional ideas that arise during the development process.
The app will have a themed interface inspired by the game itself, with a theme selector allowing users to switch between two different themes, the male blue and a pink theme representing the female main character.
Navigation within the app will be facilitated by a flyout template, providing an intuitive and accessible menu for users to navigate between different sections and features.
Progress indicators will be incorporated throughout the app, allowing users to track their progress in various aspects of the game, such as SLinks and requests.
Development of the app will progress incrementally, taking into account other projects, learning opportunities, and work commitments. The focus will be on building the app in manageable stages and fitting development time into the available schedule.
Stay tuned, as I will be updating my progress here with media and milestones as I go!
This is a Figma concept of the designs I plan to implement. Some notes have been added to indicate where I should seek improvement after creating these Views, should I feel that they need more vibrancy.
Created the SocialLinksPage that displays images for each arcana.
Utilized ImageButtons to represent each arcana, allowing users to interact with them.
Implemented click events for the ImageButtons to open the corresponding arcana page when clicked.
Styling Enhancements:
Two new styles, PropertyTitles and PropertyValues, were added to the AeonPage.xaml resource dictionary. These styles are designed to provide consistent formatting for property titles and values in the SLinks arcana views.
The PropertyTitles style sets properties such as horizontal text alignment, font size, font attributes, and text color to display property titles with a bold and centered format.
The PropertyValues style sets properties for property values, ensuring they are centered, legible, and visually distinguishable from property titles.
Displaying Male Properties:
Male-specific properties for the Aeon arcana are now prominently displayed in a clean and organized layout within the AeonPage.xaml.
The MaleName, MaleUnlockDate, MaleHowToUnlock, and MaleAvailability properties are presented with the PropertyTitles style for consistent formatting.
Corresponding property values are displayed using the PropertyValues style to ensure readability and visual coherence.
Requirement for Persona:
An informative message is shown to users in the male section of the Aeon arcana view. It indicates whether a Persona is required for faster rank-ups or if it is optional.
The message is displayed conditionally based on the MaleRequiresPersona and FemRequiresPersona properties to provide the user with important guidance.
Male Rank-Ups and Checkbox Functionality: UPDATE BELOW
Male rank-up details are now displayed in an organized manner, with each rank clearly labeled.
A custom checkbox control, CustomCheckBox, is used to allow users to mark the completion status of each rank.
Checkbox state persistence is achieved using the Application.Properties dictionary to store and retrieve the status of checkboxes for each rank.
Updated style for both genders:
Both male and female specific information has been given a gender-specific styling
Both styles mirror each other, with symmetry on both sides of the dividing line
After some INCREDIBLY inconsistent behavior from my previous method of saving checkbox state, I had to devise a new means of updating and saving the values bound to the checkboxes. By overriding OnAppearing() and OnDisappearing(), I was able to serialize and deserialize my model's properties (with a bit of help from Newtonsoft). When a page is navigated away from (OnDisappearing), the state of the checkboxes/IsCompleted properties are serialized into a JSON string, and the data is saved in Preferences with a unique key, giving each page its own data. When a page is revisited (OnAppearing), the stored JSON string is retrieved using the corresponding key, and the data is deserialized back into the model class.
The Social Links are done! It now initializes UI components, handles persona requirement indicators, and dynamically generates UI elements for rank-up details. Each rank-up section includes a rank number, completion checkbox, and collapsible content toggled by an arrow icon. The state of completion checkboxes is preserved using JSON serialization and Xamarin Preferences. Arrow icons' tap events control collapsible content visibility and icon rotation. The code centralizes UI management, interaction, and state persistence for efficiently presenting character SLink data. Persona 3 Portable has a unique color palette that is also now reflected in the design scheme, further enriching the user experience.