Fixed, DECORATE parser: quoted actor string properties (like RenderStyle) were processed incorrectly.

Fixed(?), Update checker: in some cases incorrect update check result was displayed.
This commit is contained in:
MaxED 2016-02-26 22:06:42 +00:00 committed by spherallic
parent 586bab34e6
commit 73f650bf64
3 changed files with 41 additions and 56 deletions

View file

@ -559,7 +559,7 @@ namespace CodeImp.DoomBuilder.Config
//mxd. Marked as obsolete?
if(actor.HasPropertyWithValue("$obsolete"))
{
obsoletemessage = ZDTextParser.StripQuotes(actor.GetPropertyValueString("$obsolete", 0));
obsoletemessage = actor.GetPropertyValueString("$obsolete", 0, true);
obsolete = true;
color = 4; //red
}
@ -592,7 +592,7 @@ namespace CodeImp.DoomBuilder.Config
//mxd. Renderstyle
if(actor.HasPropertyWithValue("renderstyle") && !actor.HasProperty("$ignorerenderstyle"))
renderstyle = actor.GetPropertyValueString("renderstyle", 0).ToLower();
renderstyle = actor.GetPropertyValueString("renderstyle", 0, true).ToLower();
//mxd. Alpha
if(actor.HasPropertyWithValue("alpha"))

View file

@ -10,8 +10,9 @@ namespace CodeImp.DoomBuilder
{
internal static class UpdateChecker
{
private const string NO_UPDATE_REQUIRED = "Your version is up to date.";
private static BackgroundWorker worker;
private static string errordesc;
private static bool verbose;
internal static void PerformCheck(bool verbosemode)
@ -19,15 +20,7 @@ namespace CodeImp.DoomBuilder
// Update check already runing?
if(worker != null && worker.IsBusy)
{
if(verbosemode)
{
General.ShowWarningMessage("Update check is already running!", MessageBoxButtons.OK);
}
else
{
General.ErrorLogger.Add(ErrorType.Warning, "Update check is already running!");
General.MainWindow.ShowErrors();
}
if(verbosemode) General.ShowWarningMessage("Update check is already running!", MessageBoxButtons.OK);
return;
}
@ -45,7 +38,7 @@ namespace CodeImp.DoomBuilder
string updaterpath = Path.Combine(General.AppPath, "Updater.exe");
if(!File.Exists(updaterpath))
{
errordesc = "Update check failed: \"" + updaterpath + "\" does not exist!";
e.Result = "Update check failed: \"" + updaterpath + "\" does not exist!";
e.Cancel = true;
return;
}
@ -53,7 +46,7 @@ namespace CodeImp.DoomBuilder
string inipath = Path.Combine(General.AppPath, "Updater.ini");
if(!File.Exists(inipath))
{
errordesc = "Update check failed: \"" + inipath + "\" does not exist!";
e.Result = "Update check failed: \"" + inipath + "\" does not exist!";
e.Cancel = true;
return;
}
@ -61,7 +54,7 @@ namespace CodeImp.DoomBuilder
string url = GetDownloadUrl(inipath);
if(string.IsNullOrEmpty(url))
{
errordesc = "Update check failed: failed to get update url from Updater.ini!";
e.Result = "Update check failed: failed to get update url from Updater.ini!";
e.Cancel = true;
return;
}
@ -77,7 +70,7 @@ namespace CodeImp.DoomBuilder
{
if(stream == null)
{
errordesc = "Update check failed: failed to retrieve remote revision info.";
e.Result = "Update check failed: failed to retrieve remote revision info.";
e.Cancel = true;
return;
}
@ -90,7 +83,7 @@ namespace CodeImp.DoomBuilder
if(!int.TryParse(s, out remoterev))
{
errordesc = "Update check failed: failed to retrieve remote revision number.";
e.Result = "Update check failed: failed to retrieve remote revision number.";
e.Cancel = true;
return;
}
@ -103,7 +96,7 @@ namespace CodeImp.DoomBuilder
if(string.IsNullOrEmpty(changelog))
{
errordesc = "Update check failed: failed to retrieve changelog.";
e.Result = "Update check failed: failed to retrieve changelog.";
e.Cancel = true;
return;
}
@ -113,24 +106,20 @@ namespace CodeImp.DoomBuilder
}
else if(verbose)
{
errordesc = "Your version is up to date";
e.Result = NO_UPDATE_REQUIRED;
}
}
private static void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs runWorkerCompletedEventArgs)
private static void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
worker = null;
string errordesc = (e.Result != null ? e.Result.ToString() : string.Empty);
if(!string.IsNullOrEmpty(errordesc))
{
if(verbose)
{
General.ShowWarningMessage(errordesc, MessageBoxButtons.OK);
}
else
{
General.ErrorLogger.Add(ErrorType.Warning, errordesc);
General.MainWindow.ShowErrors();
}
else if(errordesc != NO_UPDATE_REQUIRED)
General.ErrorLogger.Add(ErrorType.Error, errordesc);
}
}
@ -178,47 +167,42 @@ namespace CodeImp.DoomBuilder
private static MemoryStream DownloadWebFile(string url)
{
// Open a data stream from the supplied URL
WebRequest webReq = WebRequest.Create(url);
WebResponse webResponse;
WebRequest request = WebRequest.Create(url);
WebResponse response;
try
{
webResponse = webReq.GetResponse();
response = request.GetResponse();
}
catch(WebException)
{
return null;
}
Stream dataStream = webResponse.GetResponseStream();
Stream source = response.GetResponseStream();
if(source == null) return null;
// Download the data in chuncks
byte[] dataBuffer = new byte[1024];
byte[] buffer = new byte[1024];
// Download the data
MemoryStream memoryStream = new MemoryStream();
MemoryStream result = new MemoryStream();
while(!General.MainWindow.IsDisposed)
{
// Let's try and read the data
int bytesFromStream = dataStream.Read(dataBuffer, 0, dataBuffer.Length);
if(bytesFromStream == 0)
{
// Download complete
break;
}
else
{
// Write the downloaded data
memoryStream.Write(dataBuffer, 0, bytesFromStream);
}
int numbytes = source.Read(buffer, 0, buffer.Length);
if(numbytes == 0) break; // Download complete
// Write the downloaded data
result.Write(buffer, 0, numbytes);
}
// Release resources
dataStream.Close();
source.Close();
// Rewind and return the stream
memoryStream.Position = 0;
return memoryStream;
result.Position = 0;
return result;
}
private static string GetDownloadUrl(string filename)

