Exemplo n.º 1
0
 public static SMsgPvpInviteFriend_CSC ParsePackage(byte[] dataBuffer)
 {
     return(PackageHelper.BytesToStuct <SMsgPvpInviteFriend_CSC>(dataBuffer));
 }
Exemplo n.º 2
0
        /// <summary>
        /// Performs installation of the Zoombraco package.
        /// Note: At this point in time it is not possible to register the package as installed to the CMS. This means that we are
        /// unable to automatically uninstall the package.
        /// </summary>
        /// <param name="umbracoApplication">
        /// The current <see cref="UmbracoApplicationBase"/>
        /// </param>
        /// <param name="applicationContext">
        /// The Umbraco <see cref="ApplicationContext"/> for the current application.
        /// </param>
        /// <returns>The <see cref="bool"/></returns>
        public static bool Install(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
        {
            if (!applicationContext.IsConfigured)
            {
                LogHelper.Info <ZoombracoBootstrapper>("Umbraco is not configured. Aborting Zoombraco setup.");
                return(false);
            }

            // Check our versioning.
            Assembly   assembly         = VersionParser.Assembly;
            SemVersion currentVersion   = VersionParser.ZoombracoProductVersion();
            SemVersion installedVersion = ZoombracoConfiguration.Instance.ProductVersion;

            if (installedVersion >= currentVersion)
            {
                LogHelper.Info <ZoombracoBootstrapper>($"Zoombraco {installedVersion} is installed and up-to-date. Aborting Zoombraco setup.");
                return(true);
            }

            try
            {
                // Install our package.
                string resourceName;
                using (Stream package = EmbeddedResourceHelper.GetResource(assembly, "package.xml", out resourceName))
                {
                    PackageHelper packageHelper = new PackageHelper(package, applicationContext);
                    packageHelper.Unpack();

                    using (Stream meta = EmbeddedResourceHelper.GetResource(assembly, "_Meta.cshtml", out resourceName))
                        using (Stream sitemap = EmbeddedResourceHelper.GetResource(assembly, "XmlSitemap.cshtml", out resourceName))
                            using (Stream error = EmbeddedResourceHelper.GetResource(assembly, "Error.cshtml", out resourceName))
                            {
                                packageHelper.UnpackFile(meta, "_Meta.cshtml");
                                packageHelper.UnpackFile(sitemap, "XmlSitemap.cshtml");
                                packageHelper.UnpackFile(error, "Error.cshtml");
                            }
                }

                // Edit the Examine config file.
                string settings = Path.Combine(IOHelper.GetRootDirectorySafe(), "Config", "ExamineSettings.config");
                if (!File.Exists(settings))
                {
                    LogHelper.Error <ZoombracoBootstrapper>($"Unable to install the Zoombraco. No ExamineSetting.config exists at the path {settings}", new FileNotFoundException());
                    return(false);
                }

                using (FileStream stream = File.Open(settings, FileMode.Open, FileAccess.ReadWrite))
                {
                    ExamineHelper examineHelper = new ExamineHelper(stream);
                    examineHelper.UpdateExamineAnalyzer();
                }

                // Set default values.
                if (installedVersion == new SemVersion(0))
                {
                    ZoombracoConfiguration.SaveSetting(ZoombracoConstants.Configuration.OutputCacheDuration, "0");
                    ZoombracoConfiguration.SaveSetting(ZoombracoConstants.Configuration.ImageCdnRequestTimeout, "2000");
                    ZoombracoConfiguration.SaveSetting(ZoombracoConstants.Configuration.ModelsBuilderEnabled, "false");
                }

                // Update our version number
                ZoombracoConfiguration.SaveSetting(ZoombracoConstants.Configuration.Version, currentVersion.ToSemanticString());

                return(true);
            }
            catch (Exception e)
            {
                LogHelper.Error <ZoombracoBootstrapper>("Unable to install the Zoombraco.", e);
                return(false);
            }
        }
Exemplo n.º 3
0
        public static List <string> MultiRootAnalyze(IEnumerable <string> files, PackageFormat format)
        {
            var transformedDirectories = new List <string>();

            if (format == PackageFormat.NoFormat)
            {
                throw new ArgumentException("Package format unknown!");
            }
            switch (format)
            {
            case PackageFormat.ResModRoot:
                transformedDirectories = files.Select(f => PackageHelper.RemoveUntilFolderBackward(Path.GetDirectoryName(f), PackageHelper.GetWotVersionFolder(f))).ToList();
                break;

            case PackageFormat.VersionRoot:
                break;

            case PackageFormat.WotHomeRoot:
                transformedDirectories = files.Select(f => PackageHelper.RemoveUntilFolderBackward(Path.GetDirectoryName(f), Constants.ResModsFolder)).ToList();
                break;

            case PackageFormat.WotMod:
                break;

            case PackageFormat.WotModHomeRoot:
                transformedDirectories = files.Select(f => PackageHelper.RemoveUntilFolderBackward(Path.GetDirectoryName(f), Constants.ModsFolder)).ToList();
                break;

            case PackageFormat.WotModModsRoot:
                transformedDirectories = files.Select(f => PackageHelper.RemoveUntilFolderBackward(Path.GetDirectoryName(f), PackageHelper.GetWotVersionFolder(f))).ToList();
                break;
            }

            transformedDirectories = transformedDirectories.Where(f => !string.IsNullOrEmpty(f)).Distinct().ToList();

            return(transformedDirectories);
        }
Exemplo n.º 4
0
        public override void Execute(Pipeline pipeline)
        {
            var unityPackageData = pipeline.Manifest.Data.OfType <UnityPackages>().ToArray();
            var unityObjects     = unityPackageData
                                   .SelectMany(upd => upd.unityPackages)
                                   .SelectMany(up => up.AssetFiles)
                                   .Select(AssetDatabase.GetAssetPath)
                                   .SelectMany(path =>
            {
                if (AssetDatabase.IsValidFolder(path))
                {
                    return(Directory.GetFiles(path, "*", SearchOption.AllDirectories));
                }
                else
                {
                    return(Enumerable.Repeat(path, 1));
                }
            })
                                   .Select(path => new AssetPath(path, AssetDatabase.LoadAssetAtPath <Object>(path)))
                                   .ToArray();
            var remappableAssets = unityObjects.SelectMany(map =>
            {
                var path  = map.path;
                var asset = map.asset;
                if (asset is Preset preset)
                {
                    var presetSo = new SerializedObject(preset);
                    SerializedProperty m_TargetType, m_ManagedTypePPtr;
                    m_TargetType      = presetSo.FindProperty(nameof(m_TargetType));
                    m_ManagedTypePPtr = m_TargetType.FindPropertyRelative(nameof(m_ManagedTypePPtr));
                    var monoScript    = m_ManagedTypePPtr.objectReferenceValue as MonoScript;

                    return(Enumerable.Repeat(new ScriptPath(path, monoScript), 1));
                }

                if (asset is GameObject goAsset)
                {
                    return(goAsset.GetComponentsInChildren <MonoBehaviour>()
                           .Select(mb => new ScriptPath(path, MonoScript.FromMonoBehaviour(mb))));
                }

                if (asset is ScriptableObject soAsset)
                {
                    return(Enumerable.Repeat(new ScriptPath(path, MonoScript.FromScriptableObject(soAsset)), 1));
                }


                return(Enumerable.Empty <ScriptPath>());
            })
                                   .Select(map =>
            {
                var type         = map.monoScript.GetClass();
                var fileId       = FileIdUtil.Compute(type);
                var assemblyPath = type.Assembly.Location;
                var libraryGuid  = PackageHelper.GetFileNameHash(assemblyPath);
                AssetDatabase.TryGetGUIDAndLocalFileIdentifier(map.monoScript, out string scriptGuid, out long scriptId);

                return(new RemapData(map.path,
                                     new Regex($"(\\{{fileID:)\\s*?{scriptId},(\\s*?guid:)\\s*?{scriptGuid},(\\s*?type:\\s*?\\d+\\s*?\\}})", RegexOptions.Singleline),
                                     new Regex($"(\\{{fileID:)\\s*?{fileId},(\\s*?guid:)\\s*?{libraryGuid},(\\s*?type:\\s*?\\d+\\s*?\\}})", RegexOptions.Singleline),
                                     $"$1 {scriptId},$2 {scriptGuid},$3",
                                     $"$1 {fileId},$2 {libraryGuid},$3"
                                     ));
            })
                                   .ToArray();


            foreach (var map in remappableAssets)
            {
                var fileText = File.ReadAllText(map.Path);
                fileText = map.ToAssemblyReference.Replace(fileText, map.AssemblyReference);
                File.WriteAllText(map.Path, fileText);
            }

            foreach (var unityPackageDatum in unityPackageData)
            {
                foreach (var outputPath in unityPackageDatum.StagingPaths.Select(path => path.Resolve(pipeline, this)))
                {
                    if (!Directory.Exists(outputPath))
                    {
                        Directory.CreateDirectory(outputPath);
                    }

                    foreach (var unityPackage in unityPackageDatum.unityPackages)
                    {
                        unityPackage.Export(outputPath);
                    }
                }
            }

            foreach (var map in remappableAssets)
            {
                var fileText = File.ReadAllText(map.Path);
                fileText = map.ToScriptReference.Replace(fileText, map.ScriptReference);
                File.WriteAllText(map.Path, fileText);
            }
        }
Exemplo n.º 5
0
 public void ResolveUnknownPackageThrows()
 {
     ExceptionAssert.Throws <InvalidOperationException>(
         () => PackageHelper.ResolvePackage(new MockPackageRepository(), new MockPackageRepository(), "elmah", null, allowPrereleaseVersions: false),
         "Unable to find package 'elmah'.");
 }
        private async void Download_Click(object sender, RoutedEventArgs e)
        {
            InstallButton.IsEnabled = false;

            var gettingPackagesDialog = new ProgressDialog()
            {
                Title = ViewModel.Product.Title,
                Body  = "Fetching packages..."
            };
            await PackageHelper.DownloadPackage(ViewModel.Product,
                                                gettingPackagesCallback : product =>
            {
                gettingPackagesDialog.ShowAsync();
            },
                                                noPackagesCallback : async product =>
            {
                var noPackagesDialog = new ContentDialog()
                {
                    Title             = product.Title,
                    Content           = "No available packages for this product.",
                    PrimaryButtonText = "Ok"
                };
                await noPackagesDialog.ShowAsync();
            },
                                                packagesLoadedCallback : product =>
            {
                gettingPackagesDialog.Hide();
            },
                                                packageDownloadedCallback : async(product, details, file, toast) =>
            {
                var savePicker = new Windows.Storage.Pickers.FileSavePicker();
                savePicker.SuggestedStartLocation =
                    Windows.Storage.Pickers.PickerLocationId.Downloads;
                if (file.FileType.EndsWith("bundle"))
                {
                    savePicker.FileTypeChoices.Add("Windows App Bundle", new string[] { file.FileType });
                }
                else
                {
                    savePicker.FileTypeChoices.Add("Windows App Package", new string[] { file.FileType });
                }
                savePicker.SuggestedFileName = file.DisplayName;
                savePicker.SuggestedSaveFile = file;
                var userFile = await savePicker.PickSaveFileAsync();
                if (userFile != null)
                {
                    await file.MoveAndReplaceAsync(userFile);
                }
            });

            InstallButton.IsEnabled = true;
            return;

            var    culture   = CultureInfo.CurrentUICulture;
            string productId = ViewModel.Product.ProductId;



            DisplayCatalogHandler dcathandler = new DisplayCatalogHandler(DCatEndpoint.Production, new Locale(culture, true));
            await dcathandler.QueryDCATAsync(productId);

            var packs = await dcathandler.GetMainPackagesForProductAsync();

            string packageFamilyName = dcathandler.ProductListing.Product.Properties.PackageFamilyName;

            gettingPackagesDialog.Hide();
            if (packs != null)// && packs.Count > 0)
            {
                var package = PackageHelper.GetLatestDesktopPackage(packs.ToList(), packageFamilyName, ViewModel.Product);
                if (package == null)
                {
                    return;
                }
                else
                {
                    var file = (await PackageHelper.DownloadPackage(package, ViewModel.Product)).Item1;

                    var toast = PackageHelper.GenerateDownloadSuccessToast(package, ViewModel.Product, file);
                    Windows.UI.Notifications.ToastNotificationManager.GetDefault().CreateToastNotifier().Show(toast);
                }
            }

            InstallButton.IsEnabled = true;
        }
Exemplo n.º 7
0
        private static async Task UploadPackage(PushOptions options, PackageHelper packageHelper, PackageInfo packageInfo)
        {
            try
            {
                // HttpClient will use this event handler to give us
                // Reporting on how its progress the file upload
                var processMsgHandler = new ProgressMessageHandler(new HttpClientHandler());
                processMsgHandler.HttpSendProgress += (sender, e) =>
                {
                    // Could try to reimplement progressbar - but that library did not work in GH Actions :(
                    var percent = e.ProgressPercentage;
                };

                var keyParts        = packageHelper.SplitKey(options.ApiKey);
                var packageFileName = Path.GetFileName(options.Package);

                Console.WriteLine(Resources.Push_Uploading, packageFileName);

                var url = "/Umbraco/Api/ProjectUpload/UpdatePackage";

                using (var client = packageHelper.GetClientBase(url, keyParts.Token, keyParts.MemberId, keyParts.ProjectId))
                {
                    MultipartFormDataContent form = new MultipartFormDataContent();
                    var fileInfo = new FileInfo(options.Package);
                    var content  = new StreamContent(fileInfo.OpenRead());
                    content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
                    {
                        Name     = "file",
                        FileName = fileInfo.Name
                    };
                    form.Add(content);
                    form.Add(new StringContent(ParseCurrentFlag(options.Current)), "isCurrent");
                    form.Add(new StringContent(options.DotNetVersion), "dotNetVersion");
                    form.Add(new StringContent("package"), "fileType");
                    form.Add(GetVersionCompatibility(options.WorksWith), "umbracoVersions");
                    form.Add(new StringContent(packageInfo.VersionString), "packageVersion");

                    var httpResponse = await client.PostAsync(url, form);

                    if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        packageHelper.WriteError(Resources.Push_ApiKeyInvalid);
                        Environment.Exit(5); // ERROR_ACCESS_DENIED
                    }
                    else if (httpResponse.IsSuccessStatusCode)
                    {
                        Console.WriteLine(Resources.Push_Complete, packageFileName);

                        // Response is not reported (at the moment)
                        // var apiReponse = await httpResponse.Content.ReadAsStringAsync();
                        // Console.WriteLine(apiReponse);
                    }
                }
            }
            catch (HttpRequestException ex)
            {
                // Could get network error or our.umb down
                Console.WriteLine(Resources.Error, ex);
                throw;
            }
        }
