public void RequestStatChange(MyEntityStat stat)
		{
            List<StatInfo> changedStats = new List<StatInfo>();
            changedStats.Add(new StatInfo() { StatId = stat.StatId, Amount = stat.Value });	// Regen left not used

            MyMultiplayer.RaiseStaticEvent(s => MyEntityStatComponent.OnStatChangedRequest, Entity.EntityId, changedStats);
		}
        public virtual void Init(MyObjectBuilder_Base objectBuilder, MyEntityStat parentStat)
        {
            m_parentStat = parentStat;

            var builder = objectBuilder as MyObjectBuilder_EntityStatRegenEffect;

            if (builder == null)
            {
                return;
            }

            Debug.Assert(builder.Interval > 0f);
            if (builder.Interval <= 0f)
            {
                return;
            }

            m_amount        = builder.TickAmount;
            m_interval      = builder.Interval;
            m_maxRegenRatio = builder.MaxRegenRatio;
            m_minRegenRatio = builder.MinRegenRatio;
            m_duration      = builder.Duration - (builder.AliveTime / 1000);

            ResetRegenTime();
        }
		public void RequestStatChange(MyEntityStat stat)
		{
			EntityStatChangedMsg msg = new EntityStatChangedMsg();
			msg.EntityId = Entity.EntityId;
			msg.ChangedStats = new List<StatInfo>();

			msg.ChangedStats.Add(new StatInfo() { StatId = stat.StatId, Amount = stat.Value });	// Regen left not used

			MySession.Static.SyncLayer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request);
		}
Пример #4
0
            public MyGuiControlStat(MyEntityStat stat, Vector2 position, Vector2 size, MyGuiDrawAlignEnum originAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)
				: base(position: position, size: size, originAlign: originAlign)
            {
				Debug.Assert(stat != null);
				m_stat = stat;
				if(m_stat != null)
				{
					m_stat.OnStatChanged += UpdateStatText;
				}
            }
Пример #5
0
            public MyGuiControlStat(MyEntityStat stat, Vector2 position, Vector2 size, MyGuiDrawAlignEnum originAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)
				: base(position: position, size: size, originAlign: originAlign)
            {
				Debug.Assert(stat != null);
				m_stat = stat;
                var vecColor = m_stat.StatDefinition.GuiDef.CriticalColorFrom;
                m_criticalValueColorFrom = new Color(vecColor.X, vecColor.Y, vecColor.Z);
                vecColor = m_stat.StatDefinition.GuiDef.CriticalColorTo;
                m_criticalValueColorTo = new Color(vecColor.X, vecColor.Y, vecColor.Z);
				if(m_stat != null)
				{
					m_stat.OnStatChanged += UpdateStatControl;
				}
            }
Пример #6
0
 public virtual void Init(MyObjectBuilder_Base objectBuilder, MyEntityStat parentStat)
 {
     this.m_parentStat = parentStat;
     MyObjectBuilder_EntityStatRegenEffect effect = objectBuilder as MyObjectBuilder_EntityStatRegenEffect;
     if ((effect != null) && (effect.Interval > 0f))
     {
         this.m_amount = effect.TickAmount;
         this.m_interval = effect.Interval;
         this.m_maxRegenRatio = effect.MaxRegenRatio;
         this.m_minRegenRatio = effect.MinRegenRatio;
         this.m_duration = effect.Duration - (effect.AliveTime / 1000f);
         this.ResetRegenTime();
     }
 }
            public MyGuiControlStat(MyEntityStat stat, Vector2 position, Vector2 size, MyGuiDrawAlignEnum originAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)
				: base(position: position, size: size, originAlign: originAlign)
            {
				Debug.Assert(stat != null);
				m_stat = stat;
                var vecColor = m_stat.StatDefinition.GuiDef.CriticalColorFrom;
                m_criticalValueColorFrom = new Color(vecColor.X, vecColor.Y, vecColor.Z);
                vecColor = m_stat.StatDefinition.GuiDef.CriticalColorTo;
                m_criticalValueColorTo = new Color(vecColor.X, vecColor.Y, vecColor.Z);
				if(m_stat != null)
				{
					m_stat.OnStatChanged += UpdateStatControl;
                    m_stat.OnStatChanged += DisplayStatNotification;
                    m_outOfStatNotification = new MyHudNotification(MyCommonTexts.NotificationStatZero, disappearTimeMs: 1000, font: MyFontEnum.Red, level: MyNotificationLevel.Important);
                    m_outOfStatNotification.SetTextFormatArguments(m_stat.StatId.ToString());
				}
            }
		public virtual void Init(MyObjectBuilder_Base objectBuilder, MyEntityStat parentStat)
		{
			m_parentStat = parentStat;

			var builder = objectBuilder as MyObjectBuilder_EntityStatRegenEffect;

			if (builder == null)
				return;

			Debug.Assert(builder.Interval > 0f);
			if (builder.Interval <= 0f)
				return;

			m_amount = builder.TickAmount;
			m_interval = builder.Interval;
			m_maxRegenRatio = builder.MaxRegenRatio;
			m_minRegenRatio = builder.MinRegenRatio;
			m_duration = builder.Duration - builder.AliveTime;
		}
		private MyEntityStat AddStat(MyStringHash statId, MyObjectBuilder_EntityStat objectBuilder)
		{
			MyEntityStat stat = null;

			if (!m_stats.TryGetValue(statId, out stat))
			{
				stat = new MyEntityStat();
				stat.Init(objectBuilder);

				m_stats.Add(statId, stat);
			}
			else
				stat.ClearEffects();

			return stat;
		}
Пример #10
0
		public bool TryGetStat(MyStringHash statId, out MyEntityStat outStat)
		{
			return m_stats.TryGetValue(statId, out outStat);
		}
		private MyEntityStat AddStat(MyStringHash statId, MyObjectBuilder_EntityStat objectBuilder, bool forceNewValues = false)
		{
			MyEntityStat stat = null;

            if (m_stats.TryGetValue(statId, out stat))
            {
                if(!forceNewValues)
                    objectBuilder.Value = stat.CurrentRatio;

                stat.ClearEffects();
                m_stats.Remove(statId);
            }

            stat = new MyEntityStat();
            stat.Init(objectBuilder);

            m_stats.Add(statId, stat);

            return stat;
		}