예제 #1
0
        public override void OnInitialize()
        {
            AddElement(_presenter = new SCCMListPresenter
            {
                Alignment        = HUDAlignment.CENTERLEFT,
                RelativePosition = new FPoint(16, 0),
                Size             = new FSize(Width - 16 - 16 - 48 - 16, Height - 16 - 16),
            });

            AddElement(_scrollbar = new SCCMListScrollbar
            {
                Alignment        = HUDAlignment.CENTERRIGHT,
                RelativePosition = new FPoint(16, 0),
                Size             = new FSize(48, Height - 16 - 16),
            });

            AddElement(_waitingCog = new HUDImage
            {
                Alignment        = HUDAlignment.CENTER,
                RelativePosition = FPoint.Zero,
                Image            = Textures.CannonCogBig,
                RotationSpeed    = 0.35f,
                Color            = FlatColors.Clouds,
                Size             = new FSize(192, 192)
            });

            _presenter.Load(QueryData, _scrollbar, _waitingCog, false);
        }
예제 #2
0
        private async Task <SCCMListPresenter.LoadFuncResult> QueryData(SCCMListPresenter list, int page, int reqid)
        {
            try
            {
                var r = await MainGame.Inst.Backend.QueryUserLevel(MainGame.Inst.Profile, QueryUserLevelCategory.NewLevels, string.Empty, page);

                if (r == null)
                {
                    return(SCCMListPresenter.LoadFuncResult.Error);
                }
                else
                {
                    if (r.Count == 0)
                    {
                        return(SCCMListPresenter.LoadFuncResult.LastPage);
                    }
                    else
                    {
                        MonoSAMGame.CurrentInst.DispatchBeginInvoke(() =>
                        {
                            if (list.IsCurrentRequest(reqid))
                            {
                                foreach (var levelmeta in r)
                                {
                                    list.AddEntry(new SCCMListElementOnlinePlayable(levelmeta));
                                }
                            }
                        });

                        return(SCCMListPresenter.LoadFuncResult.Success);
                    }
                }
            }
            catch (Exception e)
            {
                SAMLog.Error("SCCMTN::QD", e);

                MonoSAMGame.CurrentInst.DispatchBeginInvoke(() =>
                {
                    HUD.AddModal(new HUDFadeOutInfoBox(5, 2, 0.3f)
                    {
                        L10NText   = L10NImpl.STR_CPP_COMERR,
                        TextColor  = FlatColors.Clouds,
                        Background = HUDBackgroundDefinition.CreateRounded(FlatColors.Alizarin, 16),

                        CloseOnClick = true,
                    }, true);
                });

                return(SCCMListPresenter.LoadFuncResult.Error);
            }
        }
예제 #3
0
        private Task <SCCMListPresenter.LoadFuncResult> QueryData(SCCMListPresenter list, int page, int reqid)
        {
            list.AddEntry(new SCCMListElementNewUserLevel());

            foreach (var userlevel in SCCMUtils.ListUserLevelsUnfinished())
            {
                if (userlevel.AuthorUserID != MainGame.Inst.Profile.OnlineUserID)
                {
                    continue;
                }
                list.AddEntry(new SCCMListElementEditable(userlevel));
            }

            var localLevels = new List <Tuple <long, string, SCCMListElementLocalPlayable, string> >();

            foreach (var userleveltuple in SCCMUtils.ListUserLevelsFinished())
            {
                var filename  = userleveltuple.Item1;
                var userlevel = userleveltuple.Item2;
                var levelhash = userleveltuple.Item3;

                if (userlevel.CustomMeta_UserID == MainGame.Inst.Profile.OnlineUserID)
                {
                    var entry = new SCCMListElementLocalPlayable(userlevel);
                    localLevels.Add(Tuple.Create(userlevel.CustomMeta_LevelID, levelhash, entry, filename));

                    list.AddEntry(entry);
                }
                else
                {
                    SAMLog.Info("SCCMTML::DelFinLevel", $"Level {userlevel.UniqueID:B} deleted cause wrong username {userlevel.CustomMeta_UserID} <> {MainGame.Inst.Profile.OnlineUserID}");
                    SCCMUtils.DeleteUserLevelFinished(filename);
                }
            }

            QueryMetaFromServer(localLevels).EnsureNoError();

            return(Task.FromResult(SCCMListPresenter.LoadFuncResult.LastPage));
        }
예제 #4
0
        public override void OnInitialize()
        {
            AddElement(_textbox = new HUDSimpleTextBox
            {
                Alignment        = HUDAlignment.TOPLEFT,
                RelativePosition = new FPoint(16, 16),
                Size             = new FSize(Width - 16 - 16 - 64, 64),

                ColorText = Color.Black,
                Font      = Textures.HUDFontRegular,
                FontSize  = 48,

                MaxLength = SCCMLevelData.MaxNameLength,

                BackgroundNormal  = HUDBackgroundDefinition.CreateSimpleOutline(FlatColors.Clouds, Color.Black, HUD.PixelWidth),
                BackgroundFocused = HUDBackgroundDefinition.CreateSimpleOutline(FlatColors.Clouds, Color.Black, HUD.PixelWidth),

                EnterKey = (s, e) => StartSearch(),

                CloseKeyboard = (s, e) => StartSearch(),
            });

            AddElement(new HUDImageButton
            {
                Alignment        = HUDAlignment.TOPRIGHT,
                RelativePosition = new FPoint(16 + HUD.PixelWidth, 16),
                Size             = new FSize(64, 64),

                Image        = Textures.TexHUDButtonIconMagnifier,
                ImagePadding = 8,
                ImageColor   = FlatColors.Asbestos,

                BackgroundNormal  = HUDBackgroundDefinition.CreateSimpleOutline(FlatColors.Clouds, Color.Black, HUD.PixelWidth),
                BackgroundPressed = HUDBackgroundDefinition.CreateSimpleOutline(FlatColors.Concrete, Color.Black, HUD.PixelWidth),

                Click = (s, e) => StartSearch(),
            });

            AddElement(_presenter = new SCCMListPresenter
            {
                Alignment        = HUDAlignment.BOTTOMLEFT,
                RelativePosition = new FPoint(16, 16),
                Size             = new FSize(Width - 16 - 16 - 48 - 16, Height - 16 - 16 - 16 - 64),

                IsVisible = true,
            });

            AddElement(_scrollbar = new SCCMListScrollbar
            {
                Alignment        = HUDAlignment.BOTTOMRIGHT,
                RelativePosition = new FPoint(16, 16),
                Size             = new FSize(48, Height - 16 - 16 - 16 - 64),

                IsVisible = true,
            });

            AddElement(_waitingCog = new HUDImage
            {
                Alignment        = HUDAlignment.CENTER,
                RelativePosition = new FPoint(0, 16 + 32),
                Image            = Textures.CannonCogBig,
                RotationSpeed    = 0.35f,
                Color            = FlatColors.Clouds,
                Size             = new FSize(192, 192),

                IsVisible = false,
            });

            _presenter.Load(QueryData, _scrollbar, _waitingCog);
        }