XNA 0.5 - taken from dteviot's post
2x2 Units.
- Correctly size them, (Actually correctly scaling all units is probably needed, add a scale and size elements to combatant.xml)
- Draw at correct position on battlescape. (Because they cover 4 cells.)
- Line of sight/fire. Actually, these two might not be such a problem. For rule engine purposes, assume combatant is at center of north west cell on terrain. Then add a displacement vector of (+0.5, 0, +0.5) to draw centre of combatant at intersection of cells.
- X-Caps/tanks on battlescape
- Pathfinding
Civilians on battlescape terror missions. (Also when aliens attack an X-Corp outpost?)
Better (or more fun) AI logic for alien forces on battlescape.
Experience for X-Corp soldiers
Reactions
Bleeding out of wounded soldiers.
Medkit healing
Recovery of stun damage
Explosions
Grenades
Rest of actions that items are capable of.
- Psi attacks
- Psi probe
- Scan
- Hit
Waypoint (for BB launcher)
Fire on battlescape
Smoke on battlescape
- Line of sight effects
- Stun damage
Ability for combatants to drop and pick up items on battlescape.
Draw dropped items on the battlescape.
Proximity mines
Night missions.
Rules engine: determine visibility
Graphics engine: how to render?
Cydona mission
Allow X-Corp player to select troops that will defend an X-Corp outpost from alien attack.
Generating battlescape terrain (esp. for different types of missions.)
Destructible terrain
- Just being able to destroy walls and floors.
- Major property damage when structural elements are destroyed. E.g. no "floating" building levels after the ground floor is destroyed.
Improved line-of-sight calculations, to allow for posture, combatant height, and terrain obstacles in way?
Re-equip soldiers after battlescape mission/before starting new mission. Note logic is already there in CombatantInventory.RestoreLoadout() and SnapshotLoadout(), just need to hook up and deal with case of insufficient supplies in outpost.
Aesthetically pleasing UI.
Aesthetically pleasing rendering of battlescape terrain
Related (maybe) only render part of scene that's in viewing fustrum
Animate the combatants on the battlescape.
Draw items in hands of combatants on battlescape.
Fog of war: No information to player on terrain that hasn't been seen yet
Sound
Minimap
Stuff that needs to be done now:
Document design, as it exists (This is an ongoing task)
Document items/inventory
Inspect Tasks, make sure SelectFirstLandingSite() is being used correctly. Esp. for ResearchMissions
SellScreen, consolidate Engineer and Scientist entries?
looks like ItemLine won't correctly handle a partially loaded magazine. Need to fix.
Handle combatant being told to move 0 distance
Properly test Terrian.IsLineOfSight
Add Fonts to StartSettings.xml, so people can try different fonts.
UnitTest for Shoot action
Cleanup ClipItemInfo and CraftWeaponItemInfo now that DamageInfo has been added to ItemInfo class
Weapons need to do random amounts of damage
Bugfix: should not be able to view inventory for terrorist units
Battlescape: Equip Soldier screen, needs to show soldier's name or alien species and rank.
Pathfinder, should check for impossible to reach conditions before doing search. e.g. Target flying, in inaccessble terrain.
Add button to battlescape to have X-Corp forces run automatically
Test Mission.OnFinishCore() in each derived class works correctly for each battlescape ending
Test Mission.OnFinishCore() in each derived class ADDs to salvage
Bugs that need immediate attention:
Items that I really need to do soon:
Make Mission.Salvage able to hold unique items, as well as non-unique ones.
Aliens need to reload weapons if they run low
item.xml, to each action, add attribute, isAttack. Action is some sort of attack
item.xml, to each action, add attribute, needsResearch, meaning X-Corp must research item before action can be used.
Add turn cost when calculate shortest path
Battlescape: implement save/load game from battlescape. (Or maybe not)
unconcious combatants don't block line of fire or movement
Battlescape: Implement Hit action so X-Corp soldiers can use stun rods.
Draw items dropped by combatants on terrain
At end of battlescape mission, if X-Corp wins, salvage items that have been dropped on the terrain
Battlescape: EquipSoldierScreen, implement "Mind Probe" mode, where can see details of alien, but can't change anything.
Battlescape: Restrict available actions for items that haven't been researched
EquipSoldierScreen (on battlescape) doesn't allow for TUs needed to move equipment
implement ActionInfo types beyond ShootActionInfo
Indicate on Battlescape which combatant is currently the subject of the player's orders
Investigate Unit Test performance, a the project and research manager tests take a surprisingly long time to run.
Add damage stats for laser (and other ammoless) weapons to xnet
Cheat codes, show all terrain. Only relevant when implement Fog of War
EarthGlobe, needs to implement IDisposable and clean up properly. At least needs to dispose of the index and vertex buffers
Battlescape: don't show the "cube" cursor when user can't issue orders
Add ability to battlescape to check in if a cell is in the viewing fustrum, and if not, move the camera so it is.
When change "selected combatant" in battlescape, make sure is in fustrum.
Battlescape: clamp the maximum distance above/below a level the camera can be.
Battlescape: debateable: lock the camera's pitch angle. (Means can guarantee max number of cells in viewing fustrum.)
Replace Debug.WriteLine() with Debug.TraceIf() for Craft State and Screen State transitions, so can toggle reporting.
Check for end of game conditions at end of month. Also add cheat flag, X-Corp can't loose, for testing
As StartScreen.OnRunTestsClicked() now set game to start condition before running any tests, may not need to do this before each test
GeoPosition.cs should move to Geography subdirectory
.xml and .xsd Files in Xenocide\Content\Schema should be moved to Xenocide\Content\DataFiles
UnitTest destruction of an X-Corp outpost
Include monthly rental/salaries for craft/personel in transit at start of month
Use new Frame.AddStaticText() to simplify/standardize existing screen's and dialog's CreateCeguiWidgets()
Update Ufo.ResearchMissionTest(), to use GeoPosition.Equals() and the Task Unit tests
Every 30 minutes, check if Outpost radars are working. Also add score for UFOs and Aircraft on Geoscape
Do we need Source\Xnet\ItemInformation? Isn't the stuff in Source\Model\StaticData\XNet sufficient?
Put up a message box when a facility finishes construction
Let Escape key exit process for adding facility to a base. Or put a "cancel adding facility" button on screen
Create HumanBaseStatistics structure, update it when facility is completed/destroyed
HumanBase pumps Floorplan's update()
update() loop, should not update in step sizes smaller than 5 seconds.
update() loop, handle case when can't sustain time compression rate, because update() calcs take longer than real time.
fix remaining FxCop warnings
Hunter needs to be told when UFO escapes
Correct Abort mission handling - check e-mail for other ToDo:
Put the Geoscene in own window (so don't need hacked Taharez image with transparent background)
Properly understand resource allocation LoadGraphicsContent/UnloadGraphicsContent. Question, should I use Game.GetService() to get DisplayDevice, rather than keep a handle to it? To deal with loss of device?
Don't inject mouse when cursor is outside window
Add Copyright notice to all files
Align latitude 0 with Y-Z plane. And equator in X-Z plane
rearm, repair and reload craft when in base. (Not a lot of point, until craft can fight.)
Move all strings to resource file
Put opaque background on dialogs, so that when two dialogs are on screen, they're readable
Things that I don't want to forget about, but are not urgent:
Reload soldiers and X-Caps when craft carrying them returns and leaves its outpost. Need to do both times, in case wasn't able to reload when returns.
Connect up volume controls and random shuffle music play in FMOD
Maybe add priority to dialogs (so can be queued in priority order) Not sure if this is still needed.
Figure out standard way to parse our xml files
Figure out standard way to serialize/deserialize (load and save game)
Dialog Box (and Message Box)
Implement UFO "build base", "Supply Base", Terror and Retailation missions
InvasionTasks with multiple UFOs
Save Geoscreen's state when switch to other screens (mostly camera position)
Countries - logic, keep scores, show stats, location (so UFOs don't target empty ocean)
Swap screens in response to Update() activity (aeroscape)
Reduce number of singletons. (Migrate to static members of Xenocide class, perhaps?)
Radar visibility
Maybe change Geoposition to struct (make it a value type)?
When technology manager has been built, implement XNetScreen.EntryAvailableToPlayer(XNetEntry e)
Add Cheat mode that makes all technologies available
Add Edit box to BaseInformation screen, to allow changing the base's name
Planet class does not need to save the GeoBitmaps during game save. They can be loaded afterwards
Tuple class, pack index and count into single ushort
Items that anyone could do:
remove colon ":" and hyphen "-" from enumerations in basic.xsd. Note, underscore "_" is OK Then propogate change to other XML files. Don't miss the file used to autogenerate xnet.xml
PolarScreen.OnMouseMoveInScene(), update so cursor maintains position as right drag occurs. Should be basic exercise in trig. Compute angle that cursor moves through (relative to earth) which is function of camera distance AND mouse position.
Then apply to camera's position.
BaseInfoScreen. Add an edit field to display base's name and allow player to change the name
Add version stamp (updated automatically by subversion from checkout) to save game files. Give warning if try loading a save game from a different version.
Put together Xenolook theme. There are several parts to this
- Change the images in C:\Build\Xenocide\XNA\Xenocide\Dependancies\CeGui\CeGui.WidgetSets.Taharez\Resources\TaherezLook.tga
to match the xenocide buttons, scroll bars, etc.
- Put backgrounds on the screens. That is, currently screens and dialogs use a set of CeGui Widgets to make
a MSWindows like "frame" around each window. Replace the frame with a static image widget, and load the widget
with the screen's background from the SVN trunk. (Note, most of the backgrounds have been drawn as 2 square bitmaps
with sizes a power of 2, to handle old graphics cards. - I'd suggest saying don't worry about that, and composite them into
single, non-square bitmaps. (The earth texture I'm currently using is neither square nor a power of two, so obviously
that's not a problem for most people.) The CEGUIBuildDialog from the Ogre Wiki shows how to put bitmaps into a button.
The modifications to do same with a static image widget are trivial.
-
Ideal option is continute work on CeGUI#, bring it up to matching C++ CeGui version 0.5.x,
so we can just use the main trunk resources
Change "time ratio" control in Geoscape to slider
Find out why some characters are getting clipped in CeGui#
Keypress autorepeat
Fix warnings in CeGui# (at least the missing XML comments ones)
Rtf2Xml needs to do some cleaning up. The RTF uses open and close quotes, and a apostrophe that are not in the ASCII
character sets. This means that CeGui# can't render them. So Rtf2Xml should change replace them with the ASCII equivelents
CeGui# static text doesn't provide a vertical scrollbar. So the entry text in X-Net is done using a list box
Someone could either bring CeGui# up to spec, or replace the list box with static text and a scrollbar. If the second option,
the line breaking logic could be improved as well.
CeGui# font, the between charater spacing appears uneven. That is, the spacing between chars is different. I suspect this
is due to Graphics.MeasureString() not giving correct character widths. See this for a font class that does appear to work.
(It explictly looks for padding in each glyph and removes it.)
Injecting MouseWheel into CeGui#, scrolls the list boxes way to far.
There's a person working on getting a XNA Content Pipeling that allows directly importing Blender files. Assist him.
CeGui# InputInjector. Update to handle more keys. Maybe replace switch for non letter keys with a dictionary lookup?.
Figure out why laser rifle model isn't scaled correctly in X-Net. Perhaps something to do with origin?
I really like the idea of having city lights on the world's dark side. I've even got an idea how it could be done efficiently. Basic idea, we use a blending shader where we use the sun's angle to determine the relative weights we assign to the "Geoscape" and "City Glow" textures.
Investigate why Xenocide crashes when loose the graphics device. (e.g. Lock the display). Probably because we don't get the new device on LoadGraphicsContent() call.
Possible enhancements:
Course calcuation, only needs to run at start of setting state, after that, azimuth is fixed.
Intercept calculation, only needs to be done when prey changes course.
At momenet, don't optimise calcs, until find we need to.
The exsting state machines for UFO and Aircraft behaviour are overkill.
For example, only need one "mission" type for aircraft, with 4 states. And a limited set of events.
However, they work, and if we want to make them smarter later, the extra code may be needed.
Performance improvement, keep list of unfinished facilites in the Floorplan, sort in order of increasing build time left. Then track time increments and only update facilities when have enough accumulated to do first facility.
Figure out way to get FacilityHandle to have a FacilityInfo as a member. (Currently it uses an index into the FacilityTable, to avoid deserialization issues.) Specifically, all FacilityInfos live in the Facility Table.
However, if I put a FacilityInfo into the FacilityHandle, when it deserializes a FacilityHandle a new FacilityInfo is created. (Not in the FacilityTable.)
Hmm. Possible fix, get the name of the new FacilityInfo, and replace it with reference to one in the FacilityTable?)
If we don't get falgard working, in X-Net, do word wrapping using the widths of the actual characters. (Currently, it limits lines to max 52 chars, and in some cases, we can do better.)
Have low and hi res textures of Geoscape. Swap in the high res textures when zoom in close on Geoscape
Optimization for UFO visibility, use a Broadphase collision detection, sorting UFOs, aircraft and outposts on latitude. For Outpost Radars, could have a bitmap marking radar range, then UFO is straight lookup.
Things to contemplate:
Give UFO and AlienSite a common interface, say IXcorpTarget, for targeting them in Geoscape
When an aircraft is in an outpost, we probably don't need to update it every minute. Every 30 minutes should be sufficient. (Only do this if performance is an issue.)
Rename Item class to ItemInfo, and ItemHandle class to Item
Change enums in .xml/.xsd so can use enum.Parse()
in X-Net, we use a bounding sphere to scale and center 3D model. It may be possible to get better centering by using an AABB