示例#1
0
 public void ChangeValue(MegaloScriptModel model,
                         MegaloScriptVariableReferenceData playerData, MegaloScriptVariableReferenceData playerAddOrRemoveData)
 {
     FilterType        = MegaloScriptPlayerFilterType.PlayerMask;
     Player            = playerData;
     PlayerAddOrRemove = playerAddOrRemoveData;
 }
示例#2
0
        public void SetAsDefault()
        {
            Player            = MegaloScriptVariableReferenceData.Player;
            PlayerAddOrRemove = MegaloScriptVariableReferenceData.Custom;

            FilterType = MegaloScriptPlayerFilterType.NoOne;
        }
示例#3
0
        public void SetAsEveryone()
        {
            Player            = MegaloScriptVariableReferenceData.Player;
            PlayerAddOrRemove = MegaloScriptVariableReferenceData.Custom;

            FilterType = MegaloScriptPlayerFilterType.Everyone;
        }
示例#4
0
        public void SetAsEnemiesOfTeam()
        {
            Player            = MegaloScriptVariableReferenceData.Player;
            PlayerAddOrRemove = MegaloScriptVariableReferenceData.Custom;

            FilterType = MegaloScriptPlayerFilterType.EnemiesOfTeam;
        }
示例#5
0
        public void SetAsOff()
        {
            Numeric1 = MegaloScriptVariableReferenceData.Custom;
            Numeric2 = MegaloScriptVariableReferenceData.Custom;
            Timer    = MegaloScriptVariableReferenceData.Timer;

            Type = MegaloScriptWidgetMeterType.Off;
        }
示例#6
0
        public void ChangeValue(MegaloScriptModel model, MegaloScriptPlayerFilterType filterType)
        {
            Contract.Requires(filterType != MegaloScriptPlayerFilterType.PlayerMask, "Wrong ChangeValue overload");

            FilterType        = filterType;
            Player            = MegaloScriptVariableReferenceData.Player;
            PlayerAddOrRemove = MegaloScriptVariableReferenceData.Custom;
        }
示例#7
0
        public void SetAsNone()
        {
            mRadius = MegaloScriptVariableReferenceData.Custom;
            mLength = MegaloScriptVariableReferenceData.Custom;
            mTop    = MegaloScriptVariableReferenceData.Custom;
            mBottom = MegaloScriptVariableReferenceData.Custom;

            ShapeType = MegaloScriptShapeType.None;
        }
示例#8
0
        public void SetAsPlayerMask(MegaloScriptVariableReferenceData player, MegaloScriptVariableReferenceData addOrRemove)
        {
            Contract.Requires(player.ReferenceKind == MegaloScriptVariableReferenceType.Player);
            Contract.Requires(addOrRemove.ReferenceKind == MegaloScriptVariableReferenceType.Custom);

            Player            = player;
            PlayerAddOrRemove = addOrRemove;

            FilterType = MegaloScriptPlayerFilterType.PlayerMask;
        }
示例#9
0
        public void SetAsTimer(MegaloScriptVariableReferenceData timer)
        {
            Contract.Requires(timer.ReferenceKind == MegaloScriptVariableReferenceType.Timer);

            Numeric1 = MegaloScriptVariableReferenceData.Custom;
            Numeric2 = MegaloScriptVariableReferenceData.Custom;
            Timer    = timer;

            Type = MegaloScriptWidgetMeterType.Timer;
        }
示例#10
0
        public void SetAsNumeric(MegaloScriptVariableReferenceData value, MegaloScriptVariableReferenceData maxValue)
        {
            Contract.Requires(value.ReferenceKind == MegaloScriptVariableReferenceType.Custom);
            Contract.Requires(maxValue.ReferenceKind == MegaloScriptVariableReferenceType.Custom);

            Numeric1 = value;
            Numeric2 = maxValue;
            Timer    = MegaloScriptVariableReferenceData.Timer;

            Type = MegaloScriptWidgetMeterType.Numeric;
        }