View file

@ -536,12 +536,13 @@ namespace CodeImp.DoomBuilder.ZDoom
/// <summary>
/// This returns a specific value of a specific property as a string. Returns an empty string when the propery does not have the specified value.
/// </summary>
public string GetPropertyValueString(string propname, int valueindex)
public string GetPropertyValueString(string propname, int valueindex) { return GetPropertyValueString(propname, valueindex, true); } //mxd. Added "stripquotes" parameter
public string GetPropertyValueString(string propname, int valueindex, bool stripquotes)
{
if(props.ContainsKey(propname) && (props[propname].Count > valueindex))
return props[propname][valueindex];
return (stripquotes ? ZDTextParser.StripQuotes(props[propname][valueindex]) : props[propname][valueindex]);
if(!skipsuper && (baseclass != null))
return baseclass.GetPropertyValueString(propname, valueindex);
return baseclass.GetPropertyValueString(propname, valueindex, stripquotes);
return "";
}
@ -550,11 +551,11 @@ namespace CodeImp.DoomBuilder.ZDoom
/// </summary>
public int GetPropertyValueInt(string propname, int valueindex)
{
string str = GetPropertyValueString(propname, valueindex);
string str = GetPropertyValueString(propname, valueindex, false);
//mxd. It can be negative...
if(str == "-" && props.Count > valueindex + 1)
str += GetPropertyValueString(propname, valueindex + 1);
if(str == "-" && props.Count > valueindex + 1)
str += GetPropertyValueString(propname, valueindex + 1, false);
int intvalue;
if(int.TryParse(str, NumberStyles.Integer, CultureInfo.InvariantCulture, out intvalue))
@ -567,11 +568,11 @@ namespace CodeImp.DoomBuilder.ZDoom
/// </summary>
public float GetPropertyValueFloat(string propname, int valueindex)
{
string str = GetPropertyValueString(propname, valueindex);
string str = GetPropertyValueString(propname, valueindex, false);
//mxd. It can be negative...
if(str == "-" && props.Count > valueindex + 1)
str += GetPropertyValueString(propname, valueindex + 1);
str += GetPropertyValueString(propname, valueindex + 1, false);
float fvalue;
if(float.TryParse(str, NumberStyles.Float, CultureInfo.InvariantCulture, out fvalue))
@ -660,7 +661,7 @@ namespace CodeImp.DoomBuilder.ZDoom
// Sprite forced?
if(HasPropertyWithValue("$sprite"))
{
string sprite = GetPropertyValueString("$sprite", 0); //mxd
string sprite = GetPropertyValueString("$sprite", 0, true); //mxd
if((sprite.Length > DataManager.INTERNAL_PREFIX.Length) &&
sprite.ToLowerInvariant().StartsWith(DataManager.INTERNAL_PREFIX)) return sprite; //mxd
if(General.Map.Data.GetSpriteExists(sprite)) return sprite; //mxd. Added availability check