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; } });
public static DreamValue NativeProc_Width(DreamObject instance, DreamObject usr, DreamProcArguments arguments) { DreamMetaObjectIcon.DreamIconObject dreamIconObject = DreamMetaObjectIcon.ObjectToDreamIcon[instance]; return(new DreamValue(dreamIconObject.Description.Width)); }