Rename this again

Rename this again

--- StageManager/MainForm.Designer.cs
+++ StageManager/MainForm.Designer.cs
@@ -312,21 +312,21 @@
 			// changeDirectoryToolStripMenuItem
 			//
 			this.changeDirectoryToolStripMenuItem.Name = "changeDirectoryToolStripMenuItem";
-			this.changeDirectoryToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.changeDirectoryToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.changeDirectoryToolStripMenuItem.Text = "Change directory...";
 			this.changeDirectoryToolStripMenuItem.Click += new System.EventHandler(this.changeDirectoryToolStripMenuItem_Click);
 			//
 			// loadCustomSSSToolStripMenuItem
 			//
 			this.loadCustomSSSToolStripMenuItem.Name = "loadCustomSSSToolStripMenuItem";
-			this.loadCustomSSSToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.loadCustomSSSToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.loadCustomSSSToolStripMenuItem.Text = "Manually load GCT codeset";
 			this.loadCustomSSSToolStripMenuItem.Click += new System.EventHandler(this.loadCustomSSSToolStripMenuItem_Click);
 			//
 			// toolStripMenuItem3
 			//
 			this.toolStripMenuItem3.Name = "toolStripMenuItem3";
-			this.toolStripMenuItem3.Size = new System.Drawing.Size(185, 6);
+			this.toolStripMenuItem3.Size = new System.Drawing.Size(216, 6);
 			//
 			// currentStageToolStripMenuItem
 			//
@@ -334,7 +334,7 @@
             this.exportpacrelToolStripMenuItem,
             this.deletepacrelToolStripMenuItem});
 			this.currentStageToolStripMenuItem.Name = "currentStageToolStripMenuItem";
-			this.currentStageToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.currentStageToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.currentStageToolStripMenuItem.Text = "Current stage";
 			//
 			// currentSongToolStripMenuItem
@@ -343,7 +343,7 @@
             this.exportbrstmToolStripMenuItem,
             this.deletebrstmToolStripMenuItem});
 			this.currentSongToolStripMenuItem.Name = "currentSongToolStripMenuItem";
-			this.currentSongToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.currentSongToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.currentSongToolStripMenuItem.Text = "Current song";
 			//
 			// common5scselmapToolStripMenuItem
@@ -352,7 +352,7 @@
             this.saveCommon5scselmapToolStripMenuItem,
             this.exportAllMiscData80ToolStripMenuItem});
 			this.common5scselmapToolStripMenuItem.Name = "common5scselmapToolStripMenuItem";
-			this.common5scselmapToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.common5scselmapToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.common5scselmapToolStripMenuItem.Text = "common5/sc_selmap";
 			//
 			// saveCommon5scselmapToolStripMenuItem
@@ -372,26 +372,26 @@
 			// saveInfopacToolStripMenuItem
 			//
 			this.saveInfopacToolStripMenuItem.Name = "saveInfopacToolStripMenuItem";
-			this.saveInfopacToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.saveInfopacToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.saveInfopacToolStripMenuItem.Text = "Save info.pac";
 			this.saveInfopacToolStripMenuItem.Click += new System.EventHandler(this.saveInfopacToolStripMenuItem_Click);
 			//
 			// toolStripMenuItem4
 			//
 			this.toolStripMenuItem4.Name = "toolStripMenuItem4";
-			this.toolStripMenuItem4.Size = new System.Drawing.Size(185, 6);
+			this.toolStripMenuItem4.Size = new System.Drawing.Size(216, 6);
 			//
 			// exportAllToolStripMenuItem
 			//
 			this.exportAllToolStripMenuItem.Name = "exportAllToolStripMenuItem";
-			this.exportAllToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.exportAllToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.exportAllToolStripMenuItem.Text = "Export all stages";
 			this.exportAllToolStripMenuItem.Click += new System.EventHandler(this.exportAllToolStripMenuItem_Click);
 			//
 			// exitToolStripMenuItem
 			//
 			this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
-			this.exitToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+			this.exitToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
 			this.exitToolStripMenuItem.Text = "Exit";
 			this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
 			//
@@ -424,7 +424,7 @@
 			this.useTextureConverterToolStripMenuItem.CheckOnClick = true;
 			this.useTextureConverterToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.useTextureConverterToolStripMenuItem.Name = "useTextureConverterToolStripMenuItem";
-			this.useTextureConverterToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.useTextureConverterToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.useTextureConverterToolStripMenuItem.Text = "Use Texture Converter";
 			this.useTextureConverterToolStripMenuItem.Click += new System.EventHandler(this.useTextureConverterToolStripMenuItem_Click);
 			//
@@ -432,21 +432,21 @@
 			//
 			this.useAFixedStageListToolStripMenuItem.CheckOnClick = true;
 			this.useAFixedStageListToolStripMenuItem.Name = "useAFixedStageListToolStripMenuItem";
-			this.useAFixedStageListToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
-			this.useAFixedStageListToolStripMenuItem.Text = "List all stages (using Custom SSS + ASL if any)";
+			this.useAFixedStageListToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
+			this.useAFixedStageListToolStripMenuItem.Text = "Use stage list from GCT codeset (SSS+ASL)";
 			this.useAFixedStageListToolStripMenuItem.Click += new System.EventHandler(this.useAFixedStageListToolStripMenuItem_Click);
 			//
 			// backgroundColorToolStripMenuItem
 			//
 			this.backgroundColorToolStripMenuItem.Name = "backgroundColorToolStripMenuItem";
