Giter VIP home page Giter VIP logo

monet2's Introduction

MoNet2

MoNet2 is a Splatnet API client for Android devices, allowing users to have the benefits of the official Splatoon 2 App, with the benefits of a Native Application.

MoNet is now currently not under development due to concerns about the future of the Splatnet 2 API

Features

  • Set Notifications to alert you to the availablity of Gear, Stages, Game Modes, and Salmon Run
  • MoNet keeps every battle you fought while using the app, allowing you to check back further than 50 battles ago
  • Check the Map Rotations from your Android Wear device
  • Know if you have an order waiting for you at Merch
  • See your performance on your favorite stages, your best weapons, and your freshest gear
  • Keep track of your Ability Chunks
  • Get in-depth statistics on your team's Splatfest performance

Credit

The Paintball font is by the SquidBoards user theFIZZYnator

The Splatfont2 font is by the SquidBoards user PaperYoshi

Images beyond MoNet2's Icon are pulled from the Splatnet App, and are property of Nintendo

monet2's People

Contributors

msruback avatar

Stargazers

 avatar  avatar

Watchers

 avatar

monet2's Issues

New User flow

Currently New Users are simply dropped into the app. This is disorienting, and leads to them not realizing or using certain features.

To fix this:

  • Users should be prompted to put in a cookie

  • Users should also be prompted to set their auto-update settings, which should mention that notifications can only be set in the settings when auto-updates are on.

  • Users should, if auto-update was turned on, be prompted to set their notification settings.

Ability Chunk Tracker

Users should be able to manually track their ability chunks under the stats group. They should be able to add and subtract chunkable abilities from this page.

No internet for Rotation

Currently, if the app determines that data needs to be updated, and there is no internet access, the app crashes. This is obviously not good behavior. If the app does not have an internet connection it should remove the expired timePeriods and if no timeperiods exist display an error message.

Clean up Code

Documentation and organization are severely lacking. Fortunately not so much that it will be impossible to clean up this code, however steps should be taken to prevent that from occurring. Similar classes should be packaged up, and standardized where possible. Things are starting to get a little out of hand with maintaining this, which I should have realized would occur.

Grizz Co.

Currently Salmon Run data is not updated at all on Rotation. The user should be able to see a list of all upcoming Salmon Runs and times, and Ongoing Salmon runs should have the Salmon icon next to them

Polish API requests

Right now the user is not aware if the app is getting the latest info, if the cookie expired, or if the app simply can't reach the server.
To correct this:

  • 1. Users should be able to see a loading icon in the bottom right corner of the screen when the app is retrieving data from the API

  • 2. When authentication fails the user should be prompted to either enter in a new cookie, or do so later, with directions being provided as to how to do so.

  • 3. When the app cannot connect to the server, the user should be alerted to this by toast

Stats Revamp

The Stage, Weapon, and Gear Stats pages currently work, however UX is not as good as it can be. In order to improve.

Stage Stats

  • The stage stats fragment should be converted to use the list of stages from the Stage table. Therefore all stages the user has played on, including Shifty Station, will show up in the list for stages.

  • Turf War Wins should be calculated from stored data, and presented to the user

  • Update to show Clam Blitz Stats

  • Users should be told how many more battles is needed to generate stats for the stage.

  • Users should be able to set Stage Notifications from the List fragment.

Weapon Stats

  • Weapons in the Weapon Locker Fragment should be separated based on category. These categories are 0000s for Shooters, 1000s for Brushes, 2000s for Chargers, 3000s for Buckets, 4000s for Splatlings, 5000s for Dualies, and 6000s for Brellas.

  • Users should be told how many more battles is needed to generate stats for their weapon.

Gear Stats

  • Gear in the Closet Fragment should be separated based on kind(head, clothes, and shoes).

  • Gear in the Select Gear Dialog should be separated based on kind as well.

  • Basic win, ink, and last used data should be generated and presented to the user.

  • Users should be told how many more battles is needed to generate stats for their gear.

  • Users should be able to set Gear Notifications from the List fragment.

Shop on Wear

Users should be able to view the shop on an Android Wear device, as well as order gear.

Links

  • Link from stages in Rotation Fragment to corresponding StageStats
  • Link from gear in Shop Fragment to corresponding GearStats

Gear ID Bug

Currently users are notified of gear they did not request to be notified of. This is due to gear of different kinds sharing IDs. This issue reaches beyond just the notifications, as gear is not currently being stored, and this will cause issues in displaying gear in Battle info and storing gear in the Closet.

