Code Monkey home page Code Monkey logo

sun-calculator's Introduction

SUN Calculator

License Codacy Badge Java CI with Maven Issues Size

This Java application is designed to help players create stat and skill builds for Soul of the Ultimate Nation (S.U.N Online). This application will support all eight (8) classes, both sides of the classes' skill builds, armor, accessories, and more. English, Español, and Português are currently supported by the application.

Getting Started

sun-calculator's People

Contributors

codacy-badger avatar katkeit avatar

Stargazers

 avatar

Watchers

 avatar

sun-calculator's Issues

Shadow

Check and verify calculations against [JP] SUN v2003.

Main Package

Check all classes, interfaces, and etc. in the Main package for comments and JavaDoc implementation.

[1] Calculator.java

Helroid

Check and verify calculations against [JP] SUN v2003.

Mystic

Check and verify calculations against [JP] SUN v2003.

Valkyrie

Check and verify calculations against [JP] SUN v2003.

Feature: Tips for Builds

[Summary]

Use the Tips section of the GUI to load helpful tips in the preferred language for the user.
The tips can consist, but not limited to the following:

[1] The selected class' ranking on all stats.
[2] Recommendations based on the class' stat ranking.
[3] Provide an explanation or a "break down" of the class' stats in details.

This section should be able to provide access to PDF or HTML files residing in the project's lang directory.
See the example below on how the lang files should be set up.

[Example]

[GENERAL]
SKILL = [SKILL ENHANCEMENT] Starting at 4 INT, every class gets 3 Skill Enh. for every 4 INT, otherwise they receive 2 Skill Enh.
DEBUFF = [INCREASE DEBUFF TIME] Starting at 3 SPI, every class gets .002 sec(s) for every 5 SPI, otherwise they receive .001 sec(s).

[BERSERKER]
BASIC = [BASIC DAMAGE] Berserker gets an extra 1 ~ 1 for every 6 STR and an extra 0 ~ 1 for every 2 STR.
BASIC RANK = Berserkers have the best Basic Damage growth rate between all classes.
HP = [HP] Berserker receives 11 HP per VIT.
HP REC = [HP RECOVERY] For every 5 VIT, the Berserker receives +1 HP Recovery.

[Details]

For this to work, the following class have to be built:
[1] TipsLoader.java - io package

The following class have to be altered:
[1] Language.java - io package
[2] StatsTab.java - gui package

Inside the Language class, the setLanguage method needs to be altered to include a call on TipsLoader to load a file from the lang directory depending on the user's preference. The method inside TipsLoader can be loadTips( ). Inside the TipsLoader class, the loadTips method has to use Wini to load and set the tips inside the Tips' text area on the GUI. To give access to PDFs or HTML files, HTML coding might have to be used and loaded by the TipsLoader class. If HTML code has to be used, then alter the text area called tipsTextArea in the StatsTab class to a JTextPane or JEditorPane.

CalcLevel.java - validateLevel( )

Inside the CalcLevel class, the method validateLevel needs to reset the stats when the user has already added points and lowers their level.

How to duplicate:

  1. Select a class
  2. Change level to anything higher than 1.
  3. Add Extra Points to a stat.
  4. Change level back to 1.

The stats will not be reset. The user will keep the points added to their stats.

Elementalist

Check and verify calculations against [JP] SUN v2003.

Copyright Package

Check all classes, interfaces, and etc. in the Copyright package for comments and JavaDoc implementation.

[1] Disclaimer.java

Convert.java - stringToInt( )

There is an error when using the method stringToInt inside the Convert class. This method throws the following Exception when the user inputs characters and no numbers in the Level box.

How to duplicate:

  1. Select a class.
  2. Input any characters into the Level box.
  3. Press Enter.

Exception:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at utility.Convert.stringToInt(Convert.java:41)
at character.CalcLevel.validateLevel(CalcLevel.java:124)
at character.CalcLevel.actionPerformed(CalcLevel.java:112)
at java.desktop/javax.swing.JTextField.fireActionPerformed(JTextField.java:508)
at java.desktop/javax.swing.JTextField.postActionEvent(JTextField.java:723)
at java.desktop/javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:839)
at java.desktop/javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1810)
at java.desktop/javax.swing.JComponent.processKeyBinding(JComponent.java:2900)
at java.desktop/javax.swing.JComponent.processKeyBindings(JComponent.java:2948)
at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2862)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1950)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:870)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1139)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1009)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:835)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4871)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Berserker's Stats

Noticed that the STR stat is not correctly displaying the stat growth. Need to check all stats for Berserker.

Dragon Knight

Record and verify calculations against [JP] SUN v2003.

Feature: Additional Stats

[Summary]

The Continued Additional Stats area of the GUI needs to be finished by using multiple sections that separate the additional stats into appropriate groups as followed:

[1] Skill Related
[2] Critical Related
[3] Elemental Related
[4] Buff and Debuff Related
[5] Damage Related
[6] Miscellaneous

In the example below shows a general idea on how the categories or groups will be laid out. For further details, please view the Add Stat GUI Layout.txt file.

[Example]

Buff and Debuff Related

  • Increased Buff Time +0 sec
  • Inflicted Damage Debuff Time - 0 sec
  • Reduce Target's Basic Defense + 0%

Crit Related

  • Inflicted Crit Chance - 0
  • Inflicted Crit Damage - 0
  • Inflicted Crit Damage - 0%
  • Crit Damage Amount + 0
  • Crit Damage + 0%

[Details]

Currently, the application is build on Java Swing for the graphical user interface. To complete this task, you must understand and know how to use Swing.

For this to work, the following files need to be altered:
[1] StatsTab.java - gui -> components package
[2] Language.java - io package
[3] Theme.java - gui -> components package

Need to add the graphical components to the StatsTab class. The GUI must be uniform, therefore, each group must have a Titled Board and the panels (groups) must be pushed into the Scroll Pane. The goal is to have all of the categories listed and the user can scroll down the list. This reduces how large the GUI needs to be. After the GUI has been built, add the new sections in each language text file in the lang directory. Alter the readData method inside the Language class to reflect the new sections in the language files. Once the language portion has been handle, then the Theme has to be altered to change the GUI components to either LIGHT or DARK theme.

Character Package

Check all classes, interfaces, and etc. in the Character package for comments and JavaDoc implementation.

[1] CalcLevel.java
[2] CalcStats.java
[3] Character.java
[4] ICharacter.java

Utility Package

Check all classes, interfaces, and etc. in the Utility package for comments and JavaDoc implementation.

[1] Convert.java
[2] Downloader.java
[3] Updater.java
[4] Utility.java

Witchblade

Check and verify calculations against [JP] SUN v2003.

IO Package

Check all classes, interfaces, and etc. in the IO package for comments and JavaDoc implementation.

[1] BuildLoader.java
[2] FileIO.java
[3] Language.java
[4] TipsLoader.java
[5] ToolTips.java

GUI Package

Check all classes, interfaces, and etc. in the GUI package and it's sub-package Components for comments and JavaDoc implementation.

  • GUI
  1. Interface.java

    • Components

      1. About.java
      2. MenuBar.java
      3. Preference.java
      4. TabManager.java
      5. Theme.java

Feature: Enable/Disable Updater

[Summary]

Allow the user to enable or disable the updating process. Developers may choose to not use an Updater application with this application. If they choose to use a different Updater application, then edit the ReadMe to explain the steps on how to correctly set the application up.

Files to alter:
[1] config/settings.txt
[2] Calculator.java - main package

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.