-			this.backgroundColorToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.backgroundColorToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.backgroundColorToolStripMenuItem.Text = "Right panel BG color...";
 			this.backgroundColorToolStripMenuItem.Click += new System.EventHandler(this.backgroundColorToolStripMenuItem_Click);
 			//
 			// toolStripMenuItem5
 			//
 			this.toolStripMenuItem5.Name = "toolStripMenuItem5";
-			this.toolStripMenuItem5.Size = new System.Drawing.Size(312, 6);
+			this.toolStripMenuItem5.Size = new System.Drawing.Size(295, 6);
 			//
 			// loadStagepacsToolStripMenuItem
 			//
@@ -454,7 +454,7 @@
 			this.loadStagepacsToolStripMenuItem.CheckOnClick = true;
 			this.loadStagepacsToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.loadStagepacsToolStripMenuItem.Name = "loadStagepacsToolStripMenuItem";
-			this.loadStagepacsToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.loadStagepacsToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.loadStagepacsToolStripMenuItem.Text = "Load stage .pacs";
 			this.loadStagepacsToolStripMenuItem.Click += new System.EventHandler(this.loadStagepacsToolStripMenuItem_Click);
 			//
@@ -464,7 +464,7 @@
 			this.renderModels.CheckOnClick = true;
 			this.renderModels.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.renderModels.Name = "renderModels";
-			this.renderModels.Size = new System.Drawing.Size(315, 22);
+			this.renderModels.Size = new System.Drawing.Size(298, 22);
 			this.renderModels.Text = "Render models";
 			//
 			// loadbrstmsToolStripMenuItem
@@ -473,13 +473,13 @@
 			this.loadbrstmsToolStripMenuItem.CheckOnClick = true;
 			this.loadbrstmsToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.loadbrstmsToolStripMenuItem.Name = "loadbrstmsToolStripMenuItem";
-			this.loadbrstmsToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.loadbrstmsToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.loadbrstmsToolStripMenuItem.Text = "Load .brstms";
 			//
 			// separator1
 			//
 			this.separator1.Name = "separator1";
-			this.separator1.Size = new System.Drawing.Size(312, 6);
+			this.separator1.Size = new System.Drawing.Size(295, 6);
 			//
 			// moduleFileDirectoryToolStripMenuItem
 			//
@@ -487,7 +487,7 @@
             this.sameToolStripMenuItem,
             this.moduleToolStripMenuItem});
 			this.moduleFileDirectoryToolStripMenuItem.Name = "moduleFileDirectoryToolStripMenuItem";
-			this.moduleFileDirectoryToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.moduleFileDirectoryToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.moduleFileDirectoryToolStripMenuItem.Text = "Module file directory";
 			//
 			// sameToolStripMenuItem
@@ -512,7 +512,7 @@
 			this.useFullrelNamesToolStripMenuItem.CheckOnClick = true;
 			this.useFullrelNamesToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.useFullrelNamesToolStripMenuItem.Name = "useFullrelNamesToolStripMenuItem";
-			this.useFullrelNamesToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.useFullrelNamesToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.useFullrelNamesToolStripMenuItem.Text = "Use full .rel names";
 			this.useFullrelNamesToolStripMenuItem.Click += new System.EventHandler(this.useFullrelNamesToolStripMenuItem_Click);
 			//
@@ -522,14 +522,14 @@
 			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.CheckOnClick = true;
 			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.Name = "differentrelsForAlternateStagesPM36ToolStripMenuItem";
-			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.Text = "Different .rels for alternate stages (PM 3.6)";
 			this.differentrelsForAlternateStagesPM36ToolStripMenuItem.Click += new System.EventHandler(this.differentrelsForAlternateStagesPM36ToolStripMenuItem_Click);
 			//
 			// separator2
 			//
 			this.separator2.Name = "separator2";
-			this.separator2.Size = new System.Drawing.Size(312, 6);
+			this.separator2.Size = new System.Drawing.Size(295, 6);
 			//
 			// selmapMarkPreviewToolStripMenuItem
 			//
@@ -537,7 +537,7 @@
 			this.selmapMarkPreviewToolStripMenuItem.CheckOnClick = true;
 			this.selmapMarkPreviewToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
 			this.selmapMarkPreviewToolStripMenuItem.Name = "selmapMarkPreviewToolStripMenuItem";
-			this.selmapMarkPreviewToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.selmapMarkPreviewToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.selmapMarkPreviewToolStripMenuItem.Text = "Portrait previews";
 			this.selmapMarkPreviewToolStripMenuItem.Click += new System.EventHandler(this.selmapMarkPreviewToolStripMenuItem_Click);
 			//
@@ -550,7 +550,7 @@
             this.selmapMarkFormatCMPR,
             this.selmapMarkFormatExisting});
 			this.selmapMarkFormat.Name = "selmapMarkFormat";
-			this.selmapMarkFormat.Size = new System.Drawing.Size(315, 22);
+			this.selmapMarkFormat.Size = new System.Drawing.Size(298, 22);
 			this.selmapMarkFormat.Text = "SelmapMark format";
 			//
 			// selmapMarkFormatIA4
