Esempio n. 1
0
        /// <summary>
        /// Отрисовка временных линий и значений.
        /// </summary>
        /// <param name="canvas"></param>
        /// <param name="rectPaint"></param>
        public void Paint(GCandles.CandleInfo candleData)
        {
            var lineVer = new VerLine();

            //Рисуем линию разделяющую периоды или разрывы
            if (LastCandle.NotIsNull())
            {
                if (candleData.Candle.Time.AddMinutes(candleData.TimeFrame) < LastCandle.Candle.Time)
                {
                    var p1 = new PointF(LastCandle.Body.X, this.Panel.Rect.Y);
                    var p2 = new PointF(LastCandle.Body.X, this.Panel.Rect.Y + this.Panel.Rect.Height);
                    lineVer.ColorLine = Color.FromArgb(100, Color.Gray);
                    lineVer.WidthLine = 1;
                    lineVer.FillText  = true;
                    lineVer.Paint(PanelCanvas, null, p1, p2);
                }
            }
            int x = candleData.TailCoord.High.X;

            if (index == 1)
            {
                LastX = x;
            }
            if (LastX - x > PERIOD_SPLIT_LINE || index == 1)
            {
                var    p1   = new Point(x, this.Panel.Rect.Y);
                var    p2   = new Point(x, this.Panel.Rect.Y + this.Panel.Rect.Height);
                string min  = candleData.Candle.Time.Minute.ToString();
                string hour = candleData.Candle.Time.Hour.ToString();
                string time = candleData.Candle.Time.Day.ToString() + "." + candleData.Candle.Time.Month.ToString()
                              + "/" + (hour.Length < 2 ? '0' + hour : hour) + ":" + (min.Length < 2 ? '0' + min : min);
                //if (LastX - x > 70) time = candleData.Candle.Time.Day.ToString() + "/" + candleData.Candle.Time.Month.ToString() + " " + time;

                lineVer.ColorLine = this.ColorMarkLine;
                lineVer.ColorText = Color.Gray;
                lineVer.WidthLine = 1;
                lineVer.FillText  = true;
                lineVer.Paint(PanelCanvas, time, p1, p2);
                LastX = x;
            }
            LastCandle = candleData;
            if (x < 0)
            {
                return;
            }
            index++;
        }
Esempio n. 2
0
        public static BuildAppResult BuildApk(
            string unityExePath,
            string nssUnityProj,
            BuildMode buildMode,
            bool prepareProject,
            string sdkRoot,
            string ndkRoot,
            string jdkRoot,
            string versionJsonPath  = null,
            VerLine verLine         = VerLine.DB,
            PackageType packageType = PackageType.Normal,
            BuildOption buildOption = BuildOption.None,
            string toolsDir         = "../Tools",
            string outputDir        = "Output",
            int svnRev = -1)
        {
            ModifyMacro(nssUnityProj, buildMode, packageType, buildOption);

            var result = new BuildAppResult();

            result.defaultTDir = ModifyDefaultLaunch(nssUnityProj, verLine, buildMode);

            var unityExe       = new Executable(unityExePath);
            var unityArguments = $"-batchmode -quit -logFile \"{SpaceUtil.GetPathInTemp("log.log", true)}\" -projectPath \"{nssUnityProj}\" -executeMethod \"NssIntegration.BuildProcedure.Entry\" -l \"{SpaceUtil.GetPathInTemp("log2.log", true)}\"";

            if (prepareProject)
            {
                unityArguments += $" PrepareProject {buildMode} {BuildTarget.Android} \"{versionJsonPath}\" {packageType} {buildOption} \"{toolsDir}\"";
            }
            unityArguments += $" BuildApk {buildMode} \"{sdkRoot}\" \"{ndkRoot}\" \"{jdkRoot}\" {verLine} {packageType} {buildOption} \"{toolsDir}\" \"{outputDir}\" {svnRev}";
            unityExe.Execute(unityArguments);

            var apks = Directory.GetFiles(outputDir, "*.apk");

            if (apks.Length != 1)
            {
                throw new NssIntegrationException($"'{outputDir}'中有{apks.Length}个apk文件,不合理!");
            }
            result.appPath    = apks[0];
            result.appVersion = ClientVersion.New(versionJsonPath).ToString();

            return(result);
        }