The solution is pretty simple, split the gear table into three separate tables, "head", "clothes", and "gear". This will require edits to the Closet table to hold a reference to the kind of gear in the table, as well as minimal changes to the BattleManager.

The impact to data already stored in the database is non-existent. There will be temporary issues of gear seen in battles not being present in the related table, but that should resolve itself quickly, as battles and the shop inserts gear that was missing.

Battle details

Seems I forgot to create an issue for this. Users should be able to click on a battle or enter a battle id and be presented with an indepth breakdown of that battle. Players, result, mode, type, and stages, should all be presented to the user.

Current Merch

Users should be presented with the current merchandise present in Annie's shop upon navigating to the shop page

Ordering Merch

Users should be able to click one available item, and be prompted to order it.

  1. Users should, upon clicking gear, be prompted to order it.
  2. Users should be able to order or cancel ordering the gear.
  3. Users upon ordering, if gear is waiting at Murch, should be reminded that they already have gear ordered. Possibly place both side by side. Allow the User to keep the currently ordered gear, or order the new gear.
  4. Users should receive a toast telling them that the gear is either successfully ordered or canceled.

Player Stats

Users, upon long pressing their Name in the nav drawer, should be presented with a fragment that contains general user stats.

General Info Tab

  • Image to Insert
  • Player Type
  • Level and Ranks
  • Nickname and Icon
  • Last Loadout

User Stats Tab

  • Wins/Losses
  • Total Inked
  • Last Played
  • First Played
  • Users should be able to see their overall stats in Ink, Kills, Deaths, and Specials
  • Users should be able to filter these stats by time, allowing them to see their recent performance.

Wear: Alert Notifications

If a user has a wear device, and receives a shop notification, they should be presented with an action that allows them to order the gear from the watch.

Notification Revamp

The current notification system is buggy and prone to spam. In order to fix this and to ensure users are notified of important information while not flooding their notifications with useless info, the notification system will need to be revamped.

Revamp

  • When the app determines the user should be notified of something, it should add it to a notification list.
  • A Broadcast Receiver should periodically check this notification list and push the relevant notifications, adding notifications to a done pile for the duration the user will need to see them.
  • A Notification Manager class should manage the notification list and refuse to add items that have already been notified and sort the list.
  • Users should be able to request new battles be instantly downloaded. If one of the 5 battles in timeline has happened in the past 3 minutes, the app will request the timeline in 3 minutes.

Additions

  • Users should be able to request to be notified about new Grizz Co. monthly reward gear.
  • Users should be able to request to be notified about newly released Weapons.

Battle Improvements

Battles are a bit iffy and not very useful. Battle Performance should be improved by changing from an Expandable list view to a dialog, with stats. All Battles should show up in the battle list, in pages of 25 items.

Battle Info Dialogs

  • Users should be able to see the loadout of the player they tapped

Pagination

  • Users should be able to browse through pages of 25 battles, for all the battles recorded in the database

Shop Ordered Adapter

The Shop Ordered "Adapter" should be abstracted out to help reduce clutter in the Shop Fragement.

Salmon Run Revamp

As suspected, Nintendo has added the oft requested Salmon Run times to Splatnet. MoNet should therefore be revamped so as to not use manual entry and to pull the times from the API. The end point is api/coop_schedules, and the response consists of "details" and "times".

The details correspond to the two upcoming Salmon Runs, the ones we have extra details on such as Stage and weapons. The times correspond to all five upcoming Salmon Run times. Interesting to note, the two upcoming Salmon Runs have their times in both details and times.

To Revamp Salmon Run, these things must be done

  • Redesign the Salmon Run Card in Rotation fragment to contain a ViewPager
  • Implement a fragment to display a "detail" run
  • Implement a fragment to display the non-detailed runs
  • Redo the deserialization of Salmon Run to fit the API
  • Add a Retrofit definition of api/coop_schedules
  • Change Salmon Alarm to work with new Salmon Run Objects

Adapter Rework

Adapters right now need a massive rework to maintain consistency and help keep files clean.

Document the Splatnet API

Documentation for the Splatnet API should be provided.

  • Homepage
  • Nickname and Icon
  • Timeline
  • Results
  • Specific Result
  • Records
  • Campaign Records
  • Map Schedule
  • Salmon Run Schedule
  • Current Splatfests
  • Past Splatfests
  • Splatfest Votes
  • Splatfest Rankings
  • Merchandise
  • Order Gear
  • Share Profile
  • Share Summary
  • Share Battle
  • Share Challenge

