Giter Site home page Giter Site logo

complexralex / completed-games-registers Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 2.0 1.39 MB

Software (made in Java) where you can have a record of every game you have beaten (completed) so far!

License: GNU General Public License v3.0

Java 98.98% Batchfile 0.52% Shell 0.51%
games-registers java-8 rawg-api rawg rawg-database-api

completed-games-registers's Introduction

Completed-Games Registers

Completed-Games Registers

GitHub release (latest by date) GitHub Release Date GitHub last commit GitHub

There were some changes across versions of this software. I encourage you to check out the details here. In case you want to download a release version, go here.

Description

Software (made in Java) where you can have a record of every game you have beaten (completed) so far!

Aim

If you want to save a list with all the games that you have completed so far, you can create a completed-game register. This one is an object that has the following fields:

  • Name of the game.
  • The year when you completed it.
  • Your rating of the game (from 1 to 5).
  • Some comments or thoughts about it.
  • Your annotations, like something you must consider before playing it.
  • A spoiler (at the visualization panel, it won't be visible at first).

The only one of the above mentioned that isn't optional is the first field: the title of the game.

Also, you can see additional information about the game like its description, its publishers and developers, its genres, and even an image or screenshot! These things are thanks to RAWG's database API.

Note: When you are downloading game information, it will take a few seconds to process it. Be patient.

Requirements

  • This program requires at least Java 1.8 to be executed (in fact, is recommended to run it at that version). You can download it here.
  • This program uses the Open Sans font by default, but it isn't necessary to run it. Anyways, if you want to download it, click here.

Important notes about updates

[v1.1.1] Versions from 1.1.1 requires lib folder

Because of a change made in the construction of jar files, it's necessary to make a lib folder and include all the libraries inside of them in order to run the program correctly.

If you want to update from older versions to this one (or above), you can simply copy the contents of the new release into the folder of the previous jar version (replacing the old jar file and including the lib folder contents).

In case this is the first version you downloaded, you can ignore this and simply extract the contents of the release version.

[v1.0.3] RAWG Database now requires an API key in order to accept requests

This problem is fixed in the 1.0.3 version. However, this implies that previous versions will not allow downloading game information from RAWG Database.

[v1.0.0] Downloaded game information

Most of the game information files (json, inside data/game/json folder), which can be downloaded from the creation/editing menu of a completed-game register, won't be accessible if you downloaded them in version 1.0.0 and want to access them in future versions. This is because of a modification made in the name of the files, doing it more compatible with more special characters.

If you are currently using the 1.0.0 version and you downloaded game information (only json files) but you want to update your JAR file (or update from git), it's recommendable to delete and re-download these files.

Note: This won't affect the game registers that you have created. This is related to the json files which are inside the data/game/json folder.

Sorry for the inconvenience.

About release versions

Everything you need to know about jar file releases can be consulted here.

How to build from source files and run

All the run files are inside the run folder. Be sure to run them at that same location (that location is run/<system-you-selected>).

  • In Windows, go to run/windows, execute build-class.bat, and then execute run.bat.
  • In Linux, go to run/linux, execute build-class.sh, and then execute run.sh.

Note 1: After running the build-class file, every time you want to run the program you only need to execute the run file.

Note 2: From now on, you must get a new RAWG API key in order to download information from their database. This can be obtained here. The location where you need to put it in is on the API_KEY String on the Software java class (that is src/system/Software.java).

    /**
     * RAWG API key.
     */
    public static final String API_KEY = "INSERT-YOUR-RAWG-API-KEY-HERE";

Note 3: There are more runnables you can execute, so here's a brief explanation about them.

  • build will generate class files and finally a jar file.
  • build-and-run will generate class files and run the program from them.
  • build-class will only generate class files. These files will be stored in the build folder.
  • build-jar will only generate a jar file (which requires class files). The jar file will be stored in the path run/<system-you-selected>/jar, containing the data and lib folders as well. In case you want to run the jar file, you can do it with java -jar CGR.jar.
  • run will only run the program (which won't work if there were no class files found). This will store all the program data in the path run/<system-you-selected>/run/data.

Screenshots

Completed-Games Registers screenshot 1 Completed-Games Registers screenshot 2 Completed-Games Registers screenshot 3 Completed-Games Registers screenshot 4

Report issues!

This software is not perfect. Exists the possibility to find a bug that could ruin the user experience, so if you found a bug, I encourage you to report it! (you can even suggest a new feature!).

Disclaimer

All the icons and images that are used in this program (except for those which can be downloaded through RAWG's database API) are entirely made by me, from zero. I don't own any of the games that are mentioned on the screenshots.

completed-games-registers's People

Contributors

complexralex avatar

Stargazers

 avatar  avatar

Watchers

 avatar

completed-games-registers's Issues

[BUG] When opening browser is not supported, It won't say anything

Describe the bug
The text dialog that must show up when the web browser is not supported fails and shows nothing.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the help section (by clicking the question mark)
  2. Scroll down until you find the "report issues" text
  3. Click on "Report and issue (GitHub page)"
  4. See error

Expected behavior
The dialog must show up a dialog saying that the operation or opening web browser is not supported

Screenshots
Screenshot_20220111_093411

Desktop (please complete the following information):

  • OS: Kubuntu
  • Version 20.04

[BUG] Duplicated game registers

Describe the bug
There were two same registers with the same name

To Reproduce
Steps to reproduce the behavior (these are a possibility):

  1. Insert more game registers
  2. Restart
  3. Edit the name of one of these
  4. Restart
  5. Expect the error

Expected behavior
Not have duplicate registers

Desktop (please complete the following information):

  • OS: Windows 10
  • Version of the program: 1.0.0

[BUG] The software can't download information from RAWG database anymore

Describe the bug
The software can't download information about the games anymore.

To Reproduce
Steps to reproduce the behavior:

  1. Add a new game
  2. Write its name
  3. Click to "Download game info from RAWG database"
  4. See error

Expected behavior
Must download information about the entered game.

Log file content

Version: 1.0.1

| --- --- --- --- --- --- --- |

Time: 01:58:13
Day: 22
Month: 4
Year: 2021

| --- --- --- --- --- --- --- |

Exception.toString(): java.io.IOException: Received not a good response from the server...

| --- --- --- --- --- --- --- |

Class: class java.io.IOException
Message: Received not a good response from the server...
Localized message: Received not a good response from the server...
Cause: null

| --- --- --- --- --- --- --- |

Stack trace:
java.io.IOException: Received not a good response from the server...
at model.GameData.searchGame(GameData.java:365)
at model.GameData.downloadGameInfo(GameData.java:414)
at controller.EditGameController.downloadGameInfo(EditGameController.java:259)
at controller.EditGameController.actionPerformed(EditGameController.java:379)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

[BUG] InvocationTargetException when running a jar with Java command

Describe the bug
The program won't open due to this exception.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the directory where the jar file is located
  2. Run it with java -jar jarName.jar
  3. Wait to see the Exception

Expected behavior
Expected to show up the main window.

Desktop (please complete the following information):

  • OS: Windows 10
  • Version of the program: 1.0.0

Additional context
I was adding new registers, but when the list got bigger, the problem showed up.

Stack trace

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911)
        at java.util.ArrayList$Itr.next(ArrayList.java:861)
        at controller.GeneralController.obtainInitialValues(GeneralController.java:126)
        at controller.GeneralController.initialize(GeneralController.java:108)
        at controller.MainController.set(MainController.java:215)
        at controller.MainController.<init>(MainController.java:142)
        at MainLauncher.main(MainLauncher.java:68)
        ... 5 more

[BUG] Same JSON file with different game registers

Describe the bug
When a game information is downloaded, this file is named as the game name but without special symbols and lower case.
So, if exists a game that it's the same name as another game but with special characters, then the JSON file will be the same.

To Reproduce
Steps to reproduce the behavior:

  1. Add a game
  2. Name it "64.0", download its information and save it
  3. View that game. This will contain information about the game named "64.0".
  4. Quit that view and add a new game
  5. Name it "640", download its information and save it
  6. View the register of "64.0" (not the "640" register)
  7. See new information

Expected behavior
View the game information of the game.

Desktop (please complete the following information):

  • OS: Windows 10
  • Version of the program: 1.0.0

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.