@@ -588,12 +588,12 @@
 			// separator3
 			//
 			this.separator3.Name = "separator3";
-			this.separator3.Size = new System.Drawing.Size(312, 6);
+			this.separator3.Size = new System.Drawing.Size(295, 6);
 			//
 			// frontStnameGenerationFontToolStripMenuItem
 			//
 			this.frontStnameGenerationFontToolStripMenuItem.Name = "frontStnameGenerationFontToolStripMenuItem";
-			this.frontStnameGenerationFontToolStripMenuItem.Size = new System.Drawing.Size(315, 22);
+			this.frontStnameGenerationFontToolStripMenuItem.Size = new System.Drawing.Size(298, 22);
 			this.frontStnameGenerationFontToolStripMenuItem.Text = "FrontStname font...";
 			this.frontStnameGenerationFontToolStripMenuItem.Click += new System.EventHandler(this.frontStnameGenerationFontToolStripMenuItem_Click);
 			//
@@ -919,6 +919,7 @@
 			this.portraitViewer1.AutoSSS = null;
 			this.portraitViewer1.Dock = System.Windows.Forms.DockStyle.Right;
 			this.portraitViewer1.Location = new System.Drawing.Point(471, 24);
+			this.portraitViewer1.ManualSSS = null;
 			this.portraitViewer1.Name = "portraitViewer1";
 			this.portraitViewer1.Size = new System.Drawing.Size(213, 477);
 			this.portraitViewer1.TabIndex = 2;


Fix MockDataProcessor

Fix MockDataProcessor

--- TicTacTubeCoreTest/Processors/MockDataProcessor.cs
+++ TicTacTubeCoreTest/Processors/MockDataProcessor.cs
@@ -6,7 +6,12 @@
 	public class MockDataProcessor : BaseDataProcessor
 	{
 		public int ExecutionCount { get; protected set; }
-		public override IFileSource Execute(IFileSource fileSoure) => fileSoure;
+
+		public override IFileSource Execute(IFileSource fileSoure)
+		{
+			ExecutionCount++;
+			return fileSoure;
+		}

 		public void ResetExecutionCount() => ExecutionCount = 0;
 	}


Update TradeOfferUserHandler.cs

Update TradeOfferUserHandler.cs

--- SteamBot/TradeOfferUserHandler.cs
+++ SteamBot/TradeOfferUserHandler.cs
@@ -80,7 +80,7 @@

         public override void OnTradeOfferInEscrow(TradeOffer tradeOffer)
         {
-            Log.Warn("Trade offer #{0} is in escrow until {2}.", tradeOffer.Id, tradeOffer.EscrowEndDate);
+            Log.Warn("Trade offer #{0} is in escrow until {1}.", tradeOffer.Id, tradeOffer.EscrowEndDate);
         }

         public override void OnTradeOfferConfirmed(TradeOffer tradeOffer)


#343 Quoted Tweet is now properly working with Extended Tweets containing 140 characters.

--- Tweetinvi.Controllers/Tweet/TweetQueryGenerator.cs
+++ Tweetinvi.Controllers/Tweet/TweetQueryGenerator.cs
@@ -79,17 +79,12 @@

             var text = queryParameters.Text;

-            if (queryParameters.QuotedTweet != null)
-            {
-                var quotedTweet = queryParameters.QuotedTweet;
-                if (quotedTweet.CreatedBy != null)
-                {
-                    text = text.TrimEnd();
-
-                    text += string.Format(" https://twitter.com/{0}/status/{1}",
-                        quotedTweet.CreatedBy.ScreenName,
-                        quotedTweet.Id.ToString(CultureInfo.InvariantCulture));
-                }
+            var useExtendedMode = _tweetinviSettingsAccessor.CurrentThreadSettings.TweetMode == TweetMode.Extended;
+            var quotedTweetUrl = GetQuotedTweetUrl(queryParameters);
+
+            if (!useExtendedMode && quotedTweetUrl != null)
+            {
+                text = text.TrimEnd() + " " + quotedTweetUrl;
             }

             var query = new StringBuilder(string.Format(Resources.Tweet_Publish, CleanupString(text)));
@@ -115,6 +110,11 @@
                 query.AddParameterToQuery("auto_populate_reply_metadata", queryParameters.AutoPopulateReplyMetadata);
                 query.AddParameterToQuery("tweet_mode", _tweetinviSettingsAccessor.CurrentThreadSettings.TweetMode?.ToString().ToLowerInvariant());

+                if (useExtendedMode && quotedTweetUrl != null)
+                {
+                    query.AddParameterToQuery("attachment_url", quotedTweetUrl);
+                }
+
                 if (queryParameters.MediaIds.Count > 0)
                 {
                     var mediaIdsParameter = string.Join("%2C", queryParameters.MediaIds.Select(x => x.ToString(CultureInfo.InvariantCulture)));
@@ -127,6 +127,18 @@
             return query.ToString();
         }

+        private string GetQuotedTweetUrl(IPublishTweetParameters parameters)
+        {
+            if (parameters.QuotedTweet.CreatedBy?.ScreenName == null)
+            {
+                return null;
+            }
+
+            return string.Format("https://twitter.com/{0}/status/{1}",
+                        parameters.QuotedTweet.CreatedBy.ScreenName,
+                        parameters.QuotedTweet.Id.ToString(CultureInfo.InvariantCulture));
+        }
+
         // Publish Retweet
         public string GetPublishRetweetQuery(ITweetDTO tweetDTO)
         {


Add unit test

Add unit test

--- UnitTestUsefullFunctions/UnitTestFunctionCrypto.cs
+++ UnitTestUsefullFunctions/UnitTestFunctionCrypto.cs
@@ -628,6 +628,15 @@
       Assert.AreEqual(result, expected);
     }

+    [TestMethod]
+    public void TestMethod_NTLM_N()
+    {
+      const string source = "N";
+      string expected = "344A4C52F4870D5D81B062E9F283F108";
+      string result = CryptoFunc.Ntlm(source);
+      Assert.AreEqual(result, expected);
+    }
+
     #endregion

   }


