/
ColdCore-3.0a9.02/
ColdCore-3.0a9.02/src/
new object $realm_settings: $foundation;

var $root created_on = 854028767;
var $root defined_settings = #[["map-position", #[['get, ['get_realm_setting]], ['parse, ['parse_map_position]], ['format, ['format_map_position]]]], ["propagate", #[['get, ['get_realm_setting]], ['parse, ['is_propagator]], ['format, ['format_propagator]]]]];
var $root flags = ['variables, 'methods, 'code, 'core];
var $root inited = 1;
var $root managed = [$realm_settings];
var $root manager = $realm_settings;
var $root settings = #[["propagate", 0], ["map-position", 0]];

root method .core_realm_settings() {
    .set_setting("map-position", definer(), "none");
    .set_setting("propagate", definer(), "none");
};

public method .format_map_position() {
    arg value;
    
    if (!value)
        return "none";
    return "window %l, %l tag %l on %l".format(@value);
};

public method .get_realm_setting() {
    arg name, definer, @args;
    var v, t;
    
    t = this();
    if (.has_ancestor($place)) {
        if ((.settings()).contains(name))
            return .get_local_setting(name, definer);
        return (.realm()).get_realm_setting(name, definer, @args);
    } else if ((.settings()).contains(name)) {
        return .get_local_setting(name, definer);
    } else {
        return ((.parents())[1]).get_realm_setting(name, definer, @args);
    }
};

public method .parse_map_position() {
    arg value;
    
    if (value in ["n", "no", "none", "0"])
        return 0;
    if (type(value) == 'list)
        value = value.join();
    value = (| (value.match_pattern("window *,* tag * on *")).mmap('trim) |);
    if (!value)
        throw(~parse, "Syntax: window <x>,<y> tag <tag> on <mapobject>");
    return (> [toint(value[1]), toint(value[2]), value[3], $object_lib.to_dbref(value[4])] <);
};

public method .will_propagate() {
    return .get_setting("propagate", definer());
};