Esempio n. 3
0
        public static string GetStandardAppName(
            BuildTarget buildTarget,
            BuildMode buildMode,
            VerLine verLine,
            string defaultTDir,
            string version,
            int svnRev)
        {
            var name = $"NSS_{buildMode}_{defaultTDir}_{verLine}_{version}_{svnRev}";

            if (buildTarget == BuildTarget.Android)
            {
                return($"{name}.apk");
            }
            else if (buildTarget == BuildTarget.iOS)
            {
                return($"{name}.ipa");
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Esempio n. 4
0
        public static string ModifyDefaultLaunch(string nssUnityProj, VerLine verLine, BuildMode buildMode)
        {
            var path = $"{nssUnityProj}/Assets/StreamingAssets/DefaultLaunchConfig.txt";
            var defaultLaunchConfig = new DefaultLaunchConfig(path);

            defaultLaunchConfig["DefaultVerLine"] = verLine.ToString();
            defaultLaunchConfig["MiniPackage"]    = "false";

            if (buildMode == BuildMode.Publish)
            {
                defaultLaunchConfig["DefaultTDir"]        = "Official";
                defaultLaunchConfig["DefaultTVersion"]    = "Official";
                defaultLaunchConfig["DefaultTVersionLog"] = "false";
                defaultLaunchConfig["DefaultTVEnv"]       = "Pub";
            }
            else if (buildMode == BuildMode.Debug)
            {
                defaultLaunchConfig["DefaultTDir"]        = "Test";
                defaultLaunchConfig["DefaultTVersion"]    = "Test";
                defaultLaunchConfig["DefaultTVersionLog"] = "false";
                defaultLaunchConfig["DefaultTVEnv"]       = "Pre";
            }
            else
            {
                throw new Exception(string.Format("BuildMode '{0}' 是不支持的类型!", buildMode));
            }

            if (verLine == VerLine.PlayerGroup)
            {
                defaultLaunchConfig["DefaultTDir"]        = "Test";
                defaultLaunchConfig["DefaultTVersion"]    = "Test";
                defaultLaunchConfig["DefaultTVersionLog"] = "true";
                defaultLaunchConfig["DefaultTVEnv"]       = "Pre";
            }
            else if (verLine == VerLine.Experience)
            {
                defaultLaunchConfig["DefaultTDir"]        = "Test";
                defaultLaunchConfig["DefaultTVersion"]    = "Official";
                defaultLaunchConfig["DefaultTVersionLog"] = "false";
                defaultLaunchConfig["DefaultTVEnv"]       = "Pub";
            }
            else if (verLine == VerLine.OB)
            {
                defaultLaunchConfig["DefaultTDir"]        = "Test";
                defaultLaunchConfig["DefaultTVersion"]    = "Official";
                defaultLaunchConfig["DefaultTVersionLog"] = "false";
                defaultLaunchConfig["DefaultTVEnv"]       = "Pre";
            }
            else if (verLine == VerLine.Predownload)
            {
                defaultLaunchConfig["DefaultTDir"]        = "Test";
                defaultLaunchConfig["DefaultTVersion"]    = "TestB";
                defaultLaunchConfig["DefaultTVersionLog"] = "true";
                defaultLaunchConfig["DefaultTVEnv"]       = "Pre";
            }
            else if (verLine == VerLine.DB)
            {
            }
            else
            {
                throw new Exception(string.Format("VerLine '{0}' 是不支持的类型!", verLine));
            }

            defaultLaunchConfig.Serialize(path);
            return(defaultLaunchConfig["DefaultTDir"]);
        }
Esempio n. 5
0
        /// <summary>Отрисовка перекрестья</summary>
        /// <param name="coord"></param>
        public void PaintCrossLines(Point coord, GCandles.CandleInfo candle)
        {
            Panel.Clear();
            var    canvas = Panel.GetGraphics;
            string time   = "";

            Data = new DataCross();
            if (candle.NotIsNull())
            {
                Data.Candle = candle;
                Data.Time   = Data.Candle.Candle.Time;
                string d    = Data.Time.Day.ToString();
                string m    = Data.Time.Month.ToString();
                string y    = Data.Time.Year.ToString();
                string min  = Data.Time.Minute.ToString();
                string hour = Data.Time.Hour.ToString();
                time = (d.Length < 2 ? '0' + d : d) + "." + (m.Length < 2 ? '0' + m : m) + "." + y + " " +
                       (hour.Length < 2 ? '0' + hour : hour) + ":" + (min.Length < 2 ? '0' + min : min);
            }
            Data.Price = GMath.GetValueFromCoordinate(this.HeightForPrice, Panel.Params.MaxPrice, Panel.Params.MinPrice, coord.Y, Panel.Params.CountFloat);

            var lineVer = new VerLine();

            lineVer.ColorLine = lineVer.ColorText = Color.Black;
            lineVer.WidthLine = 1;
            lineVer.FillText  = true;
            lineVer.Paint(canvas, time, new Point(coord.X, 0), new Point(coord.X, Panel.Rect.Height));
            Data.Point.X = coord.X;

            var horLine = new HorLine();

            horLine.ColorLine = horLine.ColorText = Color.Black;
            horLine.FillText  = true;
            horLine.Paint(canvas, Panel.Rect.Rectangle, coord.Y, Data.Price.ToString(), Panel.Params.MaxPrice, Panel.Params.MinPrice);
            Data.Point.Y = coord.Y;

            var priceText          = new TextDraw();
            var TextAppendByCandle = "";

            //Данные по свечи в углу
            if (Data.Candle.NotIsNull())
            {
                priceText.Color = Color.Black;
                priceText.SetFontSize(8);
                priceText.Paint(canvas, "T: " + time + "\r\n" +
                                "O: " + Data.Candle.Candle.Open.ToString() + "\r\n" +
                                "H: " + Data.Candle.Candle.High.ToString() + "\r\n" +
                                "L: " + Data.Candle.Candle.Low.ToString() + "\r\n" +
                                "C: " + Data.Candle.Candle.Close.ToString() + "\r\n" +
                                "V: " + Data.Candle.Candle.Volume.ToString() + "\r\n"
                                , 0, 0);
                TextAppendByCandle = "Vol:" + Data.Candle.Candle.Volume;
            }

            //Текщие данные по цене и времени
            priceText.Color = Color.Black;
            priceText.SetFontSize(8);
            priceText.Paint(canvas, Data.Price.ToString() + "\r\n"
                            + time + "\r\n"
                            + TextAppendByCandle
                            , coord.X + 10, coord.Y + 20);
        }
Esempio n. 6
0
        private static void Build(
            [NssConceptConfiguration(NssConcept.NssUnityProj)] string nssUnityProj,
            [NssConceptConfiguration(NssConcept.BuildTarget)] BuildTarget buildTarget,
            [ParameterConfiguration("是否使用唯一的构建版本号", optionTemplate = "-uniqueVersion")] bool uniqueVersion,
            [NssConceptConfiguration(NssConcept.ToolsDir, optionTemplate = "-toolsDir")] string toolsDir = null,
            [NssConceptConfiguration(NssConcept.BuildConfig, optionTemplate = "-buildConfig")] string buildConfigPath = "Config/BuildConfig.json",
            [NssConceptConfiguration(NssConcept.IFS, optionTemplate = "-ifs")] string ifsPath = null,
            [NssConceptConfiguration(NssConcept.BuildMode, optionTemplate = "-buildMode")] BuildMode buildMode = BuildMode.Debug,
            [NssConceptConfiguration(NssConcept.VerLine, optionTemplate = "-verLine")] VerLine verLine = VerLine.DB,
            [NssConceptConfiguration(NssConcept.PackageType, optionTemplate = "-packageType")] PackageType packageType = PackageType.Normal,
            [NssConceptConfiguration(NssConcept.BuildOption, optionTemplate = "-buildOption")] BuildOption buildOption = BuildOption.None,
            [ParameterConfiguration("输出目录", optionTemplate = "-outputDir")] string outputDir = "Output"
            )
        {
            if (string.IsNullOrEmpty(toolsDir))
            {
                toolsDir = Path.Combine(nssUnityProj, "../Tools");
            }

            outputDir = Path.GetFullPath(outputDir);
            DirUtil.CreateEmptyDir(outputDir);

            var buildConfig = new BuildConfig(buildConfigPath);
            var unityExePath = NssConceptHelper.CheckConceptThrow<string>(NssConcept.UnityExe, buildConfig.Get<string>("UnityExe"));
            var svnRev = -1;
            try
            {
                svnRev = SvnUtil.GetSvnInfo(nssUnityProj).lastChangedRev;
            }
            catch { }

            string versionJsonPath = null;
            if (uniqueVersion)
            {
                versionJsonPath = BuildProcedure.PrepareUniqueVersionJson(buildTarget, Path.Combine(nssUnityProj, "Version"));
            }
            else
            {
                versionJsonPath = Path.Combine(nssUnityProj, "Version", ClientVersion.GetVersionFileName(buildTarget));
            }

            BuildAppResult buildAppResult = null;
            if (buildTarget == BuildTarget.Android)
            {
                var sdkRoot = buildConfig.Get<string>("AndroidSDKRoot");
                var ndkRoot = buildConfig.Get<string>("AndroidNDKRoot");
                var jdkRoot = buildConfig.Get<string>("JDKRoot");

                buildAppResult = BuildProcedure.BuildApk(unityExePath, nssUnityProj, buildMode, true, sdkRoot, ndkRoot, jdkRoot,
                    versionJsonPath, verLine, packageType, buildOption, toolsDir, outputDir, svnRev);

                //buildAppResult = new BuildAppResult()
                //{
                //    appPath = "H:\\branches\\H_trunk\\NssUnityProj\\Output\\NSS_Debug_Test_DB_1.14.0.22330_349712.apk",
                //    appVersion = "1.14.0.22330",
                //    defaultTDir = "Test",
                //};
            }
            else
            {
                throw new NotImplementedException();
            }
            
            if (File.Exists(ifsPath))
            {
                Logger.Log($"使用输入的IFS文件:{ifsPath}...");

                ifsPath = IFSUtil.ModifyIFSVersion(ifsPath, buildTarget, buildAppResult.appVersion);
            }
            else
            {
                throw new NotImplementedException();
            }

            BuildProcedure.AssemblyApk(buildAppResult.appPath, 
                Path.Combine(outputDir, NssHelper.GetStandardAppName(buildTarget, buildMode, verLine, buildAppResult.defaultTDir, buildAppResult.appVersion, svnRev)), 
                ifsPath);
        }