Campaign Manager II

Campaign Editor v0.9
for now

remember Direct Draw?


2004 03 25 Total restructuring of CE and CM has forced me to go back to basics. Instead of using the old programming techniques, I have begun to get a grip on Class programmng or Object Oriented Programming (OOP). This was easier said than done. The learning curve has been steep and riddled with "What the &%^&*$% happened now? Why won't it accept this line?" events. Anyway, read further down regarding this concept. Slowly but surely, I am getting the base classes together, but with work and family it is very slow going.

2004 02 14 Squadron Aircraft now displays properly. Screenshot further down. When I get to it, I'll add a small picture with each plane, showing fuselage bmp file. This screen actually changes size according to squadron size (Me, proud? No way <g>  ). Main Summary screen has been updated with larger  font size and added # medals just for BvH.That is as far as I want to go with the summary screen.

2004 02 13 I made a bit of progress on the guts of CE and you will find 2 new screenshots further down the page.
2004 02 11 No Still no work done on CM2. However, I managed to decompile vonTom's Campaign Manager v1.1. It is tough trying to follow some of the code
2004 02 06 No work on CE for a couple of days. Worked on RB Date Changer (See Development page). Not really wasted time, since the guts of it will be part of CM2
2004 02 03 I have been working on the Campaign Editor and it will read the entire campgnXX.dat file on its own. Mostly programming the structure and tweaking the layout. See below Program layout, which has also been updated.
2004 01 26 Got campgnXX.datcompletely mapped. Drew up the relationship between forms in the Campaign Editor. See screenshot #3
2004 01 21: Created this page

Campaign Manager II is planned to have these features:
1. CM1.1 features.
2. Monitor and edit CampgnXX.dat and CampgnXX.mis.on the fly.
3. Read from definition files squadron composition and make changes to CampgnXX.dat
4. Set up missions from scratch, based on historical data and using flights
5. Make sure that aces fly their specially painted A/C ONLY - including A/C not normally assigned to that squadron (ie Albert Ball N17)
6. Convert some squadron mates to aces to keep them in squadron, award promotions and medals as needed.
7. Read the date in CampgnXX.dat and update SimPatch folder from dat folders as needed.
8. Reverse some ace deaths (1 chance in 20), simulating that someone else was flying that plane. It has always been annoying that Aces in particular get klilled as soon as they are in a battle near Player flight path.
9. It will be suggested that you do not enter the local squadrons info in the Intelligence Room. CM2 is planned to gather intelligence through recon and display only known information on the intelligence page and sector map.
10. It will have its own data files, from which it will actually build RB Data files from scratch. That will reduce the number of Squadron.dat, except.dat, etc in sub folders. This will allow more than the current number of squadrons and aces. As for aces, when one dies, CM2 will just replace that ace with another one, re-writing the Pilots.dat file, Filelist.dat and except.dat file. It will also be possible to have region specific info and swapping between them. Any number of regions will be possible. Jasta 1 may happen after all...

11. Your suggestion perhaps

More plans covered on the SWWISA forum, CMII Ground Work
1. Completely replace all missions.
2. Set up missions for an entire day in a separate file.
3. arrange such that missions are flown in a realistic "flow", not once a day, etc. Perhaps wether dependent.
4. Implement ALL of the features in MissionGen.
5. Implement ALL the features in vonTom's Campaign Manager (if someone could get me the code)
6. Have the NEW manager monitor a couple of files and FIX them after RB3D has screwed around with them.
7. Keep track of mission successes and allow damage to really have some impact on the war. If you seriously damage  an aerodrome, for example, it will NOT be flying planes the next day.
8. Flights away from the player's flight path will have random events assined to them.
9) make it possible to adjust the time between waypoints, so planes with realisitic climb rates will have the time to make the altitude.

One other addition... the ability to change your pilots status from dead/POW/Mained back to active like Tym's Editor...

