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); }