示例#11
0
        public void SetAsSphere(MegaloScriptVariableReferenceData radius)
        {
            Contract.Requires(radius.ReferenceKind == MegaloScriptVariableReferenceType.Custom);

            mRadius = radius;
            mLength = MegaloScriptVariableReferenceData.Custom;
            mTop    = MegaloScriptVariableReferenceData.Custom;
            mBottom = MegaloScriptVariableReferenceData.Custom;

            NotifyPropertyChanged(kRadiusChanged);
            ShapeType = MegaloScriptShapeType.Sphere;
        }
示例#12
0
        public void SetFromVarReference(MegaloScriptVariableReferenceData value)
        {
            Contract.Requires(value.ReferenceKind == MegaloScriptVariableReferenceType.Team ||
                              value.ReferenceKind == MegaloScriptVariableReferenceType.Player);

            switch (value.ReferenceKind)
            {
            case MegaloScriptVariableReferenceType.Team: TargetType = MegaloScriptTargetType.Team; break;

            case MegaloScriptVariableReferenceType.Player: TargetType = MegaloScriptTargetType.Player; break;
            }
            Value = value;
        }
示例#13
0
        public override void Serialize(MegaloScriptModel model, IO.BitStream s)
        {
            s.Stream(ref mTargetType, 2, MegaloScriptTargetTypeBitStreamer.Instance);

            switch (TargetType)
            {
            case MegaloScriptTargetType.Team: mValue.SerializeTeam(model, s); break;

            case MegaloScriptTargetType.Player: mValue.SerializePlayer(model, s); break;

            case MegaloScriptTargetType.None: mValue = MegaloScriptVariableReferenceData.Null; break;
            }
        }
示例#14
0
        protected override void SerializeValue <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s)
        {
            s.StreamAttributeEnum("targetType", ref mTargetType);

            switch (TargetType)
            {
            case MegaloScriptTargetType.Team: mValue.SerializeTeam(model, s); break;

            case MegaloScriptTargetType.Player: mValue.SerializePlayer(model, s); break;

            case MegaloScriptTargetType.None: mValue = MegaloScriptVariableReferenceData.Null; break;
            }
        }
示例#15
0
        /// <summary></summary>
        /// <param name="refKind">The kind of variable we're this reference</param>
        /// <param name="refMemberName">The variable's reference type</param>
        /// <param name="dataValue">Actual 'data' value for the variable reference</param>
        /// <param name="dataTypeName">Optional type info for <paramref name="dataValue"/></param>
        /// <returns></returns>
        public MegaloScriptVariableReferenceData NewVarReference(MegaloScriptVariableReferenceType refKind,
                                                                 string refMemberName, int dataValue = TypeExtensions.kNone,
                                                                 string dataTypeName = null)
        {
            Contract.Requires(!string.IsNullOrEmpty(refMemberName));

            MegaloScriptVariableReferenceData result;

            Proto.MegaloScriptProtoVariableReferenceMember member;
            MegaloScriptVariableReferenceData.Initialize(this,
                                                         out result, refKind, out member, refMemberName, dataTypeName);

            result.Data = dataValue;

            return(result);
        }
示例#16
0
        public void SetAsCylinder(MegaloScriptVariableReferenceData radius,
                                  MegaloScriptVariableReferenceData top, MegaloScriptVariableReferenceData bottom)
        {
            Contract.Requires(radius.ReferenceKind == MegaloScriptVariableReferenceType.Custom);
            Contract.Requires(top.ReferenceKind == MegaloScriptVariableReferenceType.Custom);
            Contract.Requires(bottom.ReferenceKind == MegaloScriptVariableReferenceType.Custom);

            mRadius = radius;
            mLength = MegaloScriptVariableReferenceData.Custom;
            mTop    = top;
            mBottom = bottom;

            NotifyPropertyChanged(kRadiusChanged);
            NotifyPropertyChanged(kTopChanged);
            NotifyPropertyChanged(kBottomChanged);
            ShapeType = MegaloScriptShapeType.Cylinder;
        }
