示例#1
0
        public override void Init(MyComponentDefinitionBase definition)
        {
            base.Init(definition);

            MyEntityStatComponentDefinition entityStatDefinition = definition as MyEntityStatComponentDefinition;

            Debug.Assert(entityStatDefinition != null);

            if (entityStatDefinition == null || !entityStatDefinition.Enabled || MySession.Static == null ||
                (!entityStatDefinition.AvailableInSurvival && MySession.Static.SurvivalMode))
            {
                if (Sync.IsServer) // Only init scripts on server
                {
                    m_statActionsRequested = true;
                }
                return;
            }

            foreach (var statId in entityStatDefinition.Stats)
            {
                MyEntityStatDefinition statDefinition = null;
                if (!MyDefinitionManager.Static.TryGetDefinition(statId, out statDefinition))
                {
                    continue;
                }

                if (!statDefinition.Enabled ||
                    (!statDefinition.EnabledInCreative && MySession.Static.CreativeMode) ||
                    (!statDefinition.AvailableInSurvival && MySession.Static.SurvivalMode))
                {
                    continue;
                }

                var          nameHash     = MyStringHash.GetOrCompute(statDefinition.Name);
                MyEntityStat existingStat = null;
                if (m_stats.TryGetValue(nameHash, out existingStat) && existingStat.StatDefinition.Id.SubtypeId == statDefinition.Id.SubtypeId)
                {
                    continue;
                }

                var builder = new MyObjectBuilder_EntityStat();
                builder.SubtypeName = statId.SubtypeName;
                builder.MaxValue    = 1.0f;
                builder.Value       = statDefinition.DefaultValue / statDefinition.MaxValue;
                AddStat(nameHash, builder);
            }

            if (Sync.IsServer)  // Only init scripts on server
            {
                Debug.Assert(m_scripts.Count == 0);
                foreach (var scriptName in entityStatDefinition.Scripts)
                {
                    InitScript(scriptName);
                }
                m_statActionsRequested = true;
            }
        }
示例#2
0
        public override void Init(MyComponentDefinitionBase definition)
        {
            base.Init(definition);
            MyEntityStatComponentDefinition definition2 = definition as MyEntityStatComponentDefinition;

            if (((definition2 == null) || (!definition2.Enabled || (MySession.Static == null))) || (!definition2.AvailableInSurvival && MySession.Static.SurvivalMode))
            {
                if (Sync.IsServer)
                {
                    this.m_statActionsRequested = true;
                }
            }
            else
            {
                foreach (MyDefinitionId id in definition2.Stats)
                {
                    MyEntityStatDefinition definition3 = null;
                    if (MyDefinitionManager.Static.TryGetDefinition <MyEntityStatDefinition>(id, out definition3) && (definition3.Enabled && ((definition3.EnabledInCreative || !MySession.Static.CreativeMode) && (definition3.AvailableInSurvival || !MySession.Static.SurvivalMode))))
                    {
                        MyStringHash orCompute = MyStringHash.GetOrCompute(definition3.Name);
                        MyEntityStat stat      = null;
                        if (!this.m_stats.TryGetValue(orCompute, out stat) || (stat.StatDefinition.Id.SubtypeId != definition3.Id.SubtypeId))
                        {
                            MyObjectBuilder_EntityStat objectBuilder = new MyObjectBuilder_EntityStat {
                                SubtypeName = id.SubtypeName,
                                MaxValue    = 1f,
                                Value       = definition3.DefaultValue / definition3.MaxValue
                            };
                            this.AddStat(orCompute, objectBuilder, false);
                        }
                    }
                }
                if (Sync.IsServer)
                {
                    foreach (string str in definition2.Scripts)
                    {
                        this.InitScript(str);
                    }
                    this.m_statActionsRequested = true;
                }
            }
        }