public static CaBase LoadIni(string strValue) { CaBase cab = null; switch (int.Parse(strValue.Split(',')[0])) { case 0: // knSetResourcesTriggerAction #if false cab = new SetResourcesTriggerAction(); #endif break; case 1: // knSetAllowedUnitsTriggerAction cab = new SetAllowedUnitsTriggerAction(); break; case 2 : // knEcomTriggerAction cab = new EcomTriggerAction(); break; case 3: // knSetObjectiveTriggerAction cab = new SetObjectiveTriggerAction(); break; case 4: // knSetNextMissionTriggerAction cab = new SetNextMissionTriggerAction(); break; case 5: // knEndMissionTriggerAction cab = new EndMissionTriggerAction(); break; case 6: // knWaitTriggerAction cab = new WaitTriggerAction(); break; case 7 : // knSetSwitchTriggerAction cab = new SetSwitchTriggerAction(); break; case 8: // knSetPlayerControlsTriggerAction #if false cab = new SetPlayerControlsTriggerAction(); #endif break; case 9: // knPreserveTriggerTriggerAction cab = new PreserveTriggerTriggerAction(); break; case 10: // knCenterViewTriggerAction cab = new CenterViewTriggerAction(); break; case 11: // knPanViewTriggerAction #if false cab = new PanViewTriggerAction(); #endif break; case 12: // knDefogAreaTriggerAction cab = new DefogAreaTriggerAction(); break; case 13: // knMoveUnitTriggerAction #if false cab = new MoveUnitTriggerAction(); #endif break; case 14: // knTargetUnitTriggerAction #if false cab = new TargetUnitTriggerAction(); #endif break; // knCreateUnitGroupTriggerAction // knCreateUnitAtAreaTriggerAction case 15: // This can be either action. If the referenced trigger has a // name prefix of __cuaa, then it is CreateUnitAtAreaTriggerAction. cab = new CreateUnitGroupTriggerAction(); cab.FromSaveString(strValue); if (((CaTypeUnitGroup)cab.GetTypes()[0]).ToString().StartsWith("__cuaa")) { cab = new CreateUnitAtAreaTriggerAction(); } else { cab = new CreateUnitGroupTriggerAction(); } break; case 16: // knHuntTriggerAction cab = new HuntTriggerAction(); break; case 17: // knCreateRandomUnitGroupTriggerAction cab = new CreateRandomUnitGroupTriggerAction(); break; case 18: // knAlliesTriggerAction cab = new AlliesTriggerAction(); break; case 19: // knStartCountdownTimerTriggerAction cab = new StartCountdownTimerTriggerAction(); break; case 20: // knModifyCountdownTimerTriggerAction cab = new ModifyCountdownTimerTriggerAction(); break; case 21: // knRepairTriggerAction cab = new RepairTriggerAction(); break; case 22: // knEnableReplicatorTriggerAction cab = new EnableReplicatorTriggerAction(); break; case 23: // knModifyCreditsTriggerAction cab = new ModifyCreditsTriggerAction(); break; case 24: // knModifyCounterTriggerAction cab = new ModifyCounterTriggerAction(); break; case 25: // knMoveUnitsInAreaTriggerAction cab = new MoveUnitsInAreaTriggerAction(); break; case 26: // knSetFormalObjectiveTextTriggerAction cab = new SetFormalObjectiveTextTriggerAction(); break; case 27: // knSetFormalObjectiveStatusTriggerAction cab = new SetFormalObjectiveStatusTriggerAction(); break; case 28: // knShowObjectivesTriggerAction cab = new ShowObjectivesTriggerAction(); break; case 29: // knSetFormalObjectiveInfoTriggerAction cab = new SetFormalObjectiveInfoTriggerAction(); break; case 30: // knCutSceneTriggerAction cab = new CutSceneTriggerAction(); break; case 31: // knJumpToMissionTriggerAction cab = new JumpToMissionTriggerAction(); break; case 32: // knModifyPvarTriggerAction cab = new ModifyPvarTriggerAction(); break; case 33: // knSetPvarTextTriggerAction cab = new SetPvarTextTriggerAction(); break; case 34: // knShowAlertTriggerAction cab = new ShowAlertTriggerAction(); break; case 35: // knSetAllowedUpgradesTriggerAction cab = new SetAllowedUpgradesTriggerAction(); break; case 36: // knSetUpgradesTriggerAction cab = new SetUpgradesTriggerAction(); break; } if (cab != null) { cab.FromSaveString(strValue); } return cab; }
public Ini.Section GetIniSection(bool fDemoCheckTrigger) { // If asked create a trigger causes mission failure if running on // demo version side1 bool fModifiedSave = m_fModified; Trigger tgrDemo = new Trigger(); if (fDemoCheckTrigger) { // condition: persistent variable $demo is exactly 1 // action: end mission: lose // Condition tgrDemo.Sides = SideToMask(Side.side1); TestPvarCondition cdn = new TestPvarCondition(); cdn.Active = true; CaTypeText catText = (CaTypeText)cdn.GetTypes()[0]; catText.Text = "$demo"; CaTypeQualifiedNumber catQualNum = (CaTypeQualifiedNumber)cdn.GetTypes()[1]; catQualNum.Qualifier = Qualifier.Exactly; catQualNum.Value = 1; tgrDemo.Conditions.Add(cdn); // Action EndMissionTriggerAction acn = new EndMissionTriggerAction(); acn.Active = true; CaTypeWinLose catWinLose = (CaTypeWinLose)acn.GetTypes()[0]; catWinLose.Result = WinLoseType.Lose; tgrDemo.Actions.Add(acn); // Add this trigger temporarily // Move it up to first place AddTrigger(tgrDemo); while (MoveUpTrigger(Side.side1, tgrDemo) != -1) ; } // Save triggers Ini.Section sec = new Ini.Section("Triggers"); sec.Add(new Ini.Property("Count", m_alsTriggers.Count.ToString())); foreach (Trigger tgr in m_alsTriggers) { // Calc per side indexes string strT = ""; for (int n = 0; n < m_aalsSideTriggers.Length; n++) { ArrayList als = (ArrayList)m_aalsSideTriggers[n]; int j = als.IndexOf(tgr); if (j != -1) { if (strT != "") strT += ","; string strType = "k" + ((Side)n).ToString(); strT += strType + ":" + j.ToString(); } } sec.Add(new Ini.Property("T", strT)); // Save trigger contents tgr.AddIniProperties(sec); } // Restore order if (fDemoCheckTrigger) { m_fModified = fModifiedSave; RemoveTrigger(tgrDemo); } return sec; }