示例#17
0
        /// <summary></summary>
        /// <param name="refKind">The kind of variable we're this reference</param>
        /// <param name="refMemberName">The variable's reference type</param>
        /// <param name="indexName">Actual 'data' value for the variable reference</param>
        /// <param name="dataTypeName">Optional type info for <paramref name="indexName"/></param>
        /// <returns></returns>
        public MegaloScriptVariableReferenceData NewVarReferenceWithIndexData(MegaloScriptVariableReferenceType refKind,
                                                                              string refMemberName, string indexName,
                                                                              string dataTypeName = null)
        {
            Contract.Requires(!string.IsNullOrEmpty(refMemberName));
            Contract.Requires(indexName != null);

            MegaloScriptVariableReferenceData result;

            Proto.MegaloScriptProtoVariableReferenceMember member;
            MegaloScriptVariableReferenceData.Initialize(this,
                                                         out result, refKind, out member, refMemberName, dataTypeName);

            Contract.Assert(member.HasDataValue, "Member has no data field, let alone index data");

            result.Data = GetTargetIndexFromName(member.ValueType.IndexTarget, indexName);

            return(result);
        }
示例#18
0
        public void SetAsBox(MegaloScriptVariableReferenceData width, MegaloScriptVariableReferenceData length,
                             MegaloScriptVariableReferenceData top, MegaloScriptVariableReferenceData bottom)
        {
            Contract.Requires(width.ReferenceKind == MegaloScriptVariableReferenceType.Custom);
            Contract.Requires(length.ReferenceKind == MegaloScriptVariableReferenceType.Custom);
            Contract.Requires(top.ReferenceKind == MegaloScriptVariableReferenceType.Custom);
            Contract.Requires(bottom.ReferenceKind == MegaloScriptVariableReferenceType.Custom);

            mRadius = width;
            mLength = length;
            mTop    = top;
            mBottom = bottom;

            NotifyPropertyChanged(kRadiusChanged);
            NotifyPropertyChanged(kLengthChanged);
            NotifyPropertyChanged(kTopChanged);
            NotifyPropertyChanged(kBottomChanged);
            ShapeType = MegaloScriptShapeType.Box;
        }
示例#19
0
        /// <summary></summary>
        /// <param name="refKind">The kind of variable we're this reference</param>
        /// <param name="refMemberName">The variable's reference type</param>
        /// <param name="enumMemberName">Actual 'data' value for the variable reference</param>
        /// <param name="dataTypeName">Optional type info for <paramref name="enumMemberName"/></param>
        /// <returns></returns>
        public MegaloScriptVariableReferenceData NewVarReferenceWithEnumData(MegaloScriptVariableReferenceType refKind,
                                                                             string refMemberName, string enumMemberName,
                                                                             string dataTypeName = null)
        {
            Contract.Requires(!string.IsNullOrEmpty(refMemberName));
            Contract.Requires(!string.IsNullOrEmpty(enumMemberName));

            MegaloScriptVariableReferenceData result;

            Proto.MegaloScriptProtoVariableReferenceMember member;
            MegaloScriptVariableReferenceData.Initialize(this,
                                                         out result, refKind, out member, refMemberName, dataTypeName);

            Contract.Assert(member.HasDataValue, "Member has no data field, let alone enum data");

            var id_resolving_ctxt = new Proto.MegaloScriptEnum.EnumNameResolvingContext(Database, member.EnumValueType);

            result.Data = Proto.MegaloScriptEnum.EnumNameResolvingContext.IdResolver(id_resolving_ctxt, enumMemberName);

            return(result);
        }
示例#20
0
        public void SetAsTeam(MegaloScriptVariableReferenceData team)
        {
            Contract.Requires(team.ReferenceKind == MegaloScriptVariableReferenceType.Team);

            SetFromVarReference(team);
        }
示例#21
0
        public void SetAsPlayer(MegaloScriptVariableReferenceData player)
        {
            Contract.Requires(player.ReferenceKind == MegaloScriptVariableReferenceType.Player);

            SetFromVarReference(player);
        }
示例#22
0
 public void Nullify()
 {
     Type  = MegaloScriptTokenAbstractType.None;
     Value = MegaloScriptVariableReferenceData.Null;
 }
示例#23
0
 public virtual void CopyFrom(MegaloScriptToken other)
 {
     Type  = other.mType;
     Value = other.Value;
 }