the road ahead

The stage is set for work on the windows version of Lux to finally move forward at full steam. All the required work has been layed out in a master to-do list. The list has been divided into sections, with each section being given a percentage (but with a total of 32%). I have formed an agreement with a coder friend of mine that whoever does each section will get that percentage of the proceeds. The plan is that this will push both of us to work fast to lock in our moneys.

The deadline for completion has been set at April 1st. At the very least beta testing must begin by then. For posterity I have attached the full to-do list below...

Intro:
The only files you should have to modify are inside /src/javaUI/. All the other /src/ folders are used in both the SWING and cocoa versions. If they do get modified it's fine, just don't introduce any SWING dependancies in them.

------------------------------------------------------------------------------
New Game Window - 2 %
------------------------------------------------------------------------------
The New Game window is the first window that users see.
It allows them to specify the player and board for a game.
It is found in LuxCOntroller.java

- gray out the combobox beside the 'Used saved board' switch when the switch is off.
- gray out 'World Size' words and combobox and the 'World ID' words and combobox when the switch is on.

- add the sillysoft logo to the top right corner. Make it move in a back-and-forth sin wave pattern. Code for this is inside the cocoa LuxController.java, involving the steoLogo() function.

- gray out the 'Internet Public switch' when 'Allow network players' is off.

- add color-pickers for each player

- add 'Registered To: ~~~ unregistered ~~~' on the right side below the logo

- make the controls on the right side of the window the same size as those on the left

- make the window non-resizable

- close this window when the Join window or a Board window open. This window should open if the last active window ever closes.


------------------------------------------------------------------------------
Join Window - 1 %
------------------------------------------------------------------------------
The Join window shows a list of the public network games
currently going on and gives the user opportunity to join them.

- add a refresh button hooked up to the query server method.
- double clicking on a game should join it
- hide the progress indicator when it is not active
- make the table of games look prettier


------------------------------------------------------------------------------
Preferences Window - 2 %
------------------------------------------------------------------------------
- Create a class responsible for the preferences window. It should be opened when the 'Preferences' menu item is invoked. Look at the 3 preferences screenshots for what it looks like. On opening it should restore the controls to their saved values. On closing it should save the new values. The /cocoa/otherUI/PrefsController.java class is the cocoa implementation of this.

- the sliders should send messages on every change

------------------------------------------------------------------------------
Board Window - 3 %
------------------------------------------------------------------------------
The Board window is the window is which the actual game is played.
GameController.java controls the buttons and secondary aspects of the window, such as
a player infow window, a chat area, a bottom bar and the actual view that does the drawing of the board.

- ensure that all the buttons show all their text (I think putting their text inside works) (GameController.java)
- ensure all the buttons have the proper background color (and text that shows up on it)

- the Cards button should be 'Cards (X)' where X is the # of cards the user currently has
when opened with chat enabled, open in a seperate window if the size of window + chat is bigger then the screen

- when in cardsMode take away the 'Fortify' and 'End Turn' buttons, change 'Cards' to be 'Hide Cards' and add a 'Cash Cards' button

- make sure that everytime the buttons are changed the GUI accurately reflects this. For example when a game is over the new buttons aren't immediately visable.

Player Info Window (PlayerInfoController.java)
This window is available from the Game menu on the Board Window
- make it size properly on opening. don't let it be resizable
- show the colors in the first column
- add a cards column between Armies and Income

- if the window closes on an active game then show a 'are you sure you want to quit' alert

ChatArea.java
- make the window scroll to the bottom everytime something is print()ed


------------------------------------------------------------------------------
The Board Drawing View - 6 %
------------------------------------------------------------------------------
LuxView.java is a JPanel subclass that does the custom drawing of the board.
It recieves clicks from the user and updates itself when told to.

- make the flashing of selected country work properly and look nice. Perhaps pulse the color of the country instead?

- Make the explosions work fast and proper. The explode(int code) method is the one that recieves orders to show explosions. The code for showing the explosions is a mess and probably not very optimal. It is very desirable that the explosions be as smooth and fast as possible, as they are quite cool. Note that the drawing done in LuxView has proven to be the current bottleneck in the cocoa version. The Explosions slow down everything. It's important to get it running smoothly on as shitty computers as possible.

- make it so that cards do not overlap when in cardsMode

- implement a continent mode (see cocoa/screenshots/continent_mode for example, with code inside cocoaUI/LuxView.java)
- make it so that continent lables do not overlap