Add unit test

Add unit test

--- UnitTestUsefullFunctions/UnitTestFunctionCrypto.cs
+++ UnitTestUsefullFunctions/UnitTestFunctionCrypto.cs
@@ -411,6 +411,15 @@
       Assert.AreEqual(result, expected);
     }

+    [TestMethod]
+    public void TestMethod_NTLM_p()
+    {
+      const string source = "p";
+      string expected = "2468C466F4666005A06B2792513D98E8";
+      string result = CryptoFunc.Ntlm(source);
+      Assert.AreEqual(result, expected);
+    }
+
     #endregion

   }


プレイヤーの武器は EnegryChargeRate のテクノロジーによってチャージ速度が上がる

--- UnityProject/Assets/Scripts/Battle/PlayerWeapon.cs
+++ UnityProject/Assets/Scripts/Battle/PlayerWeapon.cs
@@ -23,6 +23,13 @@
 	public float MaxEnegry = 5;
 	public float BaseEnegryChargeRate = 2;

+	public float ChargeRateForTechnology {
+		get
+		{
+			return 1 + TechnologyManager.Instance.currentTechnologys[TechnologyType.EnegryChargeRate] * 0.1f;
+		}
+	}
+
 	float _currentEnergy = 0;
 	public float CurrentEnegry
 	{
@@ -44,7 +51,7 @@

 	void Update()
 	{
-		CurrentEnegry += BaseEnegryChargeRate * Time.deltaTime;
+		CurrentEnegry += BaseEnegryChargeRate * ChargeRateForTechnology * Time.deltaTime;
 	}

 	public void Shot()


Fixed ID card names

Fixed ID card names

--- UnityProject/Assets/Scripts/Equipment/Equipment.cs
+++ UnityProject/Assets/Scripts/Equipment/Equipment.cs
@@ -223,18 +223,19 @@
 		private void SpawnID(JobOutfit outFit)
 		{
 			GameObject idObj;
+			var realName = PlayerList.Instance.Get( gameObject ).Name;
 			if (outFit.jobType == JobType.CAPTAIN)
 			{
-				idObj = ItemFactory.Instance.SpawnIDCard(IDCardType.captain, outFit.jobType, outFit.allowedAccess, name, transform.parent);
+				idObj = ItemFactory.Instance.SpawnIDCard(IDCardType.captain, outFit.jobType, outFit.allowedAccess, realName, transform.parent);
 			}
 			else if (outFit.jobType == JobType.HOP || outFit.jobType == JobType.HOS || outFit.jobType == JobType.CMO || outFit.jobType == JobType.RD ||
 			         outFit.jobType == JobType.CHIEF_ENGINEER)
 			{
-				idObj = ItemFactory.Instance.SpawnIDCard(IDCardType.command, outFit.jobType, outFit.allowedAccess, name, transform.parent);
+				idObj = ItemFactory.Instance.SpawnIDCard(IDCardType.command, outFit.jobType, outFit.allowedAccess, realName, transform.parent);
 			}
 			else
 			{
-				idObj = ItemFactory.Instance.SpawnIDCard(IDCardType.standard, outFit.jobType, outFit.allowedAccess, name, transform.parent);
+				idObj = ItemFactory.Instance.SpawnIDCard(IDCardType.standard, outFit.jobType, outFit.allowedAccess, realName, transform.parent);
 			}

 			SetItem("id", idObj);


add client side script to loop through the kendo grid and force dirty

--- Web/Areas/Logistics/Views/Utilization/Index.cshtml
+++ Web/Areas/Logistics/Views/Utilization/Index.cshtml
@@ -200,6 +200,10 @@

+
+
+
+
     var selectedWoreda;
     function onSelect(e) {

@@ -237,7 +241,17 @@
     }

     saveUtilization = function(e) {
-
+
+        var entityGrid = $("").data("KendoGrid");
+        var data = entityGrid.dataSource.data();
+        var totalNumber = data.length;
+
+        for (var i=0;i<totalNumber;i++)
+        {
+            var currentDataItem = data[i];
+            currentDataItem.dirty = true;
+
+        }
         $("#RequisitionGridDetail").data("kendoGrid").saveChanges();

     };


Updated DBHost.

Updated DBHost.

--- Tests/Linq/Linq/ExtensionTests.cs
+++ Tests/Linq/Linq/ExtensionTests.cs
@@ -29,7 +29,7 @@
 		public void DatabaseName()
 		{
 			using (var db = new TestDbManager())
-				db.GetTable<Parent>().DatabaseName("BLToolkitData").ToList();
+				db.GetTable<Parent>().DatabaseName("TestData").ToList();
 		}

 		[Test]
@@ -44,7 +44,7 @@
 		{
 			using (var db = new TestDbManager())
 				db.GetTable<ParenTable>()
-					.DatabaseName("BLToolkitData")
+					.DatabaseName("TestData")
 					.OwnerName("dbo")
 					.TableName("Parent")
 					.ToList();


#349 - Order of procedures in ASLX file shouldn't matter
Procedure scripts are now initialised after all elements have been created.

git-svn-id: 53f3c0fc50e56599d49cd3470d1ba0222ad3846f@8017 4a90e977-6436-4932-9605-20e10c2b6fb3

--- WorldModel/WorldModel/GameLoader/ElementLoaders.cs
+++ WorldModel/WorldModel/GameLoader/ElementLoaders.cs
@@ -421,9 +421,8 @@
                         if (WorldModel.Elements.TryGetValue(ElementType.Delegate, type, out del))
                         {
                             Element proc = WorldModel.GetElementFactory(ElementType.Delegate).Create();
-                            // TO DO: These should be lazy loaded, so we can refer to other procedures that are defined later in the XML
                             proc.MetaFields[MetaFieldDefinitions.DelegateImplementation] = true;
-                            proc.Fields[FieldDefinitions.Script] = GameLoader.ScriptFactory.CreateScript(value, proc);
+                            proc.Fields.LazyFields.AddScript(FieldDefinitions.Script.Property, value);
                             current.Fields.Set(attribute, new DelegateImplementation(type, del, proc));
                         }
                         else


[#10333] Add length guard to attribute in TextLayoutBackendHandler.

--- Xwt.WPF/Xwt.WPFBackend/TextLayoutBackendHandler.cs
+++ Xwt.WPF/Xwt.WPFBackend/TextLayoutBackendHandler.cs
@@ -33,6 +33,7 @@
 using System.Windows.Media;
 using System.Windows;
 using System.Collections.Generic;
+using System.Collections.ObjectModel;

 namespace Xwt.WPFBackend
 {
@@ -259,7 +260,10 @@
 			else if (attribute is ColorTextAttribute)
 			{
 				var xa = (ColorTextAttribute)attribute;
-				FormattedText.SetForegroundBrush(new SolidColorBrush(xa.Color.ToWpfColor()), xa.StartIndex, xa.Count);
+				if (xa.StartIndex < FormattedText.Text.Length)
+				{
+					FormattedText.SetForegroundBrush(new SolidColorBrush(xa.Color.ToWpfColor()), xa.StartIndex, Math.Min(xa.Count, FormattedText.Text.Length - xa.StartIndex));
+				}
 			}
 			else if (attribute is StrikethroughTextAttribute)
 			{


update Client for default IP of ProxyServer

--- _Out/Server/ClientBin/source/Assets/_NF/NFStart.cs
+++ _Out/Server/ClientBin/source/Assets/_NF/NFStart.cs
@@ -171,6 +171,10 @@
                         int nPort = NFStart.Instance.GetFocusNet().nWorldPort;

                         NFNet xNet = new NFNet();
+                        if(strWorpdIP == "127.0.0.1")
+                        {
+                            strWorpdIP = strTargetIP;
+                        }
                         xNet.strWorldIP = strWorpdIP;
                         xNet.strKey = strWorpdKey;
                         xNet.strAccount = strAccount;


Increase coverage

Increase coverage

--- ValueUtilsTest/ValueObjectTest.cs
+++ ValueUtilsTest/ValueObjectTest.cs
@@ -12,6 +12,7 @@
             var b = new SampleValueObject { ShortValue = 2000, StringValue = "A", Value = -1 };
             PAssert.That(() =>
                 a.Equals(b)
+                && a.Equals((object)b)
                 && a == b
                 && a.GetHashCode() == b.GetHashCode()
                 && !ReferenceEquals(a, b)
@@ -25,6 +26,7 @@
             var b = new SampleValueObject { ShortValue = 2000, StringValue = "a", Value = -1 };
             PAssert.That(() =>
                 !a.Equals(b)
+                && !a.Equals((object)b)
                 && a != b
                 && a.GetHashCode() != b.GetHashCode()
                 && !ReferenceEquals(a, b)
@@ -75,5 +77,20 @@
                 && valueObjectA != valueObjectX
             );
         }
+
+        public class MyOverridableClass : ValueObject<MyOverridableClass>
+        {
+            public int SomeContents;
+        }
+
+        [Fact]
+        public void NonSealedValueObjectsCannotBeInstantiated()
+            => Assert.ThrowsAny<Exception>(() => new MyOverridableClass());
+
+        class NotQuiteTheSampleValueObject : ValueObject<SampleValueObject> { }
+
+        [Fact]
+        public void CrtpViolatingTypesCannotBeInstantiated()
+            => Assert.ThrowsAny<Exception>(() => new NotQuiteTheSampleValueObject());
     }
 }


Update version

Update version

--- Warden/Properties/AssemblyInfo.cs
+++ Warden/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.3.0.0")]
-[assembly: AssemblyFileVersion("1.3.0.0")]
+[assembly: AssemblyVersion("1.4.0.0")]
+[assembly: AssemblyFileVersion("1.4.0.0")]


Update BoundaryManager.cs

Update BoundaryManager.cs


ConversationManager now can delete a conversation using channelId and conversationId


Better memory usage for decompression

Better memory usage for decompression


refactor (services): implement exception serialization

original commit: vintage-software/vstack@932745e5be7b0d57038413f430cc5d99eb1d5d41

split from 925342535a026df8a32fa1d069d0e417b71131c0


Fix CodeFactor

Fix CodeFactor


added class & tests for command line options

git-svn-id: 55ea488da616a60e70f234b559e901c5e15b5508@7 49102ff3-e64e-284a-8f61-b7e53b302e95

--- console/Program.cs
+++ console/Program.cs
@@ -4,17 +4,25 @@
 using System.Collections.Generic;
 using System.Collections.Specialized;
 using Microsoft.SqlServer.Management.Smo;
+using NUnit.Framework;
+using System.Resources;

 namespace console
 {
-	class Program
-	{
-		static void Main(string[] args)
-		{
-			Server srv = new Server(args[0]);
+	class Program {
+		static int Main(string[] args) {
+            Options options = new Options(args);
+            if (!options.Validate()) {
+                foreach (string e in options.Errors) {
+                    Console.WriteLine(e);
+                }
+                return -1;
+            }
+
+			Server srv = new Server(options.Server);
 			Database db = default(Database);
 			foreach (Database d in srv.Databases){
-				if (d.Name == args[1]) {
+				if (d.Name == options.DB) {
 					db = d;
 					break;
 				}
@@ -25,8 +33,8 @@
 			string[] dirs = { "data", "foreign_keys", "functions",
                               "indexes", "procs", "tables", "triggers" };
 			foreach (string dir in dirs) {
-				if (!Directory.Exists(args[2] + "/" + dir)) {
-					Directory.CreateDirectory(args[2] + "/" + dir);
+				if (!Directory.Exists(options.Dir + "/" + dir)) {
+					Directory.CreateDirectory(options.Dir + "/" + dir);
 				}
 			}

@@ -47,7 +55,7 @@
 				scr.Options.DriIndexes = false;
 				scr.Options.DriDefaults = true;
 				ScriptToFile(scr, urns.ToArray(),
-                    String.Format("{0}/tables/{1}.sql", args[2], t.Name));
+                    String.Format("{0}/tables/{1}.sql", options.Dir, t.Name));

 				// foreign keys in seperate dir
 				urns.Clear();
@@ -57,7 +65,7 @@
 				if (urns.Count > 0) {
 					scr.Options.DriAll = true;
 					ScriptToFile(scr,urns.ToArray(),
-                        String.Format("{0}/foreign_keys/{1}.sql", args[2], t.Name));
+                        String.Format("{0}/foreign_keys/{1}.sql", options.Dir, t.Name));
 				}

 				// triggers in seperate dir
@@ -68,7 +76,7 @@
 				if (urns.Count > 0) {
 					scr.Options.DriAll = true;
 					ScriptToFile(scr, urns.ToArray(),
-                        String.Format("{0}/triggers/{1}.sql", args[2], t.Name));
+                        String.Format("{0}/triggers/{1}.sql", options.Dir, t.Name));
 				}

 				// indexes in seperate dir
@@ -79,7 +87,7 @@
 				if (urns.Count > 0) {
                     scr.Options.DriAll = true;
 					ScriptToFile(scr, urns.ToArray(),
-                        String.Format("{0}/indexes/{1}.sql", args[2], t.Name));
+                        String.Format("{0}/indexes/{1}.sql", options.Dir, t.Name));
 				}
 			}

@@ -91,7 +99,7 @@
 				urns.Add(f.Urn);
 				scr.Options.DriAll = true;
 				ScriptToFile(scr, urns.ToArray(),
-                    String.Format("{0}/functions/{1}.sql", args[2], f.Name));
+                    String.Format("{0}/functions/{1}.sql", options.Dir, f.Name));
 			}

 			// procs
@@ -102,12 +110,13 @@
 				urns.Add(p.Urn);
 				scr.Options.DriAll = true;
 				ScriptToFile(scr, urns.ToArray(),
-                    String.Format("{0}/procs/{1}.sql", args[2], p.Name));
+                    String.Format("{0}/procs/{1}.sql", options.Dir, p.Name));
 			}

 			// TODO data

             Console.WriteLine("success");
+            return 0;
 		}

 		static void ScriptToFile(Scripter scr, Urn[] urns, string fileName) {
@@ -120,4 +129,64 @@
 			}
 		}
 	}