Version 1.1 of von Tom's Campaign Manager allows the use of a text file to remove files at specified dates, rather than overwriting them. That way you could use custom graphics for early dates and then revert to stock graphics on a specified date, without including duplicate stock graphics files in your patch to insert on the specified date. Now that we can buuild new VOL files, it allows switching to the VOL version and back. I believe the operation of the delfile.txt file is described in the readme that accompanies the original zip of CM11.

Here is some idea of what we may be looking forward to:
Brits went to flights of 6 by the Battle of the Somme, three flights per squadron, July 1, 1916, and kept that basic organization for the rest of the war. Operations involving double and triple flights began in late Spring of 1917, with the Germans going first and the Allies copying them. By 1918 there were some missions flown with as many as six full squadrons assigned to the same operation, though not to a single formation.

Screenshots, etc:

Object Oriented Programming as it relates to CM2, CE2, etc.

Without getting into a lofty explanation, I'll jump straight into an example that we can understand.
Each pilot has info as we have seen on a different page on this site. With VB in mind it has the following structure:
Header info
Collection of Kills
Collection of Medals
Footer info

To create the data structure for this Class (Pilot.cls), we need the following building blocks:
PilotHeader Class
Kill Class
Medal Class
PilotFooter Class
SpecialRBDate Class (you know, the 246A4D, etc info)

This is just the beginning. Each of these classes has to be self contained so that the higher class can use it in a predicatable manner. I can't just go and change the interface on the fly. Because PilotHeader, Kill and Medal all use the special RB Date format, this class has to work first. It has to have properties and methods
Properties are DayNumber, Month, Day, Year
Methods are SetMDY and GetMDY (so that we can get the entire date in one command)
A method is basically a user defined command.

The RBDate has to be referenced to and initialized by Kill, Medal and PilotHeader. That means that the Class RBDate has to be defined before I can proceed with the other classes. There is a lot of time spent on these basic building blocks, but once they are done, I can just put the program together like LEGO - or at least that is the theory. Instead of chasing variables and procedure calls all over the code, not to mention Global variables, I can just change the workings INSIDE the Class, or in worst case scenario add a method or two. RB is a finished product, so the possibility of adding data to the classes is moot. Problem with CM2, CE and even just a Mission Generator is that most of the data in RB is involved in these programs, and therefore I have to include Pilot Class, LandMark Class, Aerodrome Class, FlightPath Class, Mission Class, Campaign Class, LandObject Class, Aircraft Class, ACSpecs Class, ACOrdnance Class....... You get the picture.
VB allows me to define what is called User Types. These can have a local or global scope. Here is an example:

Public Type Kill
  Month As Long                'Long Integer, 4 bytes
  Day As Long
  Year As Long
  AircraftID As AircraftType    'Enum Type - defined elsewhere. Basically a predefined list of constants
End Type

Very useful, but not so fast: You can NOT use these to hold data inside a class. Drat! So much for making the code easy to read and use.

A screenshot of the interconnections between the different forms.Much of the work has not even been started yet, but this is the plan of battle.

frmMain is where you choose which Campaign to load, along with a couple of other tasks. When you choose a campaign, it will display summary information on buttons:

Makes you want to press the buttons, doesn't it? Well I can  : P

Next is an update to frmSquadronMain.frm
This is the output after pressing the KEK Ensisheim ...etc button

The screen adapts its output to the data given. If you fly with a british squadron, the cross on the map will be replaced by a roundel.The Player label will be opposite your actual position in the squadron. The Flight info (which RB does not currently deal with) is there in preparation for CM2. If the squadron has more than 18 pilots/planes in it, it will also display the 2 squadron staff positions, CO and adjutant (or whatever title is appropriate). I will probably make the rank a ComboBox instead (textbox with an arrow and a list to select from)

Squadron Aircraft Detail Screen

This is output from an actual campgnXX.dat file.So I had a bad mission...(Well, actually all the other pilots had a bad mission,. They couldn't keep their ruddy planes out of the dirt. 6 Morane 'N' bit the dust, but that is poor comfort.)