Esempio n. 1
0
        public Button(AnimationManager animationManager, TpSprite background, BmLabel text)
        {
            this.animationManager = animationManager;
            this.background       = background;
            this.text             = text;

            handleInput = true;
            useLayout   = true;
            size.One();

            background.useLayout = true;
            background.size.One();
            background.relativeSizeAxes = Axes.Both;
            background.anchorAlign      = Align.Center;
            background.pivotAlign       = Align.Center;
            background.transformDirty   = true;

            text.useLayout = true;
            text.size.One();
            text.relativeSizeAxes = Axes.Both;
            text.verticalAlign    = BmLabel.VerticalAlign.Mesh;
            text.textAlign        = Align.Center;
            text.anchorAlign      = Align.Center;
            text.pivotAlign       = Align.Center;
            text.transformDirty   = true;

            children.Add(background);
            children.Add(text);
        }
    public static void SetPlayerAvatars(NarrativeUi *self, int[] playerAvatarImgIds)
    {
        var playerAvatars     = self->playerAvatars;
        var playerBubbles     = self->playerBubbles;
        var playerBubbleTexts = self->playerBubbleTexts;

        int oldPlayerCount = playerCount;

        playerCount = playerAvatarImgIds.Length;

        float Scr2World = Scr.Scr2World;

        var job = EsWorker.PrepBatch(esWorker, Es.CubicOut, PlayerListTransitionDuration);

        for (int i = 0; i < oldPlayerCount; i += 1)
        {
            var playerAvatar     = playerAvatars + i;
            var playerBubble     = playerBubbles + i;
            var playerBubbleText = playerBubbleTexts + i;

            if (i < playerCount)                // already showing, switch
            {
                TpSprite.SetMeta(playerAvatar, Res.GetTpSpriteMeta(playerAvatarImgIds[i]));
                if (playerAvatar->meta->name != playerAvatarImgIds[i])                    // different image
                {
                    EsBatchJob.RestoreScaleAlt(playerAvatar, Rel.Center, 0, 0, Es.BackOut);
                }
            }
            else                  // not showing any more, hide
            {
                EsBatchJob.SetScale(playerAvatar, Rel.Center, 0, 0, EsWorker.SetVisibleAtEnd);
                EsBatchJob.ShiftPos(playerAvatar, 0, Scr2World * PlayerListShiftOffset);
            }

            if (playerBubble->isVisible)                // hide all bubbles
            {
                EsBatchJob.ShiftPos(job, playerBubble, 0, Scr2World * -PlayerListShiftOffset);
                EsBatchJob.ShiftPos(job, playerBubbleText, 0, Scr2World * -PlayerListShiftOffset);
                EsBatchJob.SetOpacity(job, playerBubble, 0, EsWorker.SetVisibleAtEnd);
                EsBatchJob.SetOpacity(job, playerBubbleText, 0, EsWorker.SetVisibleAtEnd);
            }
        }

        for (int i = oldPlayerCount; i < playerCount; i += 1)            // not showing, show
        {
            var playerAvatar = playerAvatarArr[i];

            Node.SetMeta(playerAvatar, Res.GetTpSpriteMeta(playerAvatarImgIds[i]));
            Node.SetOpacity(playerAvatar, 0);
            Node.SetVisible(playerAvatar, true);
            EsBatchJob.RestoreScaleAlt(playerAvatar, Rel.Center, 0, 0, Es.BackOut);
            EsBatchJob.SetOpacity(playerAvatar, 1);
        }
        EsWorker.ExecBatch(esWorker, job);
    }
Esempio n. 3
0
        public static void Draw(void *node, float *parentMat, bool isParentTransformDirty)
        {
                        #if FDB
            Should.NotNull("node", node);
                        #endif
            switch (*(int *)node)
            {
            case Tag.TpSprite: TpSprite.Draw((TpSprite *)node, parentMat, isParentTransformDirty); return;

            case Tag.Group: Group.Draw((Group *)node, parentMat, isParentTransformDirty); return;
            }
        }