+
+    [TestFixture()]
+    class Options {
+        public string Command;
+        public string Server;
+        public string DB;
+        public string Dir;
+
+        public Options() { }
+        public Options(string[] args) {
+            if (args.Length > 0) Command = args[0];
+            if (args.Length > 1) Server = args[1];
+            if (args.Length > 2) DB = args[2];
+            if (args.Length > 3) Dir = args[3];
+
+            if (string.IsNullOrEmpty(Dir)) Dir = ".";
+        }
+
+        public List<string> Errors = new List<string>();
+        public bool Validate() {
+            Errors.Clear();
+            if (string.IsNullOrEmpty(Command)){
+                Errors.Add("Command is required.");
+            }
+            if (string.IsNullOrEmpty(Server)) {
+                Errors.Add("Server is required.");
+            }
+            if (string.IsNullOrEmpty(DB)) {
+                Errors.Add("DB is required.");
+            }
+            return Errors.Count == 0;
+        }
+
+        [Test()]
+        public void ValidateTest() {
+            Options o = new Options();
+            Assert.IsFalse(o.Validate());
+            Assert.IsTrue(o.Errors.Contains("Command is required."));
+            Assert.IsTrue(o.Errors.Contains("Server is required."));
+            Assert.IsTrue(o.Errors.Contains("DB is required."));
+
+            o.Command = "script";
+            Assert.IsFalse(o.Validate());
+            Assert.IsFalse(o.Errors.Contains("Command is required."));
+            Assert.IsTrue(o.Errors.Contains("Server is required."));
+            Assert.IsTrue(o.Errors.Contains("DB is required."));
+
+            o.Server = "seth-pc\\sqlexpress";
+            Assert.IsFalse(o.Validate());
+            Assert.IsFalse(o.Errors.Contains("Command is required."));
+            Assert.IsFalse(o.Errors.Contains("Server is required."));
+            Assert.IsTrue(o.Errors.Contains("DB is required."));
+
+            o.DB = "TESTDB";
+            Assert.IsTrue(o.Validate());
+            Assert.IsFalse(o.Errors.Contains("Command is required."));
+            Assert.IsFalse(o.Errors.Contains("Server is required."));
+            Assert.IsFalse(o.Errors.Contains("DB is required."));
+        }
+    }
 }