Exemplo n.º 8
0
    /// <summary>
    /// 浠庢暣浣撳瓧鑺傛暟缁勮幏寰楀疄浣撲笂涓嬫枃鐨勫叿浣撴暟鎹?
    /// </summary>
    /// <param name="dataBuffer"></param>
    /// <returns></returns>
    public static SMsgPropCreateEntity_SC_Monster ParsePackage(byte[] dataBuffer, int offset)
    {
        Package package = PackageHelper.ParseReceiveData(dataBuffer);

        return(ParsePackage(package, offset));
    }
Exemplo n.º 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="archivePath"></param>
        /// <param name="uri"></param>
        /// <param name="iconFilePath"></param>
        /// <param name="fileInfo"></param>
        /// <returns></returns>
        public static bool TryGetPEFileInfo(string archivePath, string uri, string iconFilePath, out PEFileInfo fileInfo)
        {
            fileInfo = new PEFileInfo();

            fileInfo.Subsystem = SubsystemTypes.Unknown;

            try
            {
                Package package = PackageHelper.GetPackage(archivePath, false, FileAccess.Read);
                {
                    byte[] bytes;

                    Uri pathUri = new Uri(uri, UriKind.Relative);

                    using (Stream stream = package.GetPart(pathUri).GetStream())
                    {
                        bytes = new byte[(int)stream.Length];
                        stream.Read(bytes, 0, bytes.Length);
                    }

                    SubsystemTypes SubsystemType;

                    bool succsess = TryGetSubsystemType(bytes, out SubsystemType);

                    if (!succsess)
                    {
                        return(false);
                    }

                    fileInfo.Subsystem = SubsystemType;

                    if (Helper.IsNotNullOrEmpty(iconFilePath))
                    {
                        succsess = TryExtractIcon(bytes, iconFilePath);
                    }

                    if (!succsess)
                    {
                        RC.WriteLine(ConsoleVerbosity.Verbose, ConsoleThemeColor.SubTextNutral, " - " + Rpx.Strings.Reflection_NoIconFound);

                        return(true);
                    }

                    if (File.Exists(iconFilePath))
                    {
                        fileInfo.IconPath = iconFilePath;

                        fileInfo.HasIcon = true;
                    }
                    else
                    {
                        RC.WriteLine(ConsoleVerbosity.Verbose, ConsoleThemeColor.SubTextNutral, " - " + Rpx.Strings.Reflection_NoIconFound);
                    }

                    return(true);
                }
            }
            catch (Exception ex)
            {
                RC.WriteException(0112, Rpx.Strings.Error_0112, ex);

                return(false);
            }
            finally
            {
                PackageHelper.ReleasePackage(archivePath);
            }
        }