Esempio n. 4
0
    public static void Draw(NarrativeUi *self)
    {
        var playerAvatarArr     = (TpSprite **)playerAvatarLst->arr;
        var playerBubbleArr     = (TpSpriteSliced **)playerBubbleLst->arr;
        var playerBubbleTextArr = (BmText **)playerBubbleTextLst->arr;

        for (int i = 0; i < playerCount; i += 1)
        {
            TpSprite.Draw(playerAvatarArr[i]);
        }

        for (int i = 0; i < playerCount; i += 1)
        {
            TpSprite.Draw(playerBubbleArr[i]);
            BmText.Draw(playerBubbleTextArr[i]);
        }
    }
    public static void InitPlayerList(NarrativeUi *self)
    {
        var playerAvatars     = self->playerAvatars;
        var playerBubbles     = self->playerBubbles;
        var playerBubbleTexts = self->playerBubbleTexts;

        float Scr2World = Scr.Scr2World;

        for (int i = 0; i < PlayerListCount; i += 1)
        {
            var playerAvatar     = playerAvatars + i;
            var playerBubble     = playerBubbles + i;
            var playerBubbleText = playerBubbleTexts + i;

            TpSprite.Init(playerAvatar);
            TpSprite.SetPivot(playerAvatar, Rel.TopLeft);
            TpSprite.SetPos(playerAvatar, Rel.TopLeft,
                            Scr2World * PlayerAvatarMarginLeft,
                            -Scr2World * (PlayerAvatarMarginTop + i * PlayerAvatarSpacingY));
            TpSprite.SetSize(playerAvatar,
                             Scr2World * PlayerAvatarSize,
                             Scr2World * PlayerAvatarSize);

            TpSpriteSliced.Init(playerBubble, Res.GetTpSpriteMeta(PlayerBubbleImgId));
            TpSpriteSliced.SetPivot(playerBubble, Rel.TopLeft);
            TpSpriteSliced.SetPosRel(playerBubble, playerAvatar, Rel.TopRight,
                                     Scr2World * PlayerBubbleMarginLeft,
                                     -Scr2World * PlayerBubbleMarginTop);
            TpSpriteSliced.SetSize(playerBubble,
                                   Scr2World * PlayerBubbleWidth,
                                   Scr2World * PlayerBubbleHeight);
            TpSpriteSliced.SetVisible(playerBubble, false);

            BmText.Init(playerBubbleText);
            BmText.SetPivot(playerBubbleText, Rel.TopLeft);
            BmText.SetPosRel(playerBubbleText, playerBubble, Rel.TopLeft,
                             Scr2World * PlayerBubbleTextMarginLeft,
                             -Scr2World * PlayerBubbleTextMarginTop);
            BmText.SetFontSize(playerBubbleText, Scr2World * PlayerBubbleTextFontSize);
            BmText.SetLineWidth(playerBubbleText, Scr2World * PlayerBubbleTextLineWidth);
            BmText.SetLineSpacing(playerBubbleText, Scr2World * PlayerBubbleTextLineSpacing);
            BmText.SetVisible(playerBubbleText, false);
        }
    }
    public static void InitBranchSelect(NarrativeUi *self)
    {
        var branchOptions     = self->branchOptions;
        var branchOptionTexts = self->branchOptionTexts;
        var branchOptionVotes = self->branchOptionVotes;

        float Scr2World = Scr.Scr2World;

        for (int i = 0; i < BranchOptionCount; i += 1)
        {
            var branchOption     = branchOptions + i;
            var branchOptionText = branchOptionTexts + i;

            TpSpriteSliced.Init(branchOption, Res.GetTpSpriteMeta(PlayerBubbleImgId));
            TpSpriteSliced.SetPivot(branchOption, Rel.TopRight);
            TpSpriteSliced.SetPos(branchOption,
                                  -Scr2World * BranchOptionMarginRight,
                                  -Scr2World * (BranchOptionMarginTop + i * BranchOptionSpacingY));
            TpSpriteSliced.SetSize(branchOption,
                                   Scr2World * BranchOptionWidth,
                                   Scr2World * BranchOptionHeight);
            TpSpriteSliced.SetVisible(branchOption, false);

            BmText.Init(branchOptionText, BranchOptionTextMaxLength);
            BmText.SetPivot(branchOptionText, Rel.center);
            BmText.SetPosRel(branchOptionText, branchOption, Rel.center, 0, 0);
            BmText.SetSize(branchOptionText, BranchOptionTextSize);

            for (int j = 0; j < BranchOptionVoteCount; j += 1)
            {
                var branchOptionVote = branchOptionVotes + i * BranchOptionVoteCount + j;

                TpSprite.Init(branchOptionVote);
                TpSprite.SetPivot(branchOptionVote, Rel.TopLeft);
                TpSprite.SetPosRel(branchOptionVote, branchOption, Rel.TopLeft,
                                   -Scr2World * (BranchVoteMarginRight + j * BranchVoteSpacingX),
                                   Scr2World * BranchVoteMarginBottom);
                TpSprite.SetSize(branchOptionVote,
                                 Scr2World * BranchVoteSize,
                                 Scr2World * BranchVoteSize);
                TpSprite.SetVisible(branchOptionVote, false);
            }
        }
    }
