コード例 #1
0
        public IntegerVariableDefinition(NetworkPriority priority, IntegerReference initialValue)
        {
            Contract.Requires <ArgumentNullException>(initialValue != null);
            Contract.Requires(priority.IsDefined());

            _priority = (byte)priority;
            _value    = initialValue;
        }
コード例 #2
0
ファイル: Parameters.cs プロジェクト: MegaMech/nitrogen
        private object ReadParameter(BitStream s, ParameterDefinition paramDefinition)
        {
            IParameter param = null;

            switch (paramDefinition.ParameterType)
            {
            case ParameterType.Float: { param = new FloatValue(); } break;

            case ParameterType.EntityFilter: { param = new EntityFilter(); } break;

            case ParameterType.GenericReference: { param = new GenericReference(); } break;

            case ParameterType.IntegerReference: { param = new IntegerReference(); } break;

            case ParameterType.Meter: { param = new MeterData(); } break;

            case ParameterType.ObjectReference: { param = new ObjectReference(); } break;

            case ParameterType.PlayerReference: { param = new PlayerReference(); } break;

            case ParameterType.Shape: { param = new BoundaryData(); } break;

            case ParameterType.StringReference: { param = new StringReference(); } break;

            case ParameterType.StringReferenceOneToken: { param = new StringReferenceOneToken(); } break;

            case ParameterType.StringReferenceTwoTokens: { param = new StringReferenceTwoTokens(); } break;

            case ParameterType.StringReferenceThreeTokens: { param = new StringReferenceThreeTokens(); } break;

            case ParameterType.TargetReference: { param = new TargetReference(); } break;

            case ParameterType.TeamReference: { param = new TeamReference(); } break;

            case ParameterType.TimerReference: { param = new TimerReference(); } break;

            case ParameterType.VirtualTrigger: { param = new VirtualTrigger(); } break;

            case ParameterType.WaypointIcon: { param = new WaypointIconData(); } break;

            case ParameterType.Coordinates3d: { param = new Coordinates3d(); } break;

            case ParameterType.Boolean:
                return(s.Reader.ReadBit());

            default:
                object value = 0;
                StreamIntegerValue(s, paramDefinition, ref value);
                return(value);
            }

            if (param != null)
            {
                param.SerializeObject(s, paramDefinition);
            }

            return(param);
        }
