private void HandleFlagRespondMessage(FlagRespondMessage flagRespondMessage) { ServerFlags[flagRespondMessage.FlagName] = flagRespondMessage.FlagInfo; var flagFile = CommonUtil.CombinePaths(FlagPath, flagRespondMessage.FlagName); var flagTexture = new Texture2D(4, 4); if (flagTexture.LoadImage(flagRespondMessage.FlagData)) { flagTexture.name = "LunaMultiPlayer/Flags/" + Path.GetFileNameWithoutExtension(flagRespondMessage.FlagName); File.WriteAllBytes(flagFile, flagRespondMessage.FlagData); var textureInfo = new GameDatabase.TextureInfo(null, flagTexture, false, true, false) { name = flagTexture.name }; var containsTexture = GameDatabase.Instance.databaseTexture.Any(t => t.name == textureInfo.name); if (!containsTexture) { GameDatabase.Instance.databaseTexture.Add(textureInfo); } else { GameDatabase.Instance.ReplaceTexture(textureInfo.name, textureInfo); } Debug.Log($"[LMP]: Loaded {flagTexture.name}"); } else { Debug.LogError($"[LMP]: Failed to load flag {flagRespondMessage.FlagName}"); } }
public void HandleMessage(IMessageData messageData) { var msgData = messageData as FlagBaseMsgData; if (msgData == null) { return; } switch (msgData.FlagMessageType) { case FlagMessageType.LIST: { var data = (FlagListMsgData)messageData; var serverFlagFiles = data.FlagFileNames; var serverFlagOwners = data.FlagOwners; var serverFlagShaSums = data.FlagShaSums; for (var i = 0; i < serverFlagFiles.Length; i++) { var fi = new FlagInfo { Owner = serverFlagOwners[i], ShaSum = serverFlagShaSums[i] }; System.ServerFlags[Path.GetFileNameWithoutExtension(serverFlagFiles[i])] = fi; } System.SyncComplete = true; //Check if we need to upload the flag System.FlagChangeEvent = true; } break; case FlagMessageType.FLAG_DATA: { var data = (FlagDataMsgData)messageData; var frm = new FlagRespondMessage { FlagInfo = { Owner = data.OwnerPlayerName }, FlagName = data.FlagName, FlagData = data.FlagData }; frm.FlagInfo.ShaSum = Common.CalculateSha256Hash(frm.FlagData); System.NewFlags.Enqueue(frm); } break; case FlagMessageType.DELETE_FILE: { var data = (FlagDeleteMsgData)messageData; var flagName = data.FlagName; var flagFile = CommonUtil.CombinePaths(System.FlagPath, flagName); DeleteFlag(flagFile); } break; } }