Esempio n. 7
0
    void OnEnable()
    {
        Res.LoadAtlases(10);

                #if GPC_TEST
        nodePool = Pool.New();

        nodeLst = PtrLst.New();
        PtrLst.Push(&nodePool->dependentLst, nodeLst);

        var sprite = (TpSprite *)Pool.Alloc(nodePool, sizeof(TpSprite));
        TpSprite.Init(sprite, Res.GetSpriteMeta(10001));

        var container = (Group *)Pool.Alloc(nodePool, sizeof(Group));
        Group.Init(container);
        PtrLst.Push(&nodePool->dependentLst, &container->childLst);

        PtrLst.Push(nodeLst, sprite);
        Vec4.Set(sprite->color, 1, 1, 1, 1);
        Vec2.Set(sprite->scl, .015f, .015f);

        DrawCtx.Start();
        var arr = (TpSprite **)nodeLst->arr;
        for (int i = 0, len = nodeLst->count; i < len; i += 1)
        {
            Node.Draw(arr[i], null, false);
        }
        DrawCtx.Finish();

        return;
                #endif

        gpc = new GpController(Camera.main);

        for (int i = 0; i < 5; i += 1)
        {
            gpc.SetCamAttr(CamAttr.Position, 0f, 0f);
            gpc.SetCamAttr(CamAttr.Zoom, 5f);

            gpc.AddImg(1, 10001);
            gpc.SetImgInteractable(1, (phase, x, y) => Debug.LogFormat("hit img1: phase {0}, x {1}, y {2}", phase, x, y));
            gpc.SetImgAttr(1, ImgAttr.Position, 0f, 0f, 0f);
            gpc.SetImgAttr(1, ImgAttr.Rotation, 0f);
            gpc.SetImgAttr(1, ImgAttr.Alpha, 1f);
            gpc.SetImgAttrEased(1, ImgAttr.Scale, 1f, EsType.ElasticOut, 0.01f, 0.01f);
            gpc.Wait(.5f);
            gpc.SetImgAttrEased(1, ImgAttr.Tint, 1.5f, EsType.ElasticOut, 1f, 0.5f, 1f);
            gpc.SetImgAttrEased(1, ImgAttr.Position, 2f, EsType.ElasticOut, 2f, -1f, 0f);
            gpc.Wait();
            gpc.SetImgAttrEased(1, ImgAttr.Tint, 1.5f, EsType.ElasticOut, 1f, 1f, 1f);
            gpc.SetImgAttrEased(1, ImgAttr.Position, 2f, EsType.ElasticOut, -2f, 2f, 0f);
            gpc.SetImgAttrEased(1, ImgAttr.Rotation, 1.5f, EsType.ElasticOut, Mathf.PI * 2.5f);

            gpc.SetCamAttrEased(CamAttr.Zoom, 1.5f, EsType.ElasticOut, 2f);
            gpc.SetCamAttrEased(CamAttr.Position, 2f, EsType.ElasticOut, -2f, 2f);

            gpc.Wait(.5f);
            gpc.AddImg(2, 10001);
            gpc.SetImgInteractable(2, (phase, x, y) => Debug.LogFormat("hit img2: phase {0}, x {1}, y {2}", phase, x, y));
            gpc.SetImgAttr(2, ImgAttr.Position, 0f, 0f, -5f);
            gpc.SetImgAttr(2, ImgAttr.Rotation, 0f);
            gpc.SetImgAttr(2, ImgAttr.Scale, 0.1f, 0.1f);
            gpc.SetImgAttr(2, ImgAttr.Alpha, 1f);
            gpc.SetImgAttrEased(2, ImgAttr.Scale, 1f, EsType.ElasticOut, 0.006f, 0.006f);
            gpc.SetImgAttrEased(2, ImgAttr.Position, 4f, EsType.ElasticOut, -2f, 2f, 0f);

            gpc.SetImgInteractable(1, null);

            gpc.Wait();
            gpc.SetImgId(2, 103);

            gpc.Wait();
            gpc.SetImgAttrEased(1, ImgAttr.Tint, 1f, EsType.ElasticOut, 1.5f, 1.5f, 1.5f);

            gpc.Wait();
            gpc.RmImg(1);
            gpc.RmImg(2);
        }

        Application.targetFrameRate = Screen.currentResolution.refreshRate;

                #if FDB
        Fdb.Test();
                #endif
    }
Esempio n. 8
0
 public static TpSprite Sprite(this TpSprite self, string spriteName)
 {
     self.spriteName      = spriteName;
     self.spriteNameDirty = true; self.age += 1; return(self);
 }