Commit Graph

  • 469b79a985 Fix a bug with the wrong lamps loading for the personal high scores master skogaby 2020-09-06 20:26:00 -0500
  • 23f3393068 Big update, will update the README file later. * DDR A20 support, including full support for Golden League. * GraphQL support for redimentary API access, including GraphiQL for a web frontend to run queries. * Numerous bugfixes. skogaby 2020-09-05 21:57:26 -0500
  • 083794007e Break out request handlers into more logical organization for multi-game support skogaby 2019-10-17 20:31:26 -0500
  • 20e3667b47 Upgrade to Gradle 5.6.2, Java 11 skogaby 2019-09-28 23:12:15 -0500
  • 64e526410d Make the default config still use SQLite for the time being, now that MySQL is proven to work skogaby 2019-09-26 16:48:19 -0500
  • 18776684cc Add some SQL scripts, both for existing SQLite users to migrate their columns to the new names that we added to accomodate for MySQL, as well as to insert the global events data for both MySQL and SQLite skogaby 2019-09-26 16:37:41 -0500
  • 78fa2126c6 Switch to MySQL instead of SQLite and change a few field names to be compliant skogaby 2019-09-26 09:09:17 -0500
  • cd502a1f6c Use a new kbinxml implementation that doesn't depend on xom skogaby 2019-09-25 20:18:43 -0500
  • 5e5b02b3a4 Remove the hardcoded events.xml file and use the database for events. TODO: create a mechanism to generate a full unlock scenario from a musicdb.xml so we can have a full unlock response for any version if the user has it toggled. skogaby 2019-09-25 00:54:01 -0500
  • 2f60c44c7a Fix time conversion player-guest 2019-08-28 23:03:20 +0900
  • 730b100c80 Add config values for enable/disable Paseli, and whether or not to force Extra Stage for every session skogaby 2019-08-27 16:17:07 -0500
  • 07394c3c17 Update README to prepare for new release 1.1.0 skogaby 2019-08-24 18:01:01 -0500
  • 37dccdb041 Fix rival support, finally skogaby 2019-08-23 18:03:26 -0500
  • d6e0d256c4 Support for 2019042200 and basic course support skogaby 2019-08-22 19:03:35 -0500
  • c839c77314 Readme update, and include the diff to the Xom version included skogaby 2019-04-12 22:56:38 -0500
  • 5aa0af170d Let new machines connect for the first time 1.0.0 skogaby 2019-04-12 20:05:26 -0500
  • 8a5d537d94 Move the database file location to the commandline so that the config files inside the JAR shouldn't matter to end-users skogaby 2019-04-12 19:52:39 -0500
  • d92e3eb89f Support the 20th Anniversary event content skogaby 2019-03-23 19:49:46 -0500
  • 11abdd2371 Beginning to stub out a web UI module skogaby 2019-02-03 19:15:23 -0600
  • abce73821c Broke out the server into multiple modules so we can make a webUI more easily. Modules: model (models), dao (database access), core (shared functionality like encryption and compression), and server (game server). skogaby 2019-02-03 18:50:31 -0600
  • b745250a00 Resolve the issue of the Python executable name on different platforms skogaby 2019-02-01 19:37:47 -0600
  • 3e75e38ca1 Let all versions of Ace run on the server, not just 042300. Add the concept of a homedir so this can be run from a JAR on something like an EC2 instance with the cardconv.py sitting in the homedir skogaby 2019-01-30 22:32:31 -0600
  • 3edf9e45d8 Use a more portable solution for loading the cardconv script skogaby 2019-01-29 21:10:55 -0600
  • 1d04238f36 Make this runnable from a JAR file properly. Make database path a hibernate config value. Ban new machines by default. Actually reject banned machine requests. skogaby 2019-01-29 19:50:26 -0600
  • 292e221214 I derped on the scores responses, now it should handle more than one correctly skogaby 2019-01-27 23:35:26 -0600
  • 19e5373c27 Small cleanup commit skogaby 2019-01-27 23:18:44 -0600
  • c62465ee67 Handle area and machine score requests. Fix some mis-enumerated webUI options. Change some default options for new users. Remove the global high scores cache and calculate on-demand more sensibly (less scalable, but we'll worry about that when it becomes an issue) skogaby 2019-01-24 02:51:35 -0600
  • e684eaefb9 Rename the rivalload handlers for loadflags 1 and 2 to be the proper names. TODO: implement them skogaby 2019-01-24 01:46:44 -0600
  • 418f89a865 The guidelines options were wrong skogaby 2019-01-22 20:40:25 -0600
  • be7c89f0c5 Don't use explicit session management for Hibernate sessions skogaby 2019-01-22 19:05:00 -0600
  • 6c8ae17bae Save the 'LAST' CSV values to the database as-is and return them as-is until we figure out more offsets. This resolves the issue of sort option not saving correctly. skogaby 2019-01-21 20:02:01 -0600
  • e02d74fafa User ghost data and personal scores now load correctly. Not sure if area/region scores are loading or not, but personal and global scores are implemented skogaby 2019-01-21 18:57:28 -0600
  • f84b9dba88 Use a basic cache for global high scores so we don't need to fetch the records from the DB skogaby 2019-01-21 14:40:17 -0600
  • b60269f6e0 Global scores response is completed, but it's *very* slow. Gonna construct it in memory on startup and update it as scores are saved instead. skogaby 2019-01-21 02:59:09 -0600
  • 18194e273d Scores are now saving correctly, along with ghost data. Still need to return records to the client correctly. skogaby 2019-01-20 17:32:52 -0600
  • 9449dc45ef Saving scores *mostly* works, but for some reason only the first score's data is read skogaby 2019-01-20 15:30:17 -0600
  • ee6a478664 Checkpoint commit. I have the DAOs and models ready for records and ghost data, now I need to implement the saving and loading of them skogaby 2019-01-20 14:20:03 -0600
  • 973d49569a Implement enough handlers to play a full session! Options save in between sessions, but scores, ghost data, and event progress do not, yet. skogaby 2019-01-20 03:10:54 -0600
  • 9c421f62e0 Construct the profile responses more cleanly, the embedded node inside the text content of the profile values isn't needed skogaby 2019-01-20 02:42:02 -0600
  • 5952fc20f6 Everything in the profile response CSVs are hex, not decimal skogaby 2019-01-20 02:25:32 -0600
  • 1fa3070e33 New profile creation finally works, name input is skipped unless the total plays returns is ffffffff, and we don't do that unless it's set to -1 in the database. If we send that, update it to 0 afterward so the name is only input once. skogaby 2019-01-20 02:07:52 -0600
  • 731ac21e3e Now we're returning the right values for logging into existing profiles. Dancer code and all options are correct. Still need to return the correct last song played, but we're not logging that yet skogaby 2019-01-20 01:18:35 -0600
  • 63ce073e31 Logging into an existing profile works now, including the dancer code. Still need to figure out new profile creation. Also, the options aren't getting sent back 100% correctly skogaby 2019-01-19 22:18:03 -0600
  • d711b5ba5a Fix a bug in the kbinxml library, and send the profile responses properly (mostly). Still need to figure out why the dancer code is wrong, and name entry is skipped for new dancers skogaby 2019-01-19 12:25:09 -0600
  • bf0de379e3 Handle userload better skogaby 2019-01-19 00:47:12 -0600
  • 753b1185e7 New profile creation in Ace almost works, for some reason it short circuits and logs us in after profile creation but before name entry skogaby 2019-01-18 19:21:04 -0600
  • 513e19fc8e At the point now where existing profiles can login. Still need to fix something that's preventing new profiles from entering their names skogaby 2019-01-18 18:10:31 -0600
  • 595435b649 Profile management is almost complete, still need to deal with eacoin stuff skogaby 2019-01-18 17:38:13 -0600
  • b0d510af16 Use a Kotlin kbinxml implementation instead of shelling out to Python for the conversions skogaby 2019-01-18 15:28:27 -0600
  • b11f658e4d Handle inheritance requests skogaby 2019-01-18 01:24:13 -0600
  • eb22fe909b More work for creating new profiles skogaby 2019-01-18 01:15:35 -0600
  • 63e462baca Handler for cardmng.authpass skogaby 2019-01-17 23:17:56 -0600
  • d073535083 More handlers to support logging in and creating new profiles, not done yet skogaby 2019-01-17 22:30:12 -0600
  • 5d5fd2268f Make the supported models check use the sanitized model skogaby 2019-01-17 19:18:56 -0600
  • 8654eac79f Added models and DAOs for cards and DDR Ace profiles, as well as enums for various options in-game for Ace. The next step is to actually support carding in in-game, as well as creating new profiles in-game for unbound cards. skogaby 2019-01-17 15:24:18 -0600
  • a4a78855ad Use a temporary solution for converting card IDs, shell out to a Python script skogaby 2019-01-17 00:07:05 -0600
  • 76bfb02ae1 Starting to work on converting between NFC IDs and card IDs but it's not working quite correctly, yet skogaby 2019-01-16 13:27:26 -0600
  • 0a683bf88c If we're seeing a machine for the first time, create a PCB and user and ban them. If we see an unbanned machine for the first time, create a default shop for it, etc. skogaby 2019-01-14 16:39:23 -0600
  • 9185ba7967 Send the 'real' (static) response for events. Don't compress responses for now, apparently this is somehow subtly broken and the client is rejecting very large responses that we've compressed skogaby 2019-01-14 15:28:28 -0600
  • 25244e2fe5 Ace now boots into online mode and gets to the title screen without any hangs. Still need to figure out why sending static responses isn't working correctly. skogaby 2019-01-14 01:51:09 -0600
  • bca2033db2 Checkpoint commit skogaby 2019-01-13 18:44:10 -0600
  • 66463b0bf6 Added a few more playerdata.usergamedata_advanced handlers, but it seems like something might be wrong with the events response, because none of the other requests come in skogaby 2019-01-13 16:49:11 -0600
  • 893c590106 Ace can boot into 'online' mode, now! Removed some of the information from the shop class that we need to hardcode, as the facility.get request can prevent the game from booting online and ever requesting playerdata skogaby 2019-01-13 03:25:37 -0600
  • df18236346 Use the port and main config values in a few more places skogaby 2019-01-13 02:36:34 -0600
  • a4aa422798 Checkpoint commit, trying to support the playerdata module but I'm running into some hiccups, the code doesn't seem to be triggering skogaby 2019-01-12 15:54:43 -0600
  • bc7458385d Return the real tax phases for each user skogaby 2019-01-12 03:28:10 -0600
  • 1e009f85ad In facility.get, return the actual shop data from the database, and validate that a shop exists for the given PCB skogaby 2019-01-12 03:11:03 -0600
  • 22ca376c7d Rename facilities to shops. Check if PCBs are banned / disabled. Make the port and maint flags configurable skogaby 2019-01-12 02:49:52 -0600
  • b94e4d44ce Write eventlog.write requests to the database, and validate incoming PCBIDs for database existence skogaby 2019-01-12 01:57:50 -0600
  • cd12a94d50 Fix some issues with XPath querying and time conversion. Now PCB events get logged to the DB successfully skogaby 2019-01-11 17:42:35 -0600
  • 66483b5d42 Actually log the PCB events to the database, as a proof of concept for the XML reading utility functions, and the DAO objects skogaby 2019-01-11 13:16:36 -0600
  • a186e19f7e Add model, pcbid, module, and method as request attributes in the initial request handler, so the downstream handlers don't need to read this information in every handler skogaby 2019-01-11 12:48:34 -0600
  • 3c65441dd5 Checkpoint commit, working on saving event logs skogaby 2019-01-11 01:47:42 -0600
  • 7aa83cdcce Create a model and DAO for DDR 16 shops skogaby 2019-01-11 01:13:03 -0600
  • deb3c40117 Create models and DAOs for user phases, gameplay logs, and PCB events for DDR 16 skogaby 2019-01-11 00:51:13 -0600
  • 67f541c4f4 Make a model and DAO for PCBs on the network skogaby 2019-01-10 22:01:50 -0600
  • d5275fd12d Make the ButterflyUser model implement Externalizable, so we can control how the object is serialized. skogaby 2019-01-10 13:37:42 -0600
  • 24bfae44a2 Add a model and DAO for users of the server (not game users, server users) skogaby 2019-01-10 13:18:23 -0600
  • 3936859dec Spring onboarding is basically complete, time to start defining models for the database skogaby 2019-01-10 12:49:24 -0600
  • c547ac1bbe Bring in Hibernate and Spring, and start defining some of the Spring beans for the app and for Hibernate stuff skogaby 2019-01-10 02:16:46 -0600
  • acd9b752fb Stop using a temp file and feed the data directly to the stdin of the kbinxml call, removes race conditions for multiple simultaneous requests and speeds things up a bit skogaby 2019-01-09 23:42:17 -0600
  • 927129cfd5 Remove CollectionUtils.readInputStream skogaby 2019-01-09 13:24:32 -0600
  • 05dfa46251 Make our own version of XMLBuilder2 so we have convenience methods for writing typed nodes to the XML documents (with a __type attribute) skogaby 2019-01-05 03:56:51 -0600
  • c285a531e2 We can successfully boot Ace into Maintenance mode! skogaby 2019-01-05 02:55:05 -0600
  • 52c80a0654 Remove all the throws statements from the method signatures so we can properly handle those later... skogaby 2019-01-04 20:19:46 -0600
  • cef7ce6365 Return the response for services.get successfully! Time to implement more modules and methods skogaby 2019-01-04 20:08:30 -0600
  • 872b4d97c5 More request validation and boilerplate code; now the request URI is validated against the request body's contents, and we are parsing the request into an XML document skogaby 2019-01-04 01:10:00 -0600
  • 4d504ce04e Another checkpoint commit, just fleshing out some of the boilerplate code for request handling skogaby 2019-01-03 13:24:16 -0600
  • 6494bbb50b Initial commit, just stubbing out a bunch of very basic architecture and request handling stuff skogaby 2019-01-03 01:44:50 -0600
  • 794fbee5fb
    Initial commit skogaby 2019-01-03 01:42:12 -0600