修复最后一个图片没有正确被裁剪掉

修复最后一个图片没有正确被裁剪掉

修复最后一个图片没有正确被裁剪掉


when a user is created, directly assign role


oprava letopočtu

oprava letopočtu


Raid's default reactions are thumbs up and 1, 2 keycap digits.


improve help page

improve help page


Reduce save dialog timing.

Reduce save dialog timing.


log on incoming message

log on incoming message

--- alert-roster.web/Controllers/MessagesController.cs
+++ alert-roster.web/Controllers/MessagesController.cs
@@ -47,6 +47,8 @@
         [HttpPost]
         public ActionResult IncomingMessage(String To, String From, String Body)
         {
+            log.Info("Incoming message (From: {0}) (To: {1}) (Body: {2})", From, To, Body);
+
             // TODO Process incoming messages

             // For now, just shoot me an email with the content


Fix clicking anywhere in the beatmap overlay dismissing it

--- osu.Game/Overlays/BeatmapSetOverlay.cs
+++ osu.Game/Overlays/BeatmapSetOverlay.cs
@@ -5,7 +5,6 @@
 using osu.Framework.Bindables;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
-using osu.Framework.Input.Events;
 using osu.Game.Online.API.Requests;
 using osu.Game.Online.API.Requests.Responses;
 using osu.Game.Overlays.BeatmapSet;
@@ -23,9 +22,6 @@
         public const float RIGHT_WIDTH = 275;

         private readonly Bindable<APIBeatmapSet> beatmapSet = new Bindable<APIBeatmapSet>();
-
-        // receive input outside our bounds so we can trigger a close event on ourselves.
-        public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => true;

         public BeatmapSetOverlay()
             : base(OverlayColourScheme.Blue)
@@ -69,12 +65,6 @@
         {
             base.PopOutComplete();
             beatmapSet.Value = null;
-        }
-
-        protected override bool OnClick(ClickEvent e)
-        {
-            Hide();
-            return true;
         }

         public void FetchAndShowBeatmap(int beatmapId)


Don't show graph at all if there's no data to use

--- osu.Game/Overlays/Profile/RankChart.cs
+++ osu.Game/Overlays/Profile/RankChart.cs
@@ -62,25 +62,28 @@
                     Font = @"Exo2.0-RegularItalic",
                     TextSize = secondary_textsize
                 },
