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); }
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; } }
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); } } }
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 }
public static TpSprite Sprite(this TpSprite self, string spriteName) { self.spriteName = spriteName; self.spriteNameDirty = true; self.age += 1; return(self); }