public override bool ReadParams(Command cmd)
{
// get image URL
string urlString = cmd.Next();
if (String.IsNullOrEmpty(urlString))
{
return(false);
}
// if string starts with "++", load image from imgur
if (urlString.StartsWith("++"))
{
urlString = "http://i.imgur.com/" + urlString.Substring(2);
}
// prepend the protocol, if needed (assume http)
if (!urlString.StartsWith("http://", StringComparison.OrdinalIgnoreCase))
{
urlString = "http://" + urlString;
}
// validate the image URL
Uri url;
if (!Uri.TryCreate(urlString, UriKind.Absolute, out url))
{
Player.Message("DrawImage: Invalid URL given.");
return(false);
}
else if (!url.Scheme.Equals(Uri.UriSchemeHttp) && !url.Scheme.Equals(Uri.UriSchemeHttps))
{
Player.Message("DrawImage: Invalid URL given. Only HTTP and HTTPS links are allowed.");
return(false);
}
ImageUrl = url;
// Check if player gave optional second argument (palette name)
string paletteName = cmd.Next();
if (paletteName != null)
{
StandardBlockPalettes paletteType;
if (EnumUtil.TryParse(paletteName, out paletteType, true))
{
Palette = BlockPalette.GetPalette(paletteType);
}
else
{
Player.Message("DrawImage: Unrecognized palette \"{0}\". Available palettes are: \"{1}\"",
paletteName,
Enum.GetNames(typeof(StandardBlockPalettes)).JoinToString());
return(false);
}
}
else
{
// default to "Light" (lit single-layer) palette
Palette = BlockPalette.Light;
}
// All set
return(true);
}