コード例 #1
0
        public void OnVariableSet(DreamObject dreamObject, string varName, DreamValue value, DreamValue oldValue)
        {
            ParentType?.OnVariableSet(dreamObject, varName, value, oldValue);

            switch (varName)
            {
            case "name": {
                value.TryGetValueAsString(out string name);
                EntityUid entity = _atomManager.GetAtomEntity(dreamObject);
                if (!_entityManager.TryGetComponent(entity, out MetaDataComponent metaData))
                {
                    break;
                }

                metaData.EntityName = name;
                break;
            }

            case "desc": {
                value.TryGetValueAsString(out string desc);
                EntityUid entity = _atomManager.GetAtomEntity(dreamObject);
                if (!_entityManager.TryGetComponent(entity, out MetaDataComponent metaData))
                {
                    break;
                }

                metaData.EntityDescription = desc;
                break;
            }

            case "icon":
                _atomManager.UpdateAppearance(dreamObject, appearance => {
                    if (value.TryGetValueAsDreamResource(out DreamResource resource))
                    {
                        appearance.Icon = resource.ResourcePath;
                    }
                    else if (value.TryGetValueAsDreamObjectOfType(DreamPath.Icon, out DreamObject iconObject))
                    {
                        DreamMetaObjectIcon.DreamIconObject icon = DreamMetaObjectIcon.ObjectToDreamIcon[iconObject];

                        appearance.Icon = icon.Icon;
                        if (icon.State != null)
                        {
                            appearance.IconState = icon.State;
                        }
                        //TODO: If a dir is set, the icon will stay that direction. Likely will be a part of "icon generation" when that's implemented.
                        if (icon.Direction != null)
                        {
                            appearance.Direction = icon.Direction.Value;
                        }
                    }
                    else
                    {
                        appearance.Icon = null;
                    }
                });
コード例 #2
0
        public static DreamValue NativeProc_Width(DreamObject instance, DreamObject usr, DreamProcArguments arguments)
        {
            DreamMetaObjectIcon.DreamIconObject dreamIconObject = DreamMetaObjectIcon.ObjectToDreamIcon[instance];

            return(new DreamValue(dreamIconObject.Description.Width));
        }