Code Monkey home page Code Monkey logo

tower-defense-galaxy's Issues

Fix VR stuff

Need to create custom vr camera that has a better named interface for ALL of the rendering, so TDScreen needs to use it.

Clean up tower placement redundancy

Need to optimize how often raycasting is being done in the PlacementWindow class, though this is a lesser place to worry about it. Also remove the possible null pointer with the second ray cast.

UI dynamic resizing

Redo main menu and settings menu to fit screens dynamically. Possibly need to do that when I implement multiple viewports.

Sign in button

If I am not feeling lazy make the sign in/out button use the stacking widget thing for auto placement and sizing.

requestFeature() issue.

android.util.AndroidRuntimeException: requestFeature() must be called before adding content
presents itself on android 4.4, so get emulator.

Increase Vector readability

Create local references to temp variables to make it easier to see what they are instead of "tempVector1" and such. Also use .cpy() instead of using a copy constructor to increase readability with chaining.

Constructors are a mess

Organize order of arguments in constructors, add java-docs or comments, and finish adding constants to classes instead of values in the actual constructors for readability. Need to add constants to all of the top level entity classes instead of passing everything in.

Asset organization

The file structure for default resources needs work, not just having everything in the default theme. Need to move the assets that won't be customizable into a separate directory.

Completely redo object creation

Implement factory methods instead of using reflection to create all of the objects to increase reliability.
Example:

public class Library implements BookFactory {
@OverRide
public Book newBook() {
return new PaperBook();
}
}

public class KindleLibrary implements BookFactory {
@OverRide
public Book newBook() {
return new KindleBook();
}
}

Tower Placement

Need to add a method for determining the orientation of the tower being placed in the region class based on proximity to a surface on the region.

Hide entity map from entities

If possible, generate an id outside of the entity and pass it in to prevent entities from having access to other entities. Not sure what to do about targeting, though. Possibly pass in a reference to a targeting object that has access to said map of entities.

Window that takes focus

Need to create an Actor or window that overrides the hit() method and returns itself to block input from the parent actor. Implement this in the pause menu, popup window, confirmation dialog, and future popup type windows.

Memory issues

Need to remove all object creation from rendering code and need to use stringbuilders with the drawing code.

Texture packing

Do that to improve crap for all of the icons that are used.

Window fading

Add a parent class for default fading that extends Window. Make MessageWindow extend this new "FadingWindow" and use the default background rendering,

Collision filtering

`public class BulletTest implements ApplicationListener {
final static short GROUND_FLAG = 1<<8;
final static short OBJECT_FLAG = 1<<9;
final static short ALL_FLAG = -1;

@Override
public void create () {
    collisionWorld.addCollisionObject(object.body, GROUND_FLAG, ALL_FLAG);
}

public void spawn () {  
    collisionWorld.addCollisionObject(obj.body, OBJECT_FLAG, GROUND_FLAG);
}

}`

Pausing

Make sure all non-rendering code goes into the tick methods in entities because calculations need to stop when paused and render methods are still called. Laser class is the obvious example of this not working correctly with the laser going away while game is paused(Might be desirable in that instance). Also need to ensure that the other actors are not active while the pause one is up and draw a partially transparent image over everything maybe.

Tower placement window control

Need to work out a way to place towers without calling touch events to any of the other windows, maybe a lockout boolean in Window class to block other windows.

Class loader

Change TDWorld class's constructor to take in only interface and move desktop specific code(google class loading) to desktop main class.

Platform specific code

Make interfaces for things like loading classes in a package and have the platform main classes implement them and pass themselves in a constructor for the game so that the core code just calls a method and it goes to the respective platform's method.

Models for entities

Need to pass in reference to the asset handler or loaded assets when creating entities.

Debug window

Look through the Window or Dialog class to try to make a window pop up for displaying values or have it be one of my windows on android or if a boolean is false;
Get FPS with Gdx.graphics.getFramesPerSecond().

Icon selector graphics

Make the selector pretty by increasing the size and offsetting the other tabs and having a bit of a movement animation.

Disposing resources

Need to look into releasing bullet objects and add disposable array to TDScreen class and move it out of TDGame.

Aspect ratios

Change screens to use aspect ratios and don't use this constructor:
public TDScreen (Game game) {
this(game, new OrthographicCamera());
}

TDScreen loading animation

Add loading animation and asset manager to TDScreen class, possibly in a method to override for customizing it.

Assetmanagers

Need to add different asset managers to load resources in chunks, possibly some like menu and ui assets and ones in individual screens. Probably one in TDScreen for each screens assets to load each time. Also add loading animation for each screen. Need to move fonts from TDGalaxy class to TDScreen class, too.

Possible sign in loop

Need to make the current version able to have the permission dialog come up and not constantly pop up the attempting one that fails. Look at version code 4 for what kind of might have worked.

Tower model nodes

Should possibly add a classification of tower to include adding an array of nodes based on the model and some default aiming code.

Asset loading error catching

Catch errors related to assets not being found and replace them with a default asset instead or look somewhere else for them.

Dependency handling in themes

Add main class for themes and add a method for getting the desired classes to pool. Change inherited method getDependencies to be inherited but be overriden.

Get asset "override"

Make sure asset loading uses getMethod rather than getDeclaredMethod and add default version that searches in the default directory, possibly theme/basic/...

New method of loading entity assets

Possibly still add a static method to the entity or tower and enemy classes for default that uses class's name for default file name. Redo the asset class to include possibly an enum and string for source and maybe separate name/type.
Example:
public static List<Asset> getAssets() { return Arrays.asList(new Asset(Sources.INTERNAL, "theme/basic/tower/Gun.g3db", Model.class)); }

Check cursor location better when deciding top window

Might currently not work quite right.
@OverRide
public boolean scrolled(int amount) {
for(MouseHandler mouseHandler: Lists.reverse(Tools.getImplements(elements, MouseHandler.class)))
if(mouseHandler.onWindow(Gdx.input.getX(), Gdx.input.getY()))
if(mouseHandler.scrolled(amount))
break;
return false;
}

Label text

Need to figure out how to use tables better and center the text in the window class I have.

Possible teleportation.

Use math.min() to limit distance traveled by projectiles when multiplying delta float by distance. Also use that in rotations.

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.