- the filler image should not conflict with extra lines.

- There is sometimes a bug that causes a thin line to be drawn around countries when they are redrawn. Fix this bug. This problem has been isolated to the image clipping that is done in the drawForeground() method inside LuxView.java. If you comment it out then everything draws fine, just without a foreground.

- if the LuxOptions are set to use a turnTimer then draw keep track of the timer and draw it in the bottom left, after the helperText.
- draw the turn timer
- count the turn timer and inform GameController if it expires. GameController should then end the turn if it is master control

- make the helperText in the bottom left corner fit nicely into the box around in a font independent way. Same deal for the boxes that the # of armies gets drawn in


------------------------------------------------------------------------------
Shareware Controls - 3 %
------------------------------------------------------------------------------
There are a few different shareware aspects. Basically we do as much as we
can to get them to pay us money. This will entail
nagging them when they have not payed, accepting their serial number when
they do pay, and shutting off the app if they don't pay.

- Create a JFrame subclass that is the initial nag window (as seen in the nag_initial screenshot).

- Create a JFrame subclass that is the closing nag window (as seen in the nag_closing screenshot).

- CrossPlatformLuxController.java maintains a count of the number of games played. When this count is greater than 3:
- the initial nag window should be displayed over the new game window on application start.
- the closing nag window should be displayed when the application is exited.

_ Download the windows SDK from (http://esellerate.net). This is the library that Lux uses to validate serial numbers. On the mac side I wrote a small command line program that makes a call to the library. Then that command line program gets invoked by Lux using Runtime.exec(). The code for this is inside /cocoa/eSellerate/EsellerateWrapper.java. You must either do the same thing with a native windows command line program or directly make a call to the library from java.

------------------------------------------------------------------------------
Record Book Window - 1 %
------------------------------------------------------------------------------
- in RankingController.java
- make it sort by column when you click on a column header
- toggle the name of the first column header between 'Name' and 'Agents' when the 'Switch to xxx' button gets clicked.

------------------------------------------------------------------------------
Menus - 3 %
------------------------------------------------------------------------------
- create a JFrame that looks like /cocoa/screenshots/about.jpg and have it pop up when the 'About Lux' menu item is selected
- put the top level 'Online' menu onto the Board window.
- connect all the actions for the Online menu. They should open the location in the user's default web browser
- connect the Rules, Preference Explanation, and Release Notes to open the corresponding local html files in the default browser

- hook up Board -> Save Resized Board
- get the Board -> Goto Saved Boards to open the proper support folder for all systems
- fill up Board -> Themes with all the available themes (there is code for this somewhere). When selected it should order the LuxView to change themes
- implement Board -> Use Pictures to toggle the use of filler picts in the LuxView

- implement Board -> Toggle Chat to hide/show the chatarea
- implement Board -> Chat in seperate Window to move the chat in and out of its own little window

- ensure that the Register Online and Enter Code menu items appear on the unreged version. (I think this is currently the case)

- make the 'Check For Update' menu work, creating a popup window saying 'none' or showing what the updates are (see /cocoa/screenshots/

------------------------------------------------------------------------------
Packaging - 2 %
------------------------------------------------------------------------------
Put everything together so that a user can easily download and install the application.

------------------------------------------------------------------------------
At This Point BETA Testing Starts - 3 %
------------------------------------------------------------------------------
- fix any beta testing bugs found

- move all the strings into something that can easily be localized and localize it to French

- run lux in a profiler to examine bottlenecks

------------------------------------------------------------------------------
At This Point We Can SHIP. Ongoing Tasks Remain - 6 %
------------------------------------------------------------------------------
- create a program to edit board files. It should be able to
- read in the XML format of the boards
- move around and rename countrys and continents
- draw new countries and continents and lines
- insert randomly generated continents
- save the file into the XML format.

Redo the board generation code -> eliminate overlapping/covered countries and improve the continent shape and layouts

Posted by dustin on January 14, 2004 with category tags of

1 comment
good luck, Dust
   comment by vinny9 (#33) on January 14, 2004

   

VorgTag Cloud

Written by dustin
Latest Photo
Quote of Now:
Friends
Popular Posts
Computer Games

Hey You! Subscribe to dustin's RSS feed.
Or get wider opinion in the Vorg All Author feed.

 
 

Members login here.
© Vorg Group.