-                graph = new RankChartLineGraph
+            };
+
+            if (rankedDays > 0)
+            {
+                Add(graph = new RankChartLineGraph
                 {
                     Anchor = Anchor.BottomCentre,
                     Origin = Anchor.BottomCentre,
                     RelativeSizeAxes = Axes.X,
                     Y = -secondary_textsize,
                     DefaultValueCount = rankedDays,
-                }
-            };
-
-            graph.OnBallMove += showHistoryRankTexts;
-            graph.OnReset += updateRankTexts;
+                });
+
+                graph.OnBallMove += showHistoryRankTexts;
+            }
         }

         private void updateRankTexts()
         {
-            rankText.Text = user.Statistics.Rank > 0 ? $"#{user.Statistics.Rank:#,0}" : "no rank";
-            performanceText.Text = user.Statistics.PP != null ? $"{user.Statistics.PP:#,0}pp" : string.Empty;
-            relativeText.Text = $"{user.Country?.FullName} #{user.CountryRank:#,0}";
+            rankText.Text = rankedDays > 0 ? $"#{user.Statistics.Rank:#,0}" : "no rank";
+            performanceText.Text = rankedDays > 0 ? $"{user.Statistics.PP:#,0}pp" : string.Empty;
+            relativeText.Text = rankedDays > 0 ? $"{user.Country?.FullName} #{user.CountryRank:#,0}" : string.Empty;
         }

         private void showHistoryRankTexts(int dayIndex)
