示例#1
0
        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;
        }