Пример #1
0
        public void HandleMessage(byte[] messageData)
        {
            using (MessageReader mr = new MessageReader(messageData))
            {
                FlagMessageType messageType = (FlagMessageType)mr.Read<int>();
                switch (messageType)
                {
                    case FlagMessageType.LIST:
                        {
                            //List code
                            string[] serverFlagFiles = mr.Read<string[]>();
                            string[] serverFlagOwners = mr.Read<string[]>();
                            string[] serverFlagShaSums = mr.Read<string[]>();
                            for (int i = 0; i < serverFlagFiles.Length; i++)
                            {
                                FlagInfo fi = new FlagInfo();
                                fi.owner = serverFlagOwners[i];
                                fi.shaSum = serverFlagShaSums[i];
                                serverFlags[Path.GetFileNameWithoutExtension(serverFlagFiles[i])] = fi;
                            }
                            syncComplete = true;
                            //Check if we need to upload the flag
                            flagChangeEvent = true;
                        }
                        break;
                    case FlagMessageType.FLAG_DATA:
                        {
                            FlagRespondMessage frm = new FlagRespondMessage();
                            frm.flagInfo.owner = mr.Read<string>();
                            frm.flagName = mr.Read<string>();
                            frm.flagData = mr.Read<byte[]>();
                            frm.flagInfo.shaSum = Common.CalculateSHA256Hash(frm.flagData);
                            newFlags.Enqueue(frm);
                        }
                        break;
                    case FlagMessageType.DELETE_FILE:
                        {
                            string flagName = mr.Read<string>();
                            string flagFile = Path.Combine(flagPath, flagName);
                            if (File.Exists(flagFile))
                            {
                                try
                                {

                                    if (File.Exists(flagFile))
                                    {
                                        DarkLog.Debug("Deleting flag " + flagFile);
                                        File.Delete(flagFile);
                                    }
                                }
                                catch (Exception e)
                                {
                                    DarkLog.Debug("Error deleting flag " + flagFile + ", exception: " + e);
                                }
                            }
                        }
                        break;
                }
            }
        }
Пример #2
0
        private void HandleFlagRespondMessage(FlagRespondMessage flagRespondMessage)
        {
            serverFlags[flagRespondMessage.flagName] = flagRespondMessage.flagInfo;
            string    flagFile    = Path.Combine(flagPath, flagRespondMessage.flagName);
            Texture2D flagTexture = new Texture2D(4, 4);

            if (flagTexture.LoadImage(flagRespondMessage.flagData))
            {
                flagTexture.name = "DarkMultiPlayer/Flags/" + Path.GetFileNameWithoutExtension(flagRespondMessage.flagName);
                File.WriteAllBytes(flagFile, flagRespondMessage.flagData);
                GameDatabase.TextureInfo ti = new GameDatabase.TextureInfo(flagTexture, false, true, false);
                ti.name = flagTexture.name;
                bool containsTexture = false;
                foreach (GameDatabase.TextureInfo databaseTi in GameDatabase.Instance.databaseTexture)
                {
                    if (databaseTi.name == ti.name)
                    {
                        containsTexture = true;
                    }
                }
                if (!containsTexture)
                {
                    GameDatabase.Instance.databaseTexture.Add(ti);
                }
                else
                {
                    GameDatabase.Instance.ReplaceTexture(ti.name, ti);
                }
                DarkLog.Debug("Loaded " + flagTexture.name);
            }
            else
            {
                DarkLog.Debug("Failed to load flag " + flagRespondMessage.flagName);
            }
        }
Пример #3
0
 private void HandleFlagRespondMessage(FlagRespondMessage flagRespondMessage)
 {
     serverFlags[flagRespondMessage.flagName] = flagRespondMessage.flagInfo;
     string flagFile = Path.Combine(flagPath, flagRespondMessage.flagName);
     Texture2D flagTexture = new Texture2D(4, 4);
     if (flagTexture.LoadImage(flagRespondMessage.flagData))
     {
         flagTexture.name = "DarkMultiPlayer/Flags/" + Path.GetFileNameWithoutExtension(flagRespondMessage.flagName);
         File.WriteAllBytes(flagFile, flagRespondMessage.flagData);
         GameDatabase.TextureInfo ti = new GameDatabase.TextureInfo(null, flagTexture, false, true, false);
         ti.name = flagTexture.name;
         bool containsTexture = false;
         foreach (GameDatabase.TextureInfo databaseTi in GameDatabase.Instance.databaseTexture)
         {
             if (databaseTi.name == ti.name)
             {
                 containsTexture = true;
             }
         }
         if (!containsTexture)
         {
             GameDatabase.Instance.databaseTexture.Add(ti);
         }
         else
         {
             GameDatabase.Instance.ReplaceTexture(ti.name, ti);
         }
         DarkLog.Debug("Loaded " + flagTexture.name);
     }
     else
     {
         DarkLog.Debug("Failed to load flag " + flagRespondMessage.flagName);
     }
 }
Пример #4
0
        public void HandleMessage(byte[] messageData)
        {
            using (MessageReader mr = new MessageReader(messageData, false))
            {
                FlagMessageType messageType = (FlagMessageType)mr.Read <int>();
                switch (messageType)
                {
                case FlagMessageType.LIST:
                {
                    //List code
                    string[] serverFlagFiles   = mr.Read <string[]>();
                    string[] serverFlagOwners  = mr.Read <string[]>();
                    string[] serverFlagShaSums = mr.Read <string[]>();
                    for (int i = 0; i < serverFlagFiles.Length; i++)
                    {
                        FlagInfo fi = new FlagInfo();
                        fi.owner  = serverFlagOwners[i];
                        fi.shaSum = serverFlagShaSums[i];
                        serverFlags[Path.GetFileNameWithoutExtension(serverFlagFiles[i])] = fi;
                    }
                    syncComplete = true;
                    //Check if we need to upload the flag
                    flagChangeEvent = true;
                }
                break;

                case FlagMessageType.FLAG_DATA:
                {
                    FlagRespondMessage frm = new FlagRespondMessage();
                    frm.flagInfo.owner  = mr.Read <string>();
                    frm.flagName        = mr.Read <string>();
                    frm.flagData        = mr.Read <byte[]>();
                    frm.flagInfo.shaSum = Common.CalculateSHA256Hash(frm.flagData);
                    newFlags.Enqueue(frm);
                }
                break;

                case FlagMessageType.DELETE_FILE:
                {
                    string flagName = mr.Read <string>();
                    string flagFile = Path.Combine(flagPath, flagName);
                    if (File.Exists(flagFile))
                    {
                        try
                        {
                            if (File.Exists(flagFile))
                            {
                                DarkLog.Debug("Deleting flag " + flagFile);
                                File.Delete(flagFile);
                            }
                        }
                        catch (Exception e)
                        {
                            DarkLog.Debug("Error deleting flag " + flagFile + ", exception: " + e);
                        }
                    }
                }
                break;
                }
            }
        }