@@ -93,14 +96,15 @@
         [BackgroundDependencyLoader]
         private void load(OsuColour colours)
         {
-            graph.Colour = colours.Yellow;
-
-            if (user.Statistics.Rank > 0)
-            {
+            if (graph != null)
+            {
+                graph.Colour = colours.Yellow;
                 // use logarithmic coordinates
                 graph.Values = ranks.Select(x => -(float)Math.Log(x));
                 graph.SetStaticBallPosition();
             }
+
+            updateRankTexts();
         }

         public override bool Invalidate(Invalidation invalidation = Invalidation.All, Drawable source = null, bool shallPropagate = true)
@@ -115,19 +119,25 @@

         protected override bool OnHover(InputState state)
         {
-            graph.ShowBall(ToLocalSpace(state.Mouse.NativeState.Position).X);
+            if (graph != null)
+                graph.ShowBall(ToLocalSpace(state.Mouse.NativeState.Position).X);
             return base.OnHover(state);
         }

         protected override bool OnMouseMove(InputState state)
         {
-            graph.MoveBall(ToLocalSpace(state.Mouse.NativeState.Position).X);
+            if (graph != null)
+                graph.MoveBall(ToLocalSpace(state.Mouse.NativeState.Position).X);
             return base.OnMouseMove(state);
         }

         protected override void OnHoverLost(InputState state)
         {
-            graph.HideBall();
+            if (graph != null)
+            {
+                graph.HideBall();
+                updateRankTexts();
+            }
             base.OnHoverLost(state);
         }

@@ -140,7 +150,6 @@
             private readonly CircularContainer movingBall;

             public Action<int> OnBallMove;
-            public Action OnReset;

             public RankChartLineGraph()
             {
@@ -163,11 +172,7 @@
                 });
             }

-            public void SetStaticBallPosition()
-            {
-                staticBall.Position = new Vector2(1, GetYPosition(Values.Last()));
-                OnReset.Invoke();
-            }
+            public void SetStaticBallPosition() => staticBall.Position = new Vector2(1, GetYPosition(Values.Last()));

             public void ShowBall(float mouseXPosition)
             {
@@ -187,7 +192,6 @@
             public void HideBall()
             {
                 movingBall.FadeOut(fade_duration);
-                OnReset.Invoke();
             }

             private int calculateIndex(float mouseXPosition) => (int)Math.Round(mouseXPosition / DrawWidth * (DefaultValueCount - 1));


Fix TranslationUnit.FileRelativeDirectory to be more robust against null include paths.

--- src/AST/TranslationUnit.cs
+++ src/AST/TranslationUnit.cs
@@ -62,7 +62,12 @@
         {
             get
             {
-                if (fileRelativeDirectory != null) return fileRelativeDirectory;
+                if (fileRelativeDirectory != null)
+                    return fileRelativeDirectory;
+
+                if (IncludePath == null)
+                    return string.Empty;
+
                 var path = IncludePath.Replace('\\', '/');
                 var index = path.LastIndexOf('/');
                 return fileRelativeDirectory = path.Substring(0, index);


Added primitive types to the ITypeVisitor interface.

--- src/Bridge/Type.cs
+++ src/Bridge/Type.cs
@@ -429,6 +429,7 @@
         T VisitTypedefType(TypedefType typedef, TypeQualifiers quals);
         T VisitTemplateSpecializationType(TemplateSpecializationType template,
                                           TypeQualifiers quals);
+        T VisitPrimitiveType(PrimitiveType type, TypeQualifiers quals);
         T VisitDeclaration(Declaration decl, TypeQualifiers quals);
     }
 }


Can't test for username extrapolation anymore, since it was removed due to complaints


fix tests on travis

fix tests on travis

--- src/Graph/Graph.cs
+++ src/Graph/Graph.cs
@@ -73,8 +73,8 @@
         {
             var skipList = new HashSet<T>(_comparer);
             var knownBackEdges = new HashSet<T>(_comparer);
-            skipList.SetCapacity(capacity);
-            knownBackEdges.SetCapacity(capacity);
+            //skipList.SetCapacity(capacity);
+            //knownBackEdges.SetCapacity(capacity);

             return HasCycle(origin, knownBackEdges, skipList);
         }


FIX: Doc comments

FIX: Doc comments


Add overwrite function for existing files to DirCopy method.

--- src/SilDev/Data.cs
+++ src/SilDev/Data.cs
@@ -5,7 +5,7 @@
 // ==============================================
 //
 // Filename: Data.cs
-// Version:  2017-01-17 19:27
+// Version:  2017-01-23 07:15
 //
 // Copyright (c) 2017, Si13n7 Developments (r)
 // All rights reserved.
@@ -643,7 +643,10 @@
         /// <param name="subDirs">
         ///     true to inlcude subdirectories; otherwise, false.
         /// </param>
-        public static bool DirCopy(string srcDir, string destDir, bool subDirs = true)
+        /// <param name="overwrite">
+        ///     true to allow an existing file to be overwritten; otherwise, false.
+        /// </param>
+        public static bool DirCopy(string srcDir, string destDir, bool subDirs = true, bool overwrite = false)
         {
             try
             {
@@ -655,11 +658,11 @@
                 if (!Directory.Exists(dest))
                     Directory.CreateDirectory(dest);
                 foreach (var f in di.GetFiles())
-                    f.CopyTo(Path.Combine(dest, f.Name), false);
+                    f.CopyTo(Path.Combine(dest, f.Name), overwrite);
                 if (!subDirs)
                     return true;
                 foreach (var d in di.GetDirectories())
-                    DirCopy(d.FullName, Path.Combine(dest, d.Name));
+                    DirCopy(d.FullName, Path.Combine(dest, d.Name), true, overwrite);
                 return true;
             }
             catch (Exception ex)