Beispiel #1
0
        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}");
            }
        }
Beispiel #2
0
        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;
            }
        }