Exemplo n.º 10
0
    public override void SaveResponseHandleToInvoke(byte[] dataBuffer, int socketId, byte cmdtype)
    {
        Package       package;
        MasterMsgType masterMsgType = (MasterMsgType)cmdtype;

        package = PackageHelper.ParseReceiveData(dataBuffer);

        switch (masterMsgType)
        {
        case MasterMsgType.NET_ROOT_TEAM:
        {
            switch (package.GetSubMsgType())
            {
            case TeamDefineManager.MSG_TEAM_TEAMLIST:
                this.AddToInvoker(this.ReceiveTeamListHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_CREATE:
                this.AddToInvoker(this.ReceiveTeamCreateHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_DISBAND:
                this.AddToInvoker(this.ReceiveTeamDisbandHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_UPDATEPROP:
                this.AddToInvoker(this.ReceiveTeamUpdatePropHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_MEMBER_UPDATEPROP:
                this.AddToInvoker(this.ReceiveTeamMemberUpdatePropHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_MEMBER_JOIN:
                this.AddToInvoker(this.ReceiveTeamMemberJoinHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_CAPTAIN_JOIN:
                this.AddToInvoker(this.ReceiveTeamMemberJoinHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_MEMBER_LEAVE:
                this.AddToInvoker(this.ReceiveTeamMemberLeaveHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_MEMBER_KICK:
                this.AddToInvoker(this.ReceiveMemberKickHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_MEMBER_INVITE:
                this.AddToInvoker(this.ReceiveTeamMemberInviteHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_MEMBER_READY:
                this.AddToInvoker(this.ReceiveMemberReadyHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_ERROR_CODE:
                this.AddToInvoker(this.ReceiveTeamErrorCodeHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_TEAM_INVITER_FAILED:
                this.AddToInvoker(this.ReceiveTeamInviterFailedHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_GET_TEAMNUMLIST:
                this.AddToInvoker(this.ReceiveCrusadeTeamNumListHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_MATCHING_CANCEL:
                this.AddToInvoker(this.ReceiveMatchingCancelHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_MATCHING_CONFIRM:
                this.AddToInvoker(ConfirmMatchindHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_INVITE_FRIEND:                                    //收到邀请PvpReceiveInviteFriendHandle
                this.AddToInvoker(PvpReceiveInviteFriendHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_ENTER_CONFIRM:                                    //收到加入成功
                this.AddToInvoker(PvpReceiveEnterConfirmHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_MATCHING_BEGIN:                                    //收到开始匹配通知
                this.AddToInvoker(PvpReceiveBeginMatchHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_MATCHING_CANCEL:                                    //收到取消匹配通知
                this.AddToInvoker(PvpReceiveCancelMatchHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_MATCHING_LEAVE:                                    //收到队友离开通知
                this.AddToInvoker(PvpReceiveCancelTeamHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_MATCHING_SYNINFO:                                    //收到同步队伍通知
                this.AddToInvoker(PvpMatchindSyncHandle, package.Data, socketId);
                break;

            case TeamDefineManager.MSG_PVP_MATCHING_SUCESS:                                    //匹配成功
                this.AddToInvoker(PvpMatchindSyncHandle, package.Data, socketId);
                break;
            }
        } break;

        default:
            //TraceUtil.Log("不能识别的主消息:" + package.GetMasterMsgType());
            break;
        }
    }
Exemplo n.º 11
0
    /// <summary>
    /// 从整体字节数组获得实体上下文的具体数据
    /// </summary>
    /// <param name="dataBuffer"></param>
    /// <returns></returns>
    public static BoxSubMsgEntity ParsePackage(byte[] dataBuffer, int offset)
    {
        Package package = PackageHelper.ParseReceiveData(dataBuffer);

        return(ParsePackage(package, offset));
    }
Exemplo n.º 12
0
 private static IEnumerable <string> GetValidPackageItems(IEnumerable <string> items)
 {
     // Assume nupkg and nuspec as the save mode for identifying valid package files
     return(items?.Where(i => PackageHelper.IsPackageFile(i, PackageSaveMode.Defaultv3)) ?? Enumerable.Empty <string>());
 }
Exemplo n.º 13
0
 public uint dwLeaderID;             // 组长ID
 public static SMsgPVPMathingLeave_SC ParsePackage(byte[] dataBuffer)
 {
     return(PackageHelper.BytesToStuct <SMsgPVPMathingLeave_SC>(dataBuffer));
 }
Exemplo n.º 14
0
 public uint dwActorID;                      // 邀请者的ActorID
 public static SMsgPVPFriendConfirm_CS ParsePackage(byte[] dataBuffer)
 {
     return(PackageHelper.BytesToStuct <SMsgPVPFriendConfirm_CS>(dataBuffer));
 }
Exemplo n.º 15
0
 public void PrepareUrlForRenderingTest(string input, bool alwaysRewriteHttp, string expectedOutput, bool expectConversion)
 {
     Assert.Equal(expectConversion, PackageHelper.TryPrepareUrlForRendering(input, out string readyUriString, alwaysRewriteHttp));
     Assert.Equal(expectedOutput, readyUriString);
 }
Exemplo n.º 16
0
    public override void SaveResponseHandleToInvoke(byte[] dataBuffer, int socketId, byte cmdtype)
    {
        MasterMsgType masterMsgType = (MasterMsgType)cmdtype;
        Package       package       = PackageHelper.ParseReceiveData(dataBuffer);

        //TraceUtil.Log("收到副本主消息" + masterMsgType + "收到子消息。" + package.GetSubMsgType());
        switch (masterMsgType)
        {
        case MasterMsgType.NET_ROOT_ECTYPE:
            switch (package.GetSubMsgType())
            {
            //case EctypeDefineManager.MSG_ECTYPE_WORLDMAP_SELECT:
            //    //TraceUtil.Log("收到世界地图创建选择消息");
            //    this.AddToInvoker(WorldMapSelectHandle, dataBuffer, socketId);
            //    break;

            //case EctypeDefineManager.MSG_ECTYPE_ECTYPECONTAINER_LEVELDATAS:
            //    this.AddToInvoker(EctypeLevelDataHandle, dataBuffer, socketId);
            //    //TraceUtil.Log("回应关卡信息!!!!!");
            //    break;

            //case EctypeDefineManager.MSG_ECTYPE_SETTLEACCOUNTS:
            //    this.AddToInvoker(EctypeSettleAccountHandle, dataBuffer, socketId);
            //    //TraceUtil.Log("收到副本结算消息!");
            //    break;

            //case EctypeDefineManager.MSG_ECTYPE_SYN_SKILLDATA:
            //    this.AddToInvoker(ReceiveSkillDataHandle, dataBuffer, socketId);
            //    break;

            //case EctypeDefineManager.MSG_ECTYPE_CREATEERROR:
            //    this.AddToInvoker(EctypeRequestError, dataBuffer, socketId);
            //    //TraceUtil.Log("创建副本失败!!");
            //    break ;
            case ECTYPE_DefineManager.MSG_ECTYPE_SYN_SKILLDATA:
                //TraceUtil.Log("收到技能同步消息");
                this.AddToInvoker(ReceiveSkillDataHandle, dataBuffer, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_SELECT:
                //TraceUtil.Log("收到跳转副本界面消息");
                this.AddToInvoker(EctypeSelectHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_LEVELDATA:
                //TraceUtil.Log("收到单个副本信息");
                this.AddToInvoker(EctypeLevelDataHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_CANENTER_ECTYPE:
                //TraceUtil.Log("所有队友加入副本成功");
                this.AddToInvoker(ResponeTeamateEnterEctype, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_SETTLEACCOUNTS:
                this.AddToInvoker(EctypeSettleAccountHandle, dataBuffer, socketId);
                //TraceUtil.Log("收到副本结算消息!");
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PLAYERREVIVE:
                this.AddToInvoker(sMSGEctypePlayerReviveHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_TREASUREAWARD:
                //TraceUtil.Log("收到宝箱奖励消息 ");
                this.AddToInvoker(sMSGEctypeTreasureReward_SCHandel, package.Data, socketId);
                break;

            //\
            case ECTYPE_DefineManager.MSG_TEST_BEGIN_LOG:
                this.AddToInvoker(StartPrintHandle, package.Data, socketId);

                break;

            case ECTYPE_DefineManager.MSG_TEST_END_LOG:
                this.AddToInvoker(EndPrintHandle, package.Data, socketId);

                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_ERRORCODE:
                this.AddToInvoker(EctypeErrorCodeHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_CLEARANCE:
                this.AddToInvoker(ECTYPE_CLEARANCEHandle, package.Data, socketId);

                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PVP_FINDPLAYER:
                this.AddToInvoker(PVPFindPlayerHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PVP_READY:
                this.AddToInvoker(PVPReadyHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PVP_FIGHTING:
                this.AddToInvoker(PVPFightingHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PVP_SETTLEACCOUNTS:
                this.AddToInvoker(PVPSettleAccountHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_INITIALIZE:
                this.AddToInvoker(InitializeEctypeHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_YAOQIPROP:
                this.AddToInvoker(UpdateYaoqiHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PRACTICE_LIST:        //练功房列表
                this.AddToInvoker(ReceiveMartialArtsRoomList, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_ALLSEAT_INFO:        //同步房间座位信息
                this.AddToInvoker(ReceiveEctypeAllSeatInfo, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_SET_INFO:        //同步座位信息
                this.AddToInvoker(ReceiveUpdateEctypeSeatInfo, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_TRIALS_INFO:        //试炼副本列表
                this.AddToInvoker(ReceiveTrialsEctypeList, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_TRIALS_SUBRESULT:        //试炼副本波数结算
                this.AddToInvoker(ReceiveSingleTrialsSettlement, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_TRIALS_TOTALRESULT:        //试炼副本结算
                this.AddToInvoker(ReceiveTrialsSettlement, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_PRACIICE_YAONVUPDATE:
                //TraceUtil.Log("[ReceivePracticeYaoNvUpdateHandle]");
                this.AddToInvoker(ReceivePracticeYaoNvUpdateHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_SHOW_TIPS:
                this.AddToInvoker(ReceiveMissionFailSettement, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_FIGHT_MODE:
                this.AddToInvoker(EctypeFightModeHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_NORMAL_RESULT:
                this.AddToInvoker(ReceiveBossDeadSettement, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_YAONVSKILL_USETIME:
                this.AddToInvoker(ReceiveYaoNvSkillUseTime, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_OPEN_CHEST:
                this.AddToInvoker(ReceiveTreasureThestsOpenMsg, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_DEFINE_LOOPNUM:
                this.AddToInvoker(ReceiveLoopNumMsg, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_DEFINE_LOOPMAX:
                this.AddToInvoker(ReceiveMaxLoopNUmMsg, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_FINISH:
                this.AddToInvoker(ReceiveEctypeFinishMsg, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_DEFINE_INFO:
                this.AddToInvoker(ReceiveEctypeDefineInfoMsg, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_DEFINE_UPDATA:
                this.AddToInvoker(ReceiveEctypeDefineUpdateMsg, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_MEMBER_UPDATEPROP:
                this.AddToInvoker(ReceiveEctypePropsHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_DEFINE_RESULT:
                this.AddToInvoker(ReceiveDefenceEctypeResultHandle, package.Data, socketId);
                break;

            //常规副本信息
            case ECTYPE_DefineManager.MSG_ECTYPE_NORMAL_INFO:
                this.AddToInvoker(ReceiveEctypeNomalDataHandle, package.Data, socketId);
                break;

            //常规副本信息更新
            case ECTYPE_DefineManager.MSG_ECTYPE_NORMAL_UPDATA:
                this.AddToInvoker(ReceiveEctypeNomalUpdateHandle, package.Data, socketId);
                break;

            //更新副本宝箱信息
            case ECTYPE_DefineManager.MSG_ECTYPE_NORMAL_UPDATACHEST:
                this.AddToInvoker(ReceiveChessInfoUpdateHandle, package.Data, socketId);
                break;

            //无尽副本波数
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_LOOPNUM:
                this.AddToInvoker(ReceiveEndlessLoopNumHandle, package.Data, socketId);
                break;

            //无尽副本获得奖励(无尽副本闯过的波数)
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_REWARD:
                this.AddToInvoker(ReceiveEndlessPassLoopHandle, package.Data, socketId);
                break;

            //无尽副本结算
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_RESULT:
                this.AddToInvoker(ReceiveEndlessFinishPassLoopHandle, package.Data, socketId);
                break;

            //无尽副本界面数据
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_INFO:
                this.AddToInvoker(ReceiveEndlessBestDataHandle, package.Data, socketId);
                break;

            //无尽副本界面数据更新
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_UPDATA:
                this.AddToInvoker(ReceiveEndlessBestDataUpdateHandle, package.Data, socketId);
                break;

            //无尽副本断线重连
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_LOOPTIME:
                this.AddToInvoker(ReceiveEndlessAgainConnectHandle, package.Data, socketId);
                break;

            //无尽副本跳转场景
            case ECTYPE_DefineManager.MSG_ECTYPE_ENDLESS_MAPJUMPTIME:
                this.AddToInvoker(ReceiveEndlessSceneTimeHandle, package.Data, socketId);
                break;

            //讨伐副本结算
            case ECTYPE_DefineManager.MSG_ECTYPE_CRUSADE_RESULT:
                this.AddToInvoker(ReceiveEctypeCrusadeResultHandle, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_CRUSADE_TIME:
                this.AddToInvoker(ReceiveEctypeCrusadeTime, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_UPDATE_BLOCK:
                this.AddToInvoker(ReceiveEctypeUpdateBlock, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_RESULT_SWEEP:
                this.AddToInvoker(ReceiveEctypeSweepReward, package.Data, socketId);
                break;

            case ECTYPE_DefineManager.MSG_ECTYPE_RANDOM_REWARD:
                this.AddToInvoker(ReceiveEctypeRandomReward, package.Data, socketId);
                break;
                //case ECTYPE_DefineManager.MSG_ECTYPE_PVP_RESULT:
                //	this.AddToInvoker(ReceiveEctypePVPSettlement, package.Data, socketId);
                break;

            default:
                //TraceUtil.Log("NET_ROOT_ECTYPE" + package.GetSubMsgType());
                break;
            }
            break;

        default:
            //TraceUtil.Log("不能识别的主消息" + package.GetMasterMsgType());
            break;
        }
    }
Exemplo n.º 17
0
 internal static string PillarOrElevationName(string packageName, string fullName) => packageName + "." + PackageHelper.StripName(fullName);
Exemplo n.º 18
0
        private static void PackagesWatcher_Created(object sender, FileSystemEventArgs e)
        {
            string filePath = e.FullPath;

            EditorApplication.update += InstallPackage;

            void InstallPackage()
            {
                try
                {
                    EditorApplication.update -= InstallPackage;

                    AssetDatabase.StartAssetEditing();

                    string fileNameNoExt  = Path.GetFileNameWithoutExtension(filePath);
                    var    dependencyPath = Path.Combine(Packages, fileNameNoExt);
                    if (Directory.Exists(dependencyPath))
                    {
                        Directory.Delete(dependencyPath, true);
                    }
                    if (File.Exists($"{dependencyPath}.meta"))
                    {
                        File.Delete($"{dependencyPath}.meta");
                    }

                    Directory.CreateDirectory(dependencyPath);

                    using (var fileStream = File.OpenRead(filePath))
                        using (var archive = new ZipArchive(fileStream))
                            foreach (var entry in archive.Entries)
                            {
                                if (entry.FullName.ToLower().EndsWith("/") || entry.FullName.ToLower().EndsWith("\\"))
                                {
                                    continue;
                                }

                                var outputPath = Path.Combine(dependencyPath, entry.FullName);
                                var outputDir  = Path.GetDirectoryName(outputPath);
                                var fileName   = Path.GetFileName(outputPath);

                                if (!Directory.Exists(outputDir))
                                {
                                    Directory.CreateDirectory(outputDir);
                                }

                                entry.ExtractToFile(outputPath);
                                if (Path.GetExtension(fileName).Equals(".dll"))
                                {
                                    string assemblyPath = outputPath;
                                    PackageHelper.WriteAssemblyMetaData(assemblyPath, $"{assemblyPath}.meta");
                                }
                                if ("manifest.json".Equals(fileName.ToLower()))
                                {
                                    var stubManifest = CreateThunderstoreManifest.LoadStub(outputPath);
                                    var authorAlias  = fileNameNoExt.Substring(0, fileNameNoExt.IndexOf('-'));
                                    PackageHelper.GeneratePackageManifest(
                                        stubManifest.name.ToLower(), outputDir,
                                        stubManifest.name, authorAlias,
                                        stubManifest.version_number,
                                        stubManifest.description,
                                        stubManifest.website_url);
                                }
                            }
                    File.Delete(filePath);
                }
                finally
                {
                    AssetDatabase.StopAssetEditing();
                    AssetDatabase.Refresh();
                }
            }
        }
Exemplo n.º 19
0
 public IndexModel(IWebHostEnvironment env)
 {
     _helper = new PackageHelper(env.WebRootPath);
 }
        internal static object CustomDeserialize(Package p, Type t, PackageReader r)
        {
            // Props and trees in buildings and parks.
            if (t == typeof(BuildingInfo.Prop))
            {
                PropInfo pi = Get <PropInfo>(r.ReadString()); // old name format (without package name) is possible
                TreeInfo ti = Get <TreeInfo>(r.ReadString()); // old name format (without package name) is possible

                if (instance.report && UsedAssets.instance.GotAnyContainer())
                {
                    if (pi != null)
                    {
                        string n = pi.gameObject.name;

                        if (!string.IsNullOrEmpty(n) && n.IndexOf('.') >= 0)
                        {
                            UsedAssets.instance.IndirectProps.Add(n);
                        }
                    }

                    if (ti != null)
                    {
                        string n = ti.gameObject.name;

                        if (!string.IsNullOrEmpty(n) && n.IndexOf('.') >= 0)
                        {
                            UsedAssets.instance.IndirectTrees.Add(n);
                        }
                    }
                }

                return(new BuildingInfo.Prop
                {
                    m_prop = pi,
                    m_tree = ti,
                    m_position = r.ReadVector3(),
                    m_angle = r.ReadSingle(),
                    m_probability = r.ReadInt32(),
                    m_fixedHeight = r.ReadBoolean()
                });
            }

            // Paths (nets) in buildings.
            if (t == typeof(BuildingInfo.PathInfo))
            {
                string  fullName           = r.ReadString();
                NetInfo ni                 = Get <NetInfo>(fullName);
                BuildingInfo.PathInfo path = new BuildingInfo.PathInfo();
                path.m_netInfo         = ni;
                path.m_nodes           = r.ReadVector3Array();
                path.m_curveTargets    = r.ReadVector3Array();
                path.m_invertSegments  = r.ReadBoolean();
                path.m_maxSnapDistance = r.ReadSingle();

                if (p.version >= 5)
                {
                    path.m_forbidLaneConnection = r.ReadBooleanArray();
                    path.m_trafficLights        = (BuildingInfo.TrafficLights[])(object) r.ReadInt32Array();
                    path.m_yieldSigns           = r.ReadBooleanArray();
                }

                return(path);
            }

            if (t == typeof(Package.Asset))
            {
                return(r.ReadAsset(p));
            }

            // It seems that trailers are listed in the save game so this is not necessary. Better to be safe however
            // because a missing trailer reference is fatal for the simulation thread.
            if (t == typeof(VehicleInfo.VehicleTrailer))
            {
                string      name     = r.ReadString();
                string      fullName = p.packageName + "." + name;
                VehicleInfo vi       = Get <VehicleInfo>(p, fullName, name, false);

                VehicleInfo.VehicleTrailer trailer;
                trailer.m_info              = vi;
                trailer.m_probability       = r.ReadInt32();
                trailer.m_invertProbability = r.ReadInt32();
                return(trailer);
            }

            if (t == typeof(NetInfo.Lane))
            {
                return(new NetInfo.Lane
                {
                    m_position = r.ReadSingle(),
                    m_width = r.ReadSingle(),
                    m_verticalOffset = r.ReadSingle(),
                    m_stopOffset = r.ReadSingle(),
                    m_speedLimit = r.ReadSingle(),
                    m_direction = (NetInfo.Direction)r.ReadInt32(),
                    m_laneType = (NetInfo.LaneType)r.ReadInt32(),
                    m_vehicleType = (VehicleInfo.VehicleType)r.ReadInt32(),
                    m_stopType = (VehicleInfo.VehicleType)r.ReadInt32(),
                    m_laneProps = GetNetLaneProps(p, r),
                    m_allowConnect = r.ReadBoolean(),
                    m_useTerrainHeight = r.ReadBoolean(),
                    m_centerPlatform = r.ReadBoolean(),
                    m_elevated = r.ReadBoolean()
                });
            }

            if (t == typeof(NetInfo.Segment))
            {
                NetInfo.Segment segment  = new NetInfo.Segment();
                string          checksum = r.ReadString();
                segment.m_mesh              = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMesh(checksum, p, true);
                checksum                    = r.ReadString();
                segment.m_material          = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMaterial(checksum, p, true);
                checksum                    = r.ReadString();
                segment.m_lodMesh           = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMesh(checksum, p, false);
                checksum                    = r.ReadString();
                segment.m_lodMaterial       = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMaterial(checksum, p, false);
                segment.m_forwardRequired   = (NetSegment.Flags)r.ReadInt32();
                segment.m_forwardForbidden  = (NetSegment.Flags)r.ReadInt32();
                segment.m_backwardRequired  = (NetSegment.Flags)r.ReadInt32();
                segment.m_backwardForbidden = (NetSegment.Flags)r.ReadInt32();
                segment.m_emptyTransparent  = r.ReadBoolean();
                segment.m_disableBendNodes  = r.ReadBoolean();
                return(segment);
            }

            if (t == typeof(NetInfo.Node))
            {
                NetInfo.Node node     = new NetInfo.Node();
                string       checksum = r.ReadString();
                node.m_mesh             = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMesh(checksum, p, true);
                checksum                = r.ReadString();
                node.m_material         = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMaterial(checksum, p, true);
                checksum                = r.ReadString();
                node.m_lodMesh          = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMesh(checksum, p, false);
                checksum                = r.ReadString();
                node.m_lodMaterial      = string.IsNullOrEmpty(checksum) ? null : Sharing.instance.GetMaterial(checksum, p, false);
                node.m_flagsRequired    = (NetNode.Flags)r.ReadInt32();
                node.m_flagsForbidden   = (NetNode.Flags)r.ReadInt32();
                node.m_connectGroup     = (NetInfo.ConnectGroup)r.ReadInt32();
                node.m_directConnect    = r.ReadBoolean();
                node.m_emptyTransparent = r.ReadBoolean();
                return(node);
            }

            if (t == typeof(NetInfo))
            {
                string name = r.ReadString();
                CustomAssetMetaData.Type type = AssetLoader.instance.GetMetaType(AssetLoader.instance.Current);

                if (type == CustomAssetMetaData.Type.Road || type == CustomAssetMetaData.Type.RoadElevation)
                {
                    return(Get <NetInfo>(p, name)); // elevations, bridges, slopes, tunnels in nets
                }
                else
                {
                    return(Get <NetInfo>(name)); // train lines, metro lines in buildings (stations)
                }
            }

            if (t == typeof(BuildingInfo))
            {
                string name = r.ReadString();
                CustomAssetMetaData.Type type = AssetLoader.instance.GetMetaType(AssetLoader.instance.Current);

                if (type == CustomAssetMetaData.Type.Road || type == CustomAssetMetaData.Type.RoadElevation)
                {
                    return(Get <BuildingInfo>(p, name)); // pillars in nets
                }
                else
                {
                    return(Get <BuildingInfo>(name)); // do these exist?
                }
            }

            // Sub-buildings in buildings.
            if (t == typeof(BuildingInfo.SubInfo))
            {
                string       name     = r.ReadString();
                string       fullName = p.packageName + "." + name;
                BuildingInfo bi       = null;

                if (fullName == AssetLoader.instance.Current.fullName || name == AssetLoader.instance.Current.fullName)
                {
                    Util.DebugPrint("Warning:", fullName, "wants to be a sub-building for itself");
                }
                else
                {
                    bi = Get <BuildingInfo>(p, fullName, name, true);
                }

                BuildingInfo.SubInfo subInfo = new BuildingInfo.SubInfo();
                subInfo.m_buildingInfo = bi;
                subInfo.m_position     = r.ReadVector3();
                subInfo.m_angle        = r.ReadSingle();
                subInfo.m_fixedHeight  = r.ReadBoolean();
                return(subInfo);
            }

            // Prop variations in props.
            if (t == typeof(PropInfo.Variation))
            {
                string   name     = r.ReadString();
                string   fullName = p.packageName + "." + name;
                PropInfo pi       = null;

                if (fullName == AssetLoader.instance.Current.fullName)
                {
                    Util.DebugPrint("Warning:", fullName, "wants to be a prop variation for itself");
                }
                else
                {
                    pi = Get <PropInfo>(p, fullName, name, false);
                }

                return(new PropInfo.Variation
                {
                    m_prop = pi,
                    m_probability = r.ReadInt32()
                });
            }

            // Tree variations in trees.
            if (t == typeof(TreeInfo.Variation))
            {
                string   name     = r.ReadString();
                string   fullName = p.packageName + "." + name;
                TreeInfo ti       = null;

                if (fullName == AssetLoader.instance.Current.fullName)
                {
                    Util.DebugPrint("Warning:", fullName, "wants to be a tree variation for itself");
                }
                else
                {
                    ti = Get <TreeInfo>(p, fullName, name, false);
                }

                return(new TreeInfo.Variation
                {
                    m_tree = ti,
                    m_probability = r.ReadInt32()
                });
            }

            if (t == typeof(VehicleInfo.MeshInfo))
            {
                VehicleInfo.MeshInfo meshinfo = new VehicleInfo.MeshInfo();
                string checksum = r.ReadString();

                if (!string.IsNullOrEmpty(checksum))
                {
                    Package.Asset asset = p.FindByChecksum(checksum);
                    GameObject    go    = AssetDeserializer.Instantiate(asset) as GameObject;
                    meshinfo.m_subInfo = go.GetComponent <VehicleInfoBase>();
                    go.SetActive(false);

                    if (meshinfo.m_subInfo.m_lodObject != null)
                    {
                        meshinfo.m_subInfo.m_lodObject.SetActive(false);
                    }
                }
                else
                {
                    meshinfo.m_subInfo = null;
                }

                meshinfo.m_vehicleFlagsForbidden = (Vehicle.Flags)r.ReadInt32();
                meshinfo.m_vehicleFlagsRequired  = (Vehicle.Flags)r.ReadInt32();
                meshinfo.m_parkedFlagsForbidden  = (VehicleParked.Flags)r.ReadInt32();
                meshinfo.m_parkedFlagsRequired   = (VehicleParked.Flags)r.ReadInt32();
                return(meshinfo);
            }

            return(PackageHelper.CustomDeserialize(p, t, r));
        }
Exemplo n.º 21
0
        public static async Task <int> RunAndReturn(PushOptions options, PackageHelper packageHelper)
        {
            // --package=MyFile.zip
            // --package=./MyFile.zip
            // --package=../MyParentFolder.zip
            var filePath = options.Package;
            var apiKey   = options.ApiKey;

            var keyParts = packageHelper.SplitKey(apiKey);

            // Check we can find the file
            packageHelper.EnsurePackageExists(filePath);

            // Check File is a ZIP
            packageHelper.EnsureIsZip(filePath);

            // Check zip contains valid package.xml
            packageHelper.EnsureContainsPackageXml(filePath);

            // gets a package list from our.umbraco
            // if the api key is invalid we will also find out here.
            var packages = await packageHelper.GetPackageList(keyParts);

            var currentPackageId = await packageHelper.GetCurrentPackageFileId(keyParts);

            if (packages != null)
            {
                packageHelper.EnsurePackageDoesntAlreadyExists(packages, filePath);
            }

            // Archive packages
            var archivePatterns   = new List <string>();
            var packagesToArchive = new List <int>();

            if (options.Archive != null)
            {
                archivePatterns.AddRange(options.Archive);
            }

            if (archivePatterns.Count > 0)
            {
                foreach (var archivePattern in archivePatterns)
                {
                    if (archivePattern == "current")
                    {
                        // If the archive option is "current", then archive the current package
                        if (currentPackageId != "0")
                        {
                            packagesToArchive.Add(int.Parse(currentPackageId));
                        }
                    }
                    else
                    {
                        // Convert the archive option to a regex
                        var archiveRegex = new Regex("^" + archivePattern.Replace(".", "\\.").Replace("*", "(.*)") + "$", RegexOptions.IgnoreCase);

                        // Find packages that match the regex and extract their IDs
                        var archiveIds = packages.Where(x => archiveRegex.IsMatch(x.Value <string>("Name"))).Select(x => x.Value <int>("Id")).ToArray();

                        packagesToArchive.AddRange(archiveIds);
                    }
                }
            }

            if (packagesToArchive.Count > 0)
            {
                await packageHelper.ArchivePackages(keyParts, packagesToArchive.Distinct());

                Console.WriteLine($"Archived {packagesToArchive.Count} packages matching the archive pattern.");
            }

            // Parse package.xml before upload to print out info
            // and to use for comparison on what is already uploaded
            var packageInfo = Parse.PackageXml(filePath);

            // OK all checks passed - time to upload it
            await UploadPackage(options, packageHelper, packageInfo);

            return(0);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Asynchronously deletes a package.
        /// </summary>
        /// <param name="packageIdentity">A package identity.</param>
        /// <param name="nuGetProjectContext">A NuGet project context.</param>
        /// <param name="token">A cancellation token.</param>
        /// <returns>A task that represents the asynchronous operation.
        /// The task result (<see cref="Task{TResult}.Result" />) returns a <see cref="bool" />
        /// indication successfulness of the operation.</returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="packageIdentity" />
        /// is <c>null</c>.</exception>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="nuGetProjectContext" />
        /// is <c>null</c>.</exception>
        public async Task <bool> DeletePackage(PackageIdentity packageIdentity,
                                               INuGetProjectContext nuGetProjectContext,
                                               CancellationToken token)
        {
            if (packageIdentity == null)
            {
                throw new ArgumentNullException(nameof(packageIdentity));
            }

            if (nuGetProjectContext == null)
            {
                throw new ArgumentNullException(nameof(nuGetProjectContext));
            }

            var packageFilePath = GetInstalledPackageFilePath(packageIdentity);

            if (File.Exists(packageFilePath))
            {
                var packageDirectoryPath = Path.GetDirectoryName(packageFilePath);
                using (var packageReader = new PackageArchiveReader(packageFilePath))
                {
                    var installedSatelliteFilesPair = await PackageHelper.GetInstalledSatelliteFilesAsync(
                        packageReader,
                        PackagePathResolver,
                        GetPackageSaveMode(nuGetProjectContext),
                        token);

                    var runtimePackageDirectory = installedSatelliteFilesPair.Item1;
                    var installedSatelliteFiles = installedSatelliteFilesPair.Item2;
                    if (!string.IsNullOrEmpty(runtimePackageDirectory))
                    {
                        try
                        {
                            // Delete all the package files now
                            FileSystemUtility.DeleteFiles(installedSatelliteFiles, runtimePackageDirectory, nuGetProjectContext);
                        }
                        catch (Exception ex)
                        {
                            nuGetProjectContext.Log(MessageLevel.Warning, ex.Message);
                            // Catch all exception with delete so that the package file is always deleted
                        }
                    }

                    // Get all the package files before deleting the package file
                    var installedPackageFiles = await PackageHelper.GetInstalledPackageFilesAsync(
                        packageReader,
                        packageIdentity,
                        PackagePathResolver,
                        GetPackageSaveMode(nuGetProjectContext),
                        token);

                    try
                    {
                        // Delete all the package files now
                        FileSystemUtility.DeleteFiles(installedPackageFiles, packageDirectoryPath, nuGetProjectContext);
                    }
                    catch (Exception ex)
                    {
                        nuGetProjectContext.Log(MessageLevel.Warning, ex.Message);
                        // Catch all exception with delete so that the package file is always deleted
                    }
                }

                // Delete the package file
                FileSystemUtility.DeleteFile(packageFilePath, nuGetProjectContext);

                // Delete the package directory if any
                FileSystemUtility.DeleteDirectorySafe(packageDirectoryPath, recursive: true, nuGetProjectContext: nuGetProjectContext);

                // If this is the last package delete the package directory
                // If this is the last package delete the package directory
                if (!FileSystemUtility.GetFiles(Root, string.Empty, "*.*").Any() &&
                    !FileSystemUtility.GetDirectories(Root, string.Empty).Any())
                {
                    FileSystemUtility.DeleteDirectorySafe(Root, recursive: false, nuGetProjectContext: nuGetProjectContext);
                }
            }

            return(true);
        }
Exemplo n.º 23
0
 public void ResolveSpecificVersionOfUnknownPackageThrows()
 {
     ExceptionAssert.Throws <InvalidOperationException>(
         () => PackageHelper.ResolvePackage(new MockPackageRepository(), new MockPackageRepository(), "elmah", new SemanticVersion("1.1"), allowPrereleaseVersions: false),
         "Unable to find version '1.1' of package 'elmah'.");
 }
Exemplo n.º 24
0
 public FeedController(IWebHostEnvironment env)
 {
     _helper = new PackageHelper(env.WebRootPath);
     _feed   = new FeedWriter();
 }
Exemplo n.º 25
0
        public void Execute()
        {
            var   parser     = new FluentCommandLineParser();
            IFile outputFile = null;

            parser.Setup <string>('o', "output")
            .WithDescription("Output report html file path to be created.")
            .Required()
            .Callback(x => outputFile = FileSystem.ParseFile(x));

            var fileDialog = false;

            parser.Setup <bool>('f', "fileDiaog")
            .WithDescription("Show popup dialog to choose mega SSPG file")
            .Callback(x => fileDialog = x);

            var dirDialog = false;

            parser.Setup <bool>('d', "directoryDiaog")
            .WithDescription("Show popup dialog to choose extracted mega SSPG file")
            .Callback(x => dirDialog = x);

            var openReport = false;

            parser.Setup <bool>('e', "open")
            .WithDescription("Open report after generating")
            .Callback(x => openReport = x);

            IFile mega = null;

            parser.Setup <string>('p', "package")
            .WithDescription("Path to the mega SSPG package file")
            .Callback(x => mega = FileSystem.ParseFile(x));

            var workplaceName = "";

            parser.Setup <string>('n', "name")
            .WithDescription("Workplace name.")
            .Callback(x => workplaceName = x);

            var result = parser.Parse(Options);

            if (result.HelpCalled)
            {
                return;
            }

            var   assemblyName  = Assembly.GetExecutingAssembly().GetName().ToString();
            var   system        = new SystemContext(assemblyName);
            IFile workplaceFile = null;

            SupportPackageDataProvider[] packages = null;
            if (fileDialog)
            {
                var dialog = new OpenFileDialog
                {
                    Filter      = "Mega Support Package|*.zip|Diagnostics Tool Workspace|*.sdt",
                    Multiselect = false,
                };

                IFile file;
                while (true)
                {
                    var dialogResult = dialog.ShowDialog();

                    if (dialogResult == DialogResult.Cancel)
                    {
                        return;
                    }

                    file = FileSystem.ParseFile(dialog.FileName);
                    if (file.Exists)
                    {
                        break;
                    }
                }

                if (file.Extension.Equals(".sdt", StringComparison.OrdinalIgnoreCase))
                {
                    mega          = null;
                    workplaceFile = file;
                }
                else
                {
                    mega = file;
                }
            }
            else if (dirDialog)
            {
                var dialog = new FolderBrowserDialog();

                IDirectory dir;
                while (true)
                {
                    var dialogResult = dialog.ShowDialog();

                    if (dialogResult == DialogResult.Cancel)
                    {
                        return;
                    }

                    dir = FileSystem.ParseDirectory(dialog.SelectedPath);
                    if (dir.Exists)
                    {
                        break;
                    }
                }

                packages = dir.GetDirectories()
                           .ToArray(x =>
                                    new SupportPackageDataProvider(x, null, null));
            }

            if (packages == null)
            {
                if (mega != null)
                {
                    if (!mega.Exists)
                    {
                        Console.WriteLine($"File does not exist: {mega}");

                        return;
                    }

                    packages = PackageHelper.ExtractMegaPackage(mega)
                               .ToArray(x =>
                                        new SupportPackageDataProvider(x, null, null));
                }
            }

            if (packages == null)
            {
                workplaceFile = workplaceFile ?? FileSystem.GetWorkplaceFile(workplaceName);
                if (!workplaceFile.Exists)
                {
                    Program.ShowHelp();
                    return;
                }

                packages = workplaceFile.ReadAllLines()
                           .Select(x => x.Split('?'))
                           .Select(x => new
                {
                    Path  = x[0],
                    Roles = x[1].Split('|')
                            .Select(r => (ServerRole)Enum.Parse(typeof(ServerRole), r))
                            .ToArray()
                })
                           .Select(x =>
                {
                    Console.WriteLine($"Parsing {x.Path}");

                    var file = FileSystem.ParseFile(x.Path);
                    var dir  = FileSystem.ParseDirectory(x.Path);
                    Assert.IsTrue(file.Exists || dir.Exists, "Neither file nor dir exists: " + x.Path);

                    var fileSystemEntry = file.Exists ? (IFileSystemEntry)file : dir;

                    return(new SupportPackageDataProvider(fileSystemEntry, x.Roles, null));
                })
                           .ToArray();
            }

            try
            {
                Console.WriteLine("Running tests...");
                var resultsFile = TestRunner.TestRunner.RunTests(packages, system, (test, index, count) => Console.WriteLine($"Running {test?.Name}..."));

                outputFile.Directory.Create();

                Console.WriteLine("Building report...");

                outputFile.WriteAllText(ReportBuilder.GenerateReport(resultsFile));

                if (openReport)
                {
                    Process.Start("explorer", $"\"{outputFile}\"");
                }
            }
            finally
            {
                foreach (var package in packages)
                {
                    package?.Dispose();
                }
            }
        }
Exemplo n.º 26
0
 public void GetDepthTest(int depth, string name)
 {
     Assert.Equal(depth, PackageHelper.GetDepth(name));
 }
Exemplo n.º 27
0
 public void Basic()
 {
     PackageHelper.CreatePackage(Settings, "mypackage");
     (bool, string)result = this.IndexReader.VerifyPackage("mypackage");
     Assert.True(result.Item1);
 }
Exemplo n.º 28
0
 public void ShouldRenderUrlTests(string url, bool secureOnly, bool shouldRender)
 {
     Assert.Equal(shouldRender, PackageHelper.ShouldRenderUrl(url, secureOnly: secureOnly));
 }
Exemplo n.º 29
0
 private void RestartApp_Click(object sender, RoutedEventArgs e)
 {
     PackageHelper.RestartApp();
 }
Exemplo n.º 30
0
    public int dwEctypeContainerID;     //副本id

    public static SMsgConfirmMatching_SC ParsePackage(byte[] dataBuffer)
    {
        return(PackageHelper.BytesToStuct <SMsgConfirmMatching_SC>(dataBuffer));
    }