I spent a day bringing my listings up-to-date (or mostly so). Some of the binders were full to bursting, which necessitated adding more binders - my total for MWIF is now 28 binders, with 11 of them 3 inch binders and the rest a mix of 1, 1.5, and 2 inch binders. I still haven't tapped out my supply of old binders from previous projects; I have over a dozen more empty ones available.
With so many binders, and hundreds of code modules, an index to identify what is where is essential. I also update the size of each module as part of this process, just so I have a tangible measure progress. I am now at 286,000 lines of code, up from 258,000 the last time I did this exercise (April 24, 2008). That works out to a
net increase of 80+ lines of code a day. What isn't measured here are the deleted lines of code or those that are modified. Also, changes to the forms commonly have no effect on lines of code. Instead, Delphi stores them in DFM files (an internal Delphi format, not Pascal).
The major changes in the past 6 months that are visible in this 'analysis' are the 30+ new PhaseXXXX modules. Those collect all the branching logic for changing to a new phase into separate modules, one per phase. This structure lets me clearly handle changes in which major power is making decisions and keeping everyone informed for multiple player games. It will also make modifications to the sequence of play in support of PBEM, vastly simpler to do.
Here is my Binder Index (bold text is the name of the binder with a subtotal for # of lines of code):
====
Main (8,400)
Split (100)
Loan (100)
ChooseCarrier (550)
Distance (250)
DropOff (300)
OverStacked (250)
PickHQ (250)
PickSeaArea (150)
PlaneRole (250)
Reorganize (450)
SBLosses (300)
Section (500)
SelectUnits (1000)
USWar (150)
CAP (300)
AirDistance (200)
AirTransportLand (100)
UnitDialog (550)
MWIF Control (17,850)
Digressions (1100)
CentralControls (550)
WhoNeedsToDecide (750)
GameInProgress (3450)
GameControls (1600)
MessageControl (150)
Password (50)
PhaseControlProcs (1800)
SeqOfPlay (1400)
SimControl (5700)
SwitchPlayer (50)
WIFMessageID (1250)
NetPlay & PBEM (1,050)
Chat (400)
NewMessage (150)
NetData (200)
SendTo (200)
WIFMessage (100)
PBEM Design (10 pages)
PBEM Standing Orders (20 pages)
Loading MWIF & Saved Games (9,650)
BitmapProcs (250)
Cursors (50)
LoadStatus (200)
MWIFLoadBitmaps (900)
AggRiverBitmaps (300)
SavedSetups (650)
GameSaveRestore (7,050)
PaginateUnits (250)
Beginning (Game) Processing Sequence (19,700)
SplashScreen (650)
Start (1600)
Scenario (400)
OptionalRules (500)
OptionalRulesDescriptions (2600)
Player (850)
Bid (550)
GameData (2950)
Alternate (150)
ChangeControl (550)
InitGameVar (150)
TimeDate (100)
Politics (600)
SetupData (5450)
SetupGroups (450)
SetupUnitTypes (1300)
USEntryPool (850)
Beginning of Turn: Forms, Processing, & Phases (14,350)
LendLeaseAir (1100)
Scrap (2150)
Setup (3200)
StartChits (50)
FortHexside (200)
BreakDown (300)
SpecialSetupRules (100)
Lending (450)
Initiative (400)
MoveFirst (100)
WIFWeather (350)
WeatherReport (200)
DOWMajors (450)
DOWMinors (400)
WIFUSEntryAction (800)
Pact (1200)
PactOD (50)
PactMarkerMove (500)
PactMarkers (100)
Reserves (200)
AddMinorUnits (100)
DOWAlign (200)
Action (750)
ActionLimits (150)
PhaseObject (50)
PhaseReinforcements (650)
PhaseLending (150)
Impulse Phases (21,350)
PhaseDOW (1700)
PhaseChooseAction (150)
PhasePortAttack (2050)
PhaseNavalAir (200)
PhaseNavalMovement (300)
PhaseNavalCombatA (150)
PhaseNavalCombatD (150)
PhaseStrategicBombing (1900)
PhaseCarpetBombing (1900)
PhaseGroundStrike (1900)
PhaseRailMovement (200)
PhaseLandMovement (250)
PhaseAirTransport (2000)
PhaseUnloadLandUnits (150)
PhaseInvasion (150)
PhaseParadrop (1750)
PhaseLandCombatDeclaration (200)
PhaseNotional (200)
PhaseEmergencyHQSupply (200)
PhaseShoreBombardmentD (150)
PhaseShoreBombardmentA (150)
PhaseHQSupportD (150)
PhaseHQSupportA (150)
PhaseGroundSupport (2150)
PhaseLandCombatResolution (650)
PhaseAirRebase (200)
PhaseAirReorganization (1800)
PhaseHQReorganization (200)
PhaseNavalReorganization (200)
PhaseEndOfTurn (250)
AirMissionsProcs (400)
NavalCombatProcs (150)
End of Turn Phases & Forms (6,400)
Phase Partisans (450)
PhaseEntry (200)
PhaseUSEntry (150)
PhaseProductionPlanning (0)
PhaseStayAtSeaA (200)
PhaseStayAtSeaD (200)
PhaseReturnToBaseA (200)
PhaseReturnToBaseD (200)
PhaseUseOil (100)
PhaseFinalReorganization (150)
PhaseBreakDown (100)
PhaseNavalRepair (150)
PhaseProduction (0)
PhaseReform (100)
PhaseIntelligence (0)
PhaseUkraine (0)
PhaseConquest (50)
PhaseMinorSupport (100)
PhasePeace (100)
PhaseVichy (100)
PhaseLiberation (150)
PhaseSurrender (50)
PhaseFactoryDestruction (250)
PhaseVictory (200)
PhaseGameEnd (50)
Partisans (450)
UseOil (1000)
Broken (100)
Reform (250)
Conquest (500)
Vichy (850)
Game Record Logs (33,250)
RecordLogIDs (550)
RecordLogVar (550)
RecordLogRecords (5100)
RecordLogIn (6900)
RecordLogOut (6400)
RecordLogPrep (450)
RecordLogSetVar (200)
RecordLogSet (6550)
RecordLogUse (5200)
UseGRLProcs (1350)
Supply (3,400)
Supply (200)
DetermineSupply (1200)
SupplyLinks (900)
SupplySearches (1100)
Stacking (11,700)
Stack (3750)
MoveStack (7700)
StackProcs (100)
CVPClasses (150)
Movement & Combat (18,900)
AirAttack (1500)
AirCombat (4400)
AntiAir (600)
AntiAirCombat (650)
ChartLandCombat (250)
CommitSubs (150)
DestroyFactory (100)
UnitJudgment (650)
IgnoreNotional (150)
LandCombat (3100)
LandCombatHex (1200)
NavalCombat (1000)
NavalCombatIncludeType (650)
NavalCombatResults (1450)
NavalInterception (350)
Surprise (50)
SurprisePoints (1250)
TwoD10 (200)
USNavalCombat (150)
NavalCombatTables (450)
CombatResultsTables (600)
Maps, Resources, Factories, Production, & Trade (24,650)
Coast (150)
GlobalMap (1950)
GlobeLegend (200)
HexList (1100)
HexListProcs (100)
MapCSV (2200)
Maps (3800)
MapTable (850)
SeaArea (1300)
SeaBoxes (50)
BuildPoint (50)
Captured (250)
Factory (1050)
NewTrade (200)
Production (2350)
ProductionData (50)
ProductionUndo (100)
Resource (1650)
ResourceProduction (3550)
ResourceTrace (50)
SaveBuild (350)
SaveOil (350)
Site (800)
Trade (1500)
TradeResource (250)
Units (30,300)
WIFUnits (7950)
UnitProcs (1100)
Air (3100)
Land (2450)
Naval (2200)
Special (650)
UnitTable (2550)
MajorCountry (150)
MPGroup (250)
Country (9650)
Commitment (50)
Leader (200) - MWIF Product 2
Player Interface & Information Forms (22,500)
PlayerInterfaceControl (300)
MapCreateDestroy (50)
MapDisplayControls (50)
MapVList (600)
MouseCommands (2200)
Note (200)
ScreenLayout (2950)
ScreenLList (500)
Undo (300)
UnitMenuProcs (1500)
UnitResolution (50)
Flyouts (550)
NavalReviewDetails (1700)
NavalReviewSummary (2050)
TaskForceDetails (50)
TaskForceSummary (150)
ActiveForms (50)
AirReserves (250)
CntList (800)
ConvoyInfo (350)
Dice (200)
DiceProcs (400)
GameAbout (50)
PlayerInterfaceSettings (150)
Place (1700)
ProcessForms (1050)
Pool (800)
Relations (450)
UnitPanel (250)
Victory (550)
ViewUnits (550)
WIFUSEntry (1250)
SelectableUnits (450)
Messages, Tutorials, & Filters (6,450)
HelpMessage (350)
MessageNoYes (50)
MessageOK (150)
MessageYesNoCancel (50)
WIFMessage (100)
Tutorial Design (10 pages)
IntroTutorials (250)
Tutorials (100)
OptionalRulesHelp (400)
IntroTut (100)
SimpleMessage (50)
HexFilter (100)
LoadFilter (150)
PFilter (50)
SaveFilter (100)
UFilter (3450)
UnitDataSelFilter (50)
UnitViewerFilter (950)
AI Opponent (2,300)
AIMajorPower (350)
AIDecisionMaker (450)
AIGrandStrategist (100)
AIManufacturingCouncil (150)
AICommanderInChief (150)
AIForeignLiaison (100)
AIJointChiefs (150)
AIAdmiralty (300)
AIAirMarshal (200)
AIFieldMarshal (350)
AI Strategic Plans (297 pages)
Common Decisions (94 pages)
China (4 pages)
Commonwealth (48 pages)
France (19 pages)
Germany (36 pages)
Italy (29 pages)
Japan (16 pages)
USA (25 pages)
USSR (26 pages)
Variables & Strings (6,000)
BitmapVar (200)
InProgressVar (350)
InterfaceVar (100)
PackageVar (150)
RigidVar (1150)
SetupVar (50)
StaticVar (800)
UnitDrawVar (850)
WIFGlobals (100)
ResStrings (2150)
AIVar (50)
AirMissionVar (50)
WIFCustom (5,550)
MapArea (350)
HexArea (2200)
UnitStackViewer (1000)
UnitDataDef (550)
UnitDataProcs (1250)
UnitPicture (100)
UnitPictureProcs (100)
WIFCustom External Procedures (6,400)
UnitDataProcs (1250)
UnitPictureProcs (50)
GameMap (100)
GameMapArea (3350)
GameStackViewer (1100)
RailLines (400)
MapLabel (150)
Tools (10,000)
Arrow (300)
CustDlg (50)
Dialog (100)
DirDlg (100)
DispGrid (100)
DragList (600)
EVerify (550)
FixedCheckListBox (100)
FixedListView (100)
KbdCtrl (100)
LastUsed (600)
ListDlg (400)
MesgDlg (100)
Name (150)
NumDlg (150)
Popup (100)
Random (150)
RealDlg (150)
Search (50)
SimpleGrid (550)
SingInst (50)
Sort (50)
Stored (1850)
StrDlg (150)
StrList (50)
Table (2100)
TableCmn (800)
TBox (200)
TxtDsp (100)
WaitDlg (150)
