Also, kind of answer’s m4st3rs question about what can he work on.
OK.
What I’m doing at moment, and where I’m likely to be going.
Currently working on “research projects” for the technology tree, specifically, parsing the file research.xml.
Have built a stub “project” class, and now working on derived “ProjectResearch” class. This has 4 major bits over a basic project , “prerequisites”, “grants”, “cost”, “research bonus”
Idea is wrap each of these parts in their own class. And ProjectResearch will contain an instance of each, which it invokes to do necessary work.
e.g.
class ProjectResearch { virtual canStart(Base& base) { prerequisites.canStart(base); }; virtual giveUserTech() { grants.giveUserTech(); }; virtual start(Base& base) { startCosts.debitUser(base); }; private: Prerequisites prerequisites; Grants grants; StartCosts startCosts; Etc. }
At moment, I’ve got prerequisites done and checked in.
Am currently working on grants. Have tested that parsing from XML works, still need to test that giveUserTech() works.
Will next work on cost then ResearchBonus classes.
Notes to self:
1. Cost is probably common to research and workshop projects, so move to Project class. Also, Azrael has suggested changes/clarification to ResearchBonus, so should probably work on that first.
Once have this bit done, need to think about relationship between workers, bases, facilities and projects.
Ideas:
1. Workers can only belong to one project at a time, to probably best to just keep a pointer in worker object to project. (No list of workers IN project.) Means if we delete a worker, is automatically deleted from project. Of course if project is deleted, we then need to walk list of workers, and remove the project from them.
2. Currently Research Projects have field specifying facility needed to work on. So easy way to distinguish between Scientist and Engineer is field giving type of facility they use.
3. Relations between objects
a. Base OWNS people
b. Base OWNS facilities
c. Scientists WORK IN facilities
d. Scientists ASSIGNED TO projects
4. What happens when we transfer worker, who’s assigned to a project, to a different base? If base is also working on the project? If base isn’t working on project?
To Do:
Inventory Troop & Craft. Currently store items in RackDistinct. However, need to allow for physical location of item (definitely for trooper, very probably for craft. E.g. Right Wing Pod has Cannon, Left wing pod has missile – Really only needed if we want to show this to user.) Aside, do we need grid for Trooper, we could just set a “backpack size” and check that all items fit?
Possible solution: have “Position” class to record information. Is stored in Rack with item. E.g. Tvector
Have created a demo dialog for Buy/Sell of items. Reason being if Art department can see it, will be motivation to design the final dialog, get artwork. Then can implement using existing skeleton. Will need to wait until next release for them to see it though.
Items:
ItemPrototypeFactory:: findPrototype() returns pointer. Find out why returning an ItemPtr makes it crash.
ItemCraft::getItemName() and ItemAlien::getItemName() need to translate the ItemType string for display. (ItemAlien also needs to translate Rank.)
Check that English.xml has list of items, research projects, facilities, ranks etc. from default.xsd. (Maybe someone in CTD could do it?)
Should I add Inventory::insert(ItemPtr&) that sets ItemPtr to null? Would have closer semantics than existing Inventory::insert(Item&)
Xnet, even in DagonSquirel still occasionally doesn’t close when click on top right button.
Inventory::find() need a const version of this for read only stuff.
Files tradeable[.cpp|.h] TradableFactory, TradableManager. I think these were going to be items. Probably should remove from project.
Replace TechnologyManager with ResearchManager. Not much salvage, but I like Beetle’s solution to the starting tech issue. Just find the starting tech project by it’s name, and grant everything.
Find out why my PM no longer permits attachments. Who to ask?
Python. Don’t know it. Have bought Python Cookbook. Need to find time to read it.
Expand on idea Xenocide: Realpolitik. Probably no fun to play, but document anyway:
Wealthy Govts don’t support XCORP.
They’ll shoot down your craft if discovered over flying their territory (or at least try to).
However, they will also shoot down UFOs over their territory, and will attack any UFO landing sites as well.
They will ALSO try to attack and capture any UFOs over other territory as well. (So will be race/fight for UFOs.)
If they find out you’ve captured stuff (say by your selling it), they turn up at your base with army and demand it be handed over to them. Refuse, and they invade you base. They also kidnap and torture your staff and their families.
Other things:
Craft & Items. If we track craft as items in inventory, Need to be careful if transfer craft to another base because of “people” assigned to craft. Crew must be removed from craft when move it, because crew and craft must belong to same base. Also, what about craft properties in craft.xml? Should they be moved to item.xml? probably not, because we want craft.xml to hold alien craft as well. Solution is probably pimpl, ItemCraft has (shared?)pointer to actual Craft.
RK has suggested completing Planetscape task list. I assume he means Planetscape Planning.xls. Not really sure what the “Null” “Base” “Nominal” “Optimal” columns mean. Also, should probably update I think 16 is now done, possibly 36 as well. And some of 19 & 17. I’m currently working on 20, then will be doing 18.