コード例 #3
0
        private GameType CreateMegaloGametype(GameType gametype, uint time)
        {
            // heuheuheuheuheu
            gametype.TimeLimit = time - 1;

            // string table her dongle so hard
            gametype.Name = new StringTable(string.Format("{0}/{1} - Yrs2013", _cityA, _cityB));

            // setup teams
            #region setup teams
            gametype.TeamsEnabled = true;
            gametype.TeamChanging = TeamChangingMode.Disabled;
            #endregion
            #region global variable declaration
            var currentTeamIndex = gametype.Script.GlobalVariables.Integers.Count;
            gametype.Script.GlobalVariables.Integers.Add(new IntegerVariableDefinition(0, NetworkPriority.High));

            var currentDataPointIndex = gametype.Script.GlobalVariables.Integers.Count;
            gametype.Script.GlobalVariables.Integers.Add(new IntegerVariableDefinition(0, NetworkPriority.High));

            var updateNextDataPoint = gametype.Script.GlobalVariables.Integers.Count;
            gametype.Script.GlobalVariables.Integers.Add(new IntegerVariableDefinition(1, NetworkPriority.High));

            var updateTimerIndex = gametype.Script.GlobalVariables.Timers.Count;
            gametype.Script.GlobalVariables.Timers.Add(new TimerVariableDefinition(0));
            #endregion
            #region trait creation
            var traitIndex = gametype.MegaloTraits.Count;
            gametype.MegaloTraits.Add(new MegaloTraits
            {
                WaypointVisible  = HUDVisibility.VisibleToEveryone,
                DamageMultiplier = (Modifier)1.6,
                PlayerScale      = (Modifier)2.0,
                JumpHeight       = (Modifier)2.0
            });
            #endregion

            // ************************************************************************************
            // To All Megalo Script Under Here ****************************************************
            // ************************************************************************************

            var initTrigger = new MegaloTrigger();
            #region trigger_data
            {
                Megalo.SetMegaloAction("var_operation", initTrigger,
                                       new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("result", new GenericReference(TimerReference.ForGlobal(updateTimerIndex))),
                    Megalo.CreateCondition("value", new GenericReference(IntegerReference.ForConstant(5))),
                    Megalo.CreateCondition("operation", OperationType.Set)
                });

                Megalo.SetMegaloAction("timer_set_rate", initTrigger,
                                       new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("timer", TimerReference.ForGlobal(updateTimerIndex)),
                    Megalo.CreateCondition("rate", 5)
                });

                gametype.Script.EntryPoints.InitTrigger = initTrigger;
                gametype.Script.Triggers.Add(initTrigger);
            }
            #endregion

            var trySetTraitsToTeam0 = new MegaloTrigger {
                EnumType = TriggerEnumType.EnumPlayers
            };
            #region trigger_data
            {
                var setPlayerTraits = Megalo.SetMegaloAction("player_set_traits", trySetTraitsToTeam0, new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("player", PlayerReference.ForGlobal(PlayerVariableType.CurrentPlayer)),
                    Megalo.CreateCondition("traits_index", traitIndex)
                });

                Megalo.SetMegaloCondition("compare", trySetTraitsToTeam0, setPlayerTraits, new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("value1", new GenericReference(IntegerReference.ForGlobal(currentTeamIndex))),
                    Megalo.CreateCondition("value2", new GenericReference(IntegerReference.ForConstant(0))),
                    Megalo.CreateCondition("comparison", ComparisonType.Equal)
                });

                Megalo.SetMegaloCondition("compare", trySetTraitsToTeam0, setPlayerTraits, new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("value1", new GenericReference(TeamReference.ForPlayerOwnerTeam(PlayerVariableType.CurrentPlayer))),
                    Megalo.CreateCondition("value2", new GenericReference(TeamReference.ForGlobal(TeamVariableType.Direct, 0))),
                    Megalo.CreateCondition("comparison", ComparisonType.Equal)
                }, 1);

                gametype.Script.Triggers.Add(trySetTraitsToTeam0);
            }
            #endregion

            var trySetTraitsToTeam1 = new MegaloTrigger {
                EnumType = TriggerEnumType.EnumPlayers
            };
            #region trigger_data
            {
                var setPlayerTraits = Megalo.SetMegaloAction("player_set_traits", trySetTraitsToTeam1, new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("player", PlayerReference.ForGlobal(PlayerVariableType.CurrentPlayer)),
                    Megalo.CreateCondition("traits_index", traitIndex)
                });

                Megalo.SetMegaloCondition("compare", trySetTraitsToTeam1, setPlayerTraits, new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("value1", new GenericReference(IntegerReference.ForGlobal(currentTeamIndex))),
                    Megalo.CreateCondition("value2", new GenericReference(IntegerReference.ForConstant(1))),
                    Megalo.CreateCondition("comparison", ComparisonType.Equal)
                });

                Megalo.SetMegaloCondition("compare", trySetTraitsToTeam1, setPlayerTraits, new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("value1", new GenericReference(TeamReference.ForPlayerOwnerTeam(PlayerVariableType.CurrentPlayer))),
                    Megalo.CreateCondition("value2", new GenericReference(TeamReference.ForGlobal(TeamVariableType.Direct, 1))),
                    Megalo.CreateCondition("comparison", ComparisonType.Equal)
                }, 1);

                gametype.Script.Triggers.Add(trySetTraitsToTeam1);
            }
            #endregion

            var updateDataPointEntryTrigger = new MegaloTrigger();
            #region trigger_data
            {
                // start action
                var resetNeedUpdateDataPoint = Megalo.SetMegaloAction("var_operation", updateDataPointEntryTrigger,
                                                                      new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("result", new GenericReference(IntegerReference.ForGlobal(updateNextDataPoint))),
                    Megalo.CreateCondition("value", new GenericReference(IntegerReference.ForConstant(0))),
                    Megalo.CreateCondition("operation", OperationType.Set)
                });

                var index = 0;
                foreach (var dataPoint in _session.DataPoints)
                {
                    var constructedMegaloTrigger = new MegaloTrigger();
                    {
                        MegaloAction startAction;
                        var          winner = "";
                        if (dataPoint.CityARating > dataPoint.CityBRating)
                        {
                            winner = _session.CityA;

                            startAction = Megalo.SetMegaloAction("var_operation", constructedMegaloTrigger,
                                                                 new List <KeyValuePair <string, object> >
                            {
                                Megalo.CreateCondition("result",
                                                       new GenericReference(IntegerReference.ForGlobal(currentTeamIndex))),
                                Megalo.CreateCondition("value",
                                                       new GenericReference(IntegerReference.ForConstant(0))),
                                Megalo.CreateCondition("operation", OperationType.Set)
                            });
                        }
                        else if (dataPoint.CityARating < dataPoint.CityBRating)
                        {
                            winner = _session.CityB;

                            startAction = Megalo.SetMegaloAction("var_operation", constructedMegaloTrigger,
                                                                 new List <KeyValuePair <string, object> >
                            {
                                Megalo.CreateCondition("result",
                                                       new GenericReference(IntegerReference.ForGlobal(currentTeamIndex))),
                                Megalo.CreateCondition("value",
                                                       new GenericReference(IntegerReference.ForConstant(1))),
                                Megalo.CreateCondition("operation", OperationType.Set)
                            });
                        }
                        else
                        {
                            winner = _session.CityA;

                            startAction = Megalo.SetMegaloAction("var_operation", constructedMegaloTrigger,
                                                                 new List <KeyValuePair <string, object> >
                            {
                                Megalo.CreateCondition("result",
                                                       new GenericReference(IntegerReference.ForGlobal(currentTeamIndex))),
                                Megalo.CreateCondition("value",
                                                       new GenericReference(IntegerReference.ForConstant(0))),
                                Megalo.CreateCondition("operation", OperationType.Set)
                            });
                        }



                        var str           = new StringReference(gametype.MegaloStrings.Add(string.Format("Current Winner Is: {0}!", winner)));
                        var effectMessage = new MegaloAction("chud_message");
                        effectMessage.Arguments.Set("target", TargetReference.All);
                        effectMessage.Arguments.Set("sound_index", -1);
                        effectMessage.Arguments.Set("text", str);
                        constructedMegaloTrigger.Actions.Add(effectMessage);

                        // call if swag is gucci
                        Megalo.SetMegaloCondition("compare", constructedMegaloTrigger, startAction,
                                                  new List <KeyValuePair <string, object> >
                        {
                            Megalo.CreateCondition("value1", new GenericReference(IntegerReference.ForGlobal(currentDataPointIndex))),
                            Megalo.CreateCondition("value2", new GenericReference(IntegerReference.ForConstant((short)index))),
                            Megalo.CreateCondition("comparison", ComparisonType.Equal)
                        });
                    }
                    var callConstructedMegaloTrigger = MegaloAction.ForTriggerCall(constructedMegaloTrigger);
                    updateDataPointEntryTrigger.Actions.Add(callConstructedMegaloTrigger);

                    index++;
                }

                Megalo.SetMegaloAction("var_operation", updateDataPointEntryTrigger,
                                       new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("result", new GenericReference(IntegerReference.ForGlobal(currentDataPointIndex))),
                    Megalo.CreateCondition("value", new GenericReference(IntegerReference.ForConstant(1))),
                    Megalo.CreateCondition("operation", OperationType.Add)
                });

                Megalo.SetMegaloCondition("compare", updateDataPointEntryTrigger, resetNeedUpdateDataPoint,
                                          new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("value1", new GenericReference(IntegerReference.ForGlobal(updateNextDataPoint))),
                    Megalo.CreateCondition("value2", new GenericReference(IntegerReference.ForConstant(1))),
                    Megalo.CreateCondition("comparison", ComparisonType.Equal)
                });

                gametype.Script.Triggers.Add(updateDataPointEntryTrigger);
            }
            #endregion

            var dealWithTheTimerTrigger = new MegaloTrigger();
            #region trigger_data
            {
                // check timer has expired, if it has, set a variable and start it again
                var setTimer = Megalo.SetMegaloAction("var_operation", dealWithTheTimerTrigger,
                                                      new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("result", new GenericReference(TimerReference.ForGlobal(updateTimerIndex))),
                    Megalo.CreateCondition("value", new GenericReference(IntegerReference.ForConstant(3))),
                    Megalo.CreateCondition("operation", OperationType.Set)
                });

                Megalo.SetMegaloAction("timer_set_rate", dealWithTheTimerTrigger,
                                       new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("timer", TimerReference.ForGlobal(updateTimerIndex)),
                    Megalo.CreateCondition("rate", 5)
                });

                // set variable
                Megalo.SetMegaloAction("var_operation", dealWithTheTimerTrigger,
                                       new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("result", new GenericReference(IntegerReference.ForGlobal(updateNextDataPoint))),
                    Megalo.CreateCondition("value", new GenericReference(IntegerReference.ForConstant(1))),
                    Megalo.CreateCondition("operation", OperationType.Set)
                });

                Megalo.SetMegaloCondition("timer_is_zero", dealWithTheTimerTrigger, setTimer,
                                          new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("timer", TimerReference.ForGlobal(updateTimerIndex))
                });

                gametype.Script.Triggers.Add(dealWithTheTimerTrigger);
            }
            #endregion

            var roundEndingTimer = new MegaloTrigger();
            #region trigger_data
            {
                var endRound = Megalo.SetMegaloAction("round_end", roundEndingTimer);

                Megalo.SetMegaloCondition("timer_is_zero", roundEndingTimer, endRound,
                                          new List <KeyValuePair <string, object> >
                {
                    Megalo.CreateCondition("timer", TimerReference.RoundTimer)
                });

                gametype.Script.Triggers.Add(roundEndingTimer);
            }
            #endregion

            return(gametype);
        }
コード例 #4
0
 public IntegerVariableDefinition(IntegerReference initialValue)
     : this(NetworkPriority.High, initialValue)
 {
 }
コード例 #5
0
 public TimerVariableDefinition(IntegerReference initialValue)
 {
     Contract.Requires <ArgumentNullException>(initialValue != null);
     _value = initialValue;
 }