Salmon Run: Display in Rotation

Users should be able to see a card in the Rotation fragment that tells them the salmon run data they have entered, as well as let them open up a dialog that will allow them to enter more data.

Splatfest Rotation Support

Currently Splatfest Rotations are not handled. I do not have Splatfest Rotation JSON, and probably will not until at least the 13th, (unless I buy a european copy), however I have a good idea on how it might be structured. Nonetheless, Turf War, Ranked, and League cards should be able to be hidden automatically when a Splatfest comes around, and the Splatfest card should be between Salmon Run and the normal gamemodes preceding the Splatfest, and first during.

Gear Notification Expansion

Users should be notified when a player they played with in a recent battle has gear they have set a notification for.

Splatfest Stats

This is the founding purpose of this app, users should be able to compare their performance to that of their teammates, as well as see their impact on their team's performance, and their friends' votes.

Threads

Currently threads are executing after the fragment they are supposed to change is navigated away from. This has only appeared now that there are multiple fragments. When the fragement is navigated away from, running threads should pause.

WeaponStats Adapter Rework

Weapons Stats uses the old fragment system for it's cards, it should be moved to the RecyclerView method

BattleInfo Rework

BattleInfo currently uses RecyclerViews to display users, however it should use RecyclerViews to dynamically change between modes easier.
ViewHolder:

  • BattleInfoViewHolder
  • BattleTeamViewHolder

Rotation ViewPager Clunky

Currently it is difficult to determine where in the schedule you are. The user should be able to navagate back to the current TimePeriod using a back button, as well as see what page they are on.

Ordered Merch

User should be able to see the merchandise they have already ordered and is awaiting pickup at Murch in-game, on the shop page.

Campaign Stats

Users should be able to see their single player campaign stats. Users should be presented with stage completion, time, weapons used, and percent completed.

Weapon Stats

Users should be able to view their stats with their weapons. These stats should be their performance and wins/losses.

Performance is made up of how they did in matches, their ink, kills assists, deaths, and specials. This should be presented in three different ways, their average performance displayed in a radar chart, their performance over time in a line graph, and the spread of their performance in a box and whisker chart.

Wins/losses should be displayed as a Donut Graph, with wins/loses recorded in the SQLite database displayed as a pie graph in the donut hole.

Rotation on Wear

The wear app should have the current map rotation, in an easily readible format

Battles

The User should be able to navigate to a fragment that lists their Battles. These battles should be stored in a SQL database in the app. This database should have tables for Ranked, Turf War, and Splatfest. League should also be supported, but I do not have the information on the JSON provided yet.

Wear: Mode In-Depth Rotation

Upon clicking one of the mode cards on wear, the user should be brought to a screen that displays all future stages for that mode, as well as gamemode changes.

Alerts

Users should be able to subscribe to alerts, to tell them their favorite stage/gear they are looking for/salmon run will be available soon. Users should be able to set the notification time in settings, and be able to manage their alerts as well.

Gear Stats

Same as the weapon stats, but with gear and only Wins/Losses that are in the database

Login Loading

Going through the login flow is long, the user should be presented with a loading dialog upon login.

Update Rotation

Currently the rotation does not update when TimePeriods have expired. Since TimePeriods expire every even hour, the app should after 2 hours update the rotation

API updated

The api updated yesterday, possibly when the Nintendo Direct went up. Since it seems data on the api is not currently being updated, I need to intercept the api calls the official app uses using mitmproxy.

Nav Drawer

Currently there is no way to navigate to other activities from Rotation. The App should have an Nav Drawer that allows users to navigate to other activities.

Update data in background

In order to provide useful notifications, the app must be able to update in the background. Users should be able to turn on/off autoupdates, set their frequency, as well as whether they occur on a data connection or not.

Sharables

Nintendo allows users to create sharable images, allowing them to text/tweet, and otherwise share their achievements. MoNet should do the same, for various achievements such as Rank Ups, Stage Rotation, and Results. Stats are also a good idea, and allowing users to share these stats should make things just nicer

Shop

Currently the Shop page is not implemented. Users should be able to navigate to the shop page

Database

There should be a SQLite database that stores information on brands, gear, and the like

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.