narraleaf-studio 1.6.3 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_api.d.ts +133 -3
- package/package.json +1 -1
package/dist/_api.d.ts
CHANGED
|
@@ -812,13 +812,26 @@ type StoryActionPayload = {
|
|
|
812
812
|
transform?: StoryTransformRef;
|
|
813
813
|
} | {
|
|
814
814
|
action: "text";
|
|
815
|
-
|
|
815
|
+
/**
|
|
816
|
+
* `setFont` is the combined op: it sets whichever of {@link fontSize}, {@link fontColor} and
|
|
817
|
+
* {@link outline} the row states, so one `/font` line can say all three. The two single ops
|
|
818
|
+
* stay for the rows that hold them and for a line that names one value alone.
|
|
819
|
+
*
|
|
820
|
+
* Additive: no document written before it carries the value, so no schema bump - the same
|
|
821
|
+
* rule `bringToFront` came in under.
|
|
822
|
+
*/
|
|
823
|
+
operation: "create" | "setText" | "show" | "hide" | "setFontSize" | "setFontColor" | "setFont";
|
|
816
824
|
objectName: string;
|
|
817
825
|
/** Which text a non-`create` op acts on. Same rule as the `image` arm's `target`. */
|
|
818
826
|
target?: StoryDisplayableTargetRef;
|
|
819
827
|
text?: string;
|
|
820
828
|
fontSize?: number;
|
|
821
829
|
fontColor?: string;
|
|
830
|
+
/**
|
|
831
|
+
* The outline drawn round the glyphs, read by `setFont`. `null` takes an outline away
|
|
832
|
+
* (`outline=0`); absent leaves whatever the text has.
|
|
833
|
+
*/
|
|
834
|
+
outline?: StoryTextOutline | null;
|
|
822
835
|
layer?: StoryLayerRef;
|
|
823
836
|
transform?: StoryTransformRef;
|
|
824
837
|
} | {
|
|
@@ -1059,7 +1072,29 @@ type StoryActionPayload = {
|
|
|
1059
1072
|
params: Record<string, StoryPluginActionParamValue>;
|
|
1060
1073
|
}
|
|
1061
1074
|
/** The player's hands: a pad that shakes, a locked passage, a row that waits for a gesture. */
|
|
1062
|
-
| StoryInputActionPayload
|
|
1075
|
+
| StoryInputActionPayload | {
|
|
1076
|
+
/**
|
|
1077
|
+
* Open one of the project's pages over the stage (`/page`), hold the story until the page
|
|
1078
|
+
* closes, and go on from the row after it - a phone, a map, a letter the player reads.
|
|
1079
|
+
*
|
|
1080
|
+
* The page is shown exactly as `Show Layer` shows one from a blueprint, so the page closes
|
|
1081
|
+
* itself with `Close This Layer`, and what it closes with is the row's answer. Unlike
|
|
1082
|
+
* `/quit`, the scene is not left: the story is where it was when the page goes away.
|
|
1083
|
+
*/
|
|
1084
|
+
action: "page";
|
|
1085
|
+
/**
|
|
1086
|
+
* The page, by id - never by name, so a rename keeps the row on the same page, as `/quit`
|
|
1087
|
+
* keeps naming its page.
|
|
1088
|
+
*/
|
|
1089
|
+
surfaceId: string;
|
|
1090
|
+
/**
|
|
1091
|
+
* A variable to write what the page closed with. A boolean, a number or a text variable
|
|
1092
|
+
* takes the result converted to its own type; a page closed with no result (Back on a
|
|
1093
|
+
* dismissible page, a load, the story rolled back past the row) writes nothing, so the
|
|
1094
|
+
* variable keeps the value it had. Absent writes nothing at all.
|
|
1095
|
+
*/
|
|
1096
|
+
resultTarget?: StoryVariableRef;
|
|
1097
|
+
};
|
|
1063
1098
|
type StoryPluginActionParamValue = string | number | boolean | null | StoryPluginActionParamValue[] | {
|
|
1064
1099
|
[key: string]: StoryPluginActionParamValue;
|
|
1065
1100
|
};
|
|
@@ -1557,6 +1592,10 @@ declare const STORY_TRANSFORM_REPEAT_TYPES: readonly [
|
|
|
1557
1592
|
"mirror"
|
|
1558
1593
|
];
|
|
1559
1594
|
type StoryTransformRepeatType = (typeof STORY_TRANSFORM_REPEAT_TYPES)[number];
|
|
1595
|
+
type StoryTextOutline = {
|
|
1596
|
+
width: number;
|
|
1597
|
+
color: string;
|
|
1598
|
+
};
|
|
1560
1599
|
type StoryTransformRef = {
|
|
1561
1600
|
/** Absent means `"props"`. Only a Story Motion has to say which it is. */
|
|
1562
1601
|
mode?: "props" | "animation";
|
|
@@ -1649,6 +1688,11 @@ type StoryAlignPositionValue = {
|
|
|
1649
1688
|
xoffset?: number;
|
|
1650
1689
|
yoffset?: number;
|
|
1651
1690
|
};
|
|
1691
|
+
interface CharacterFrameSequence {
|
|
1692
|
+
frameAssetIds: string[];
|
|
1693
|
+
fps: number;
|
|
1694
|
+
loop: boolean;
|
|
1695
|
+
}
|
|
1652
1696
|
type BlueprintOwnerRef = {
|
|
1653
1697
|
kind: "globalMain";
|
|
1654
1698
|
} | {
|
|
@@ -2305,6 +2349,14 @@ declare const en: {
|
|
|
2305
2349
|
readonly command: "Highlight commands";
|
|
2306
2350
|
};
|
|
2307
2351
|
};
|
|
2352
|
+
readonly characterListGrouping: {
|
|
2353
|
+
readonly label: "Character lists";
|
|
2354
|
+
readonly description: "How the cast is arranged where a character is picked.";
|
|
2355
|
+
readonly options: {
|
|
2356
|
+
readonly grouped: "Group by cast group";
|
|
2357
|
+
readonly all: "Show all characters";
|
|
2358
|
+
};
|
|
2359
|
+
};
|
|
2308
2360
|
readonly dictionaries: {
|
|
2309
2361
|
readonly label: "Spelling dictionaries";
|
|
2310
2362
|
};
|
|
@@ -3106,6 +3158,9 @@ declare const en: {
|
|
|
3106
3158
|
readonly auditionFilterAll: "All";
|
|
3107
3159
|
readonly auditionFilterApproved: "Approved";
|
|
3108
3160
|
readonly auditionFilterPending: "Pending";
|
|
3161
|
+
readonly filterSpeakerAll: "All speakers";
|
|
3162
|
+
readonly speakerFilterLabel: "Speaker";
|
|
3163
|
+
readonly searchPlaceholder: "Search lines";
|
|
3109
3164
|
readonly narrationSpeaker: "Narration";
|
|
3110
3165
|
readonly narrationGroup: "Narration";
|
|
3111
3166
|
readonly choiceSpeaker: "Choice";
|
|
@@ -3498,6 +3553,7 @@ declare const en: {
|
|
|
3498
3553
|
readonly playtest_hover: "Hover in the game";
|
|
3499
3554
|
readonly playtest_key: "Press a key in the game";
|
|
3500
3555
|
readonly playtest_stop: "Stop playing";
|
|
3556
|
+
readonly playtest_variables: "Read the game's variables";
|
|
3501
3557
|
readonly console_read: "Read Studio's console";
|
|
3502
3558
|
readonly build: "Build the game";
|
|
3503
3559
|
};
|
|
@@ -4636,6 +4692,7 @@ declare const en: {
|
|
|
4636
4692
|
readonly reason: {
|
|
4637
4693
|
readonly blueprintAction: "A blueprint runs this row, and a blueprint has no script form.";
|
|
4638
4694
|
readonly inputAction: "This row works with the player's input or the controller's rumble, and has no script form.";
|
|
4695
|
+
readonly pageAction: "This row opens a page over the story and waits for it, and has no script form.";
|
|
4639
4696
|
readonly blueprintCondition: "A blueprint decides this condition.";
|
|
4640
4697
|
readonly blueprintInterpolation: "A blueprint computes a value inside this text.";
|
|
4641
4698
|
readonly inlineEvent: "The text carries an event that fires while it is being typed out.";
|
|
@@ -5100,6 +5157,8 @@ declare const en: {
|
|
|
5100
5157
|
readonly hold: "Hold Seconds";
|
|
5101
5158
|
readonly opacity: "Opacity";
|
|
5102
5159
|
readonly size: "Font Size";
|
|
5160
|
+
readonly outline: "Outline px";
|
|
5161
|
+
readonly outlineColor: "Outline Color";
|
|
5103
5162
|
readonly xOffset: "X Offset px";
|
|
5104
5163
|
readonly yOffset: "Y Offset px";
|
|
5105
5164
|
readonly zoom: "Zoom";
|
|
@@ -5866,6 +5925,10 @@ declare const en: {
|
|
|
5866
5925
|
readonly label: "Quit to page";
|
|
5867
5926
|
readonly detail: "End this playthrough at this line and show a page. No ending is recorded";
|
|
5868
5927
|
};
|
|
5928
|
+
readonly page: {
|
|
5929
|
+
readonly label: "Open page";
|
|
5930
|
+
readonly detail: "Open a page over the story and wait until it closes. What the page closes with can be written into a variable";
|
|
5931
|
+
};
|
|
5869
5932
|
readonly rumble: {
|
|
5870
5933
|
readonly label: "Rumble";
|
|
5871
5934
|
readonly detail: "Vibrate the player's controller. Pick a preset, or set each motor";
|
|
@@ -5948,6 +6011,7 @@ declare const en: {
|
|
|
5948
6011
|
readonly cut: "Cut point";
|
|
5949
6012
|
readonly ending: "Ending";
|
|
5950
6013
|
readonly quit: "Quit to page";
|
|
6014
|
+
readonly page: "Page";
|
|
5951
6015
|
readonly rumble: "Rumble";
|
|
5952
6016
|
readonly input: "Input";
|
|
5953
6017
|
readonly jump: "Jump";
|
|
@@ -6016,6 +6080,8 @@ declare const en: {
|
|
|
6016
6080
|
readonly cutUnknown: "Cut point";
|
|
6017
6081
|
readonly ending: "Ending {name}";
|
|
6018
6082
|
readonly quit: "Quit to {page}";
|
|
6083
|
+
readonly page: "Open {page}";
|
|
6084
|
+
readonly pageUnset: "Open page";
|
|
6019
6085
|
readonly rumble: "Rumble: {shape}";
|
|
6020
6086
|
readonly rumbleStop: "Stop rumble";
|
|
6021
6087
|
readonly inputLock: "Lock player input";
|
|
@@ -6572,6 +6638,7 @@ declare const en: {
|
|
|
6572
6638
|
readonly setText: "Set text";
|
|
6573
6639
|
readonly setFontSize: "Set font size";
|
|
6574
6640
|
readonly setFontColor: "Set font color";
|
|
6641
|
+
readonly setFont: "Set font";
|
|
6575
6642
|
};
|
|
6576
6643
|
readonly layerOperation: {
|
|
6577
6644
|
readonly setZIndex: "Set z-index";
|
|
@@ -6654,6 +6721,8 @@ declare const en: {
|
|
|
6654
6721
|
readonly textName: "Text name";
|
|
6655
6722
|
readonly fontSize: "Font size";
|
|
6656
6723
|
readonly fontColor: "Font color";
|
|
6724
|
+
readonly outlineWidth: "Outline width";
|
|
6725
|
+
readonly outlineColor: "Outline color";
|
|
6657
6726
|
readonly text: "Text";
|
|
6658
6727
|
};
|
|
6659
6728
|
readonly layer: {
|
|
@@ -6771,6 +6840,8 @@ declare const en: {
|
|
|
6771
6840
|
readonly quitPage: "Page shown afterwards";
|
|
6772
6841
|
readonly quitPageUnset: "Not set";
|
|
6773
6842
|
readonly quitHint: "This playthrough ends at this line and the page takes the screen. No ending is recorded.";
|
|
6843
|
+
readonly pagePage: "Page";
|
|
6844
|
+
readonly pageHint: "The page opens over the story, and the story waits until the page closes itself with Close This Layer. What it closes with is written into the result variable, converted to the variable's type; a page closed with nothing leaves the variable as it was.";
|
|
6774
6845
|
readonly branch: "Branch";
|
|
6775
6846
|
readonly elseHint: "Else branch runs when previous branches do not match.";
|
|
6776
6847
|
};
|
|
@@ -8859,6 +8930,8 @@ declare const en: {
|
|
|
8859
8930
|
readonly onFullscreenChanged: "On Fullscreen Changed";
|
|
8860
8931
|
readonly onWindowCloseRequested: "On Window Close Requested";
|
|
8861
8932
|
readonly onWindowFocusChanged: "On Window Focus Changed";
|
|
8933
|
+
readonly onSavedVarChanged: "On Saved Var Changed";
|
|
8934
|
+
readonly onPersistentChanged: "On Persistent Changed";
|
|
8862
8935
|
readonly onAction: "On Action";
|
|
8863
8936
|
readonly onKeyDown: "On Key Down";
|
|
8864
8937
|
readonly onKeyUp: "On Key Up";
|
|
@@ -9149,6 +9222,15 @@ declare const en: {
|
|
|
9149
9222
|
readonly colorReset: "Compute from the name";
|
|
9150
9223
|
};
|
|
9151
9224
|
readonly editor: {
|
|
9225
|
+
readonly sequenceTitle: "Frame sequence";
|
|
9226
|
+
readonly sequenceImport: "Import PNG frames";
|
|
9227
|
+
readonly sequenceFps: "Frames per second";
|
|
9228
|
+
readonly sequenceLoop: "Loop";
|
|
9229
|
+
readonly sequenceStatic: "Use first frame only";
|
|
9230
|
+
readonly sequenceMoveUp: "Move frame up";
|
|
9231
|
+
readonly sequenceMoveDown: "Move frame down";
|
|
9232
|
+
readonly sequencePngOnly: "All frames must be PNG images.";
|
|
9233
|
+
readonly sequenceSizeMismatch: "All frames must have the same dimensions.";
|
|
9152
9234
|
readonly kind: {
|
|
9153
9235
|
readonly preset: "Preset sprites";
|
|
9154
9236
|
readonly layered: "Layered sprite";
|
|
@@ -9347,6 +9429,12 @@ declare const en: {
|
|
|
9347
9429
|
readonly select: "Select";
|
|
9348
9430
|
readonly thumbnailAlt: "thumbnail";
|
|
9349
9431
|
readonly color: "Color";
|
|
9432
|
+
readonly aliases: "Aliases";
|
|
9433
|
+
readonly aliasesTip: "A story line whose speaker is written as an alias belongs to this character. The game still shows the character's name.";
|
|
9434
|
+
readonly addAliasPlaceholder: "Add alias\u2026";
|
|
9435
|
+
readonly aliasIsName: "\"{alias}\" is this character's name.";
|
|
9436
|
+
readonly aliasTakenByName: "\"{alias}\" is the name of {names}. Lines spoken as \"{alias}\" belong to {names}.";
|
|
9437
|
+
readonly aliasShared: "\"{alias}\" is also an alias of {names}. Lines spoken as \"{alias}\" cannot be assigned to one character.";
|
|
9350
9438
|
readonly namePlaceholder: "Character name";
|
|
9351
9439
|
readonly descriptionPlaceholder: "Character description\u2026";
|
|
9352
9440
|
readonly tags: "Tags";
|
|
@@ -9679,6 +9767,9 @@ declare const en: {
|
|
|
9679
9767
|
readonly descriptionPlaceholder: "Enter description\u2026";
|
|
9680
9768
|
readonly info: {
|
|
9681
9769
|
readonly dimensions: "Dimensions";
|
|
9770
|
+
readonly animation: "Animation";
|
|
9771
|
+
readonly animationLoops: "{frames} frames, loops forever";
|
|
9772
|
+
readonly animationPlays: "{frames} frames, plays {plays} \u00D7";
|
|
9682
9773
|
readonly format: "Format";
|
|
9683
9774
|
readonly size: "Size";
|
|
9684
9775
|
readonly hash: "Hash";
|
|
@@ -11966,6 +12057,8 @@ declare const en: {
|
|
|
11966
12057
|
readonly title: "Setup complete";
|
|
11967
12058
|
readonly expectation: "Every setting asked for here is in Settings. F1 opens help for whatever is under the cursor.";
|
|
11968
12059
|
readonly docs: "Open the documentation";
|
|
12060
|
+
readonly bilibili: "Follow us on Bilibili";
|
|
12061
|
+
readonly youtube: "Follow us on YouTube";
|
|
11969
12062
|
};
|
|
11970
12063
|
readonly skipConfirm: {
|
|
11971
12064
|
readonly title: "Skip setup?";
|
|
@@ -13515,6 +13608,12 @@ declare const en: {
|
|
|
13515
13608
|
readonly message: "{asset} is {size}, over the {limit} a build should carry";
|
|
13516
13609
|
readonly help: string;
|
|
13517
13610
|
};
|
|
13611
|
+
readonly assetsSpriteAnimationFinite: {
|
|
13612
|
+
readonly title: "Sprite animation that stops";
|
|
13613
|
+
readonly description: "A character sprite that is an animated PNG set to play a fixed number of times";
|
|
13614
|
+
readonly message: "{asset} is an animated PNG that plays {plays} \u00D7 and then holds its last frame";
|
|
13615
|
+
readonly help: string;
|
|
13616
|
+
};
|
|
13518
13617
|
readonly assetsGroupIncomplete: {
|
|
13519
13618
|
readonly title: "Unfinished asset set";
|
|
13520
13619
|
readonly description: "A set that does not resolve to exactly one file for every variant it declares";
|
|
@@ -13628,6 +13727,13 @@ declare const en: {
|
|
|
13628
13727
|
readonly message: "This row comes after an ending and is never played. Move it before the ending, or delete it";
|
|
13629
13728
|
readonly help: string;
|
|
13630
13729
|
};
|
|
13730
|
+
readonly storyPageMissing: {
|
|
13731
|
+
readonly title: "Open page with no page";
|
|
13732
|
+
readonly description: "A /page row that names no page, or one the project no longer has";
|
|
13733
|
+
readonly message: "This row names no page, so nothing opens and the story goes straight on";
|
|
13734
|
+
readonly deleted: "The page this row names is no longer in the project, so nothing opens and the story goes straight on";
|
|
13735
|
+
readonly help: string;
|
|
13736
|
+
};
|
|
13631
13737
|
readonly storyQuitPageMissing: {
|
|
13632
13738
|
readonly title: "Quit with no page";
|
|
13633
13739
|
readonly description: "A /quit row that names no page, or one the project no longer has";
|
|
@@ -13716,6 +13822,12 @@ declare const en: {
|
|
|
13716
13822
|
readonly message: "The tag \"{tag}\" is on both \"{first}\" and \"{second}\"";
|
|
13717
13823
|
readonly help: string;
|
|
13718
13824
|
};
|
|
13825
|
+
readonly storyParallelSameTarget: {
|
|
13826
|
+
readonly title: "One object in two parallel branches";
|
|
13827
|
+
readonly description: "A /parallel group whose branches act on the same stage object";
|
|
13828
|
+
readonly message: "Another branch of this /parallel group also acts on \"{object}\"";
|
|
13829
|
+
readonly help: string;
|
|
13830
|
+
};
|
|
13719
13831
|
readonly blueprintReferenceMissing: {
|
|
13720
13832
|
readonly title: "Missing target";
|
|
13721
13833
|
readonly description: "A node naming something the project no longer has";
|
|
@@ -14286,7 +14398,6 @@ declare const en: {
|
|
|
14286
14398
|
readonly groupAdded: "Group added";
|
|
14287
14399
|
readonly groupRemoved: "Group removed";
|
|
14288
14400
|
readonly fields: {
|
|
14289
|
-
readonly nicknames: "Nicknames";
|
|
14290
14401
|
readonly group: "Group";
|
|
14291
14402
|
readonly canvas: "Canvas";
|
|
14292
14403
|
readonly avatarAxes: "Avatar axes";
|
|
@@ -17445,6 +17556,10 @@ export type SearchJumpTarget = {
|
|
|
17445
17556
|
storyId: string;
|
|
17446
17557
|
storyName: string;
|
|
17447
17558
|
};
|
|
17559
|
+
type PngAnimation = {
|
|
17560
|
+
frames: number;
|
|
17561
|
+
plays: number;
|
|
17562
|
+
};
|
|
17448
17563
|
type ModelBundleFormat = "live2d-cubism4" | "live2d-cubism2" | "spine-binary" | "spine-json" | "unknown";
|
|
17449
17564
|
export declare enum AssetType {
|
|
17450
17565
|
Image = "image",
|
|
@@ -17478,6 +17593,8 @@ type ImageAssetMetadata = {
|
|
|
17478
17593
|
height: number;
|
|
17479
17594
|
format: string;
|
|
17480
17595
|
size: number;
|
|
17596
|
+
/** What an APNG declares about its frames and loops; null for a still image. */
|
|
17597
|
+
animation?: PngAnimation | null;
|
|
17481
17598
|
};
|
|
17482
17599
|
type AudioAssetMetadata = {
|
|
17483
17600
|
duration: number;
|
|
@@ -17850,6 +17967,7 @@ interface CharacterNamed {
|
|
|
17850
17967
|
name: string;
|
|
17851
17968
|
}
|
|
17852
17969
|
interface CharacterPose extends CharacterNamed {
|
|
17970
|
+
sequence?: CharacterFrameSequence;
|
|
17853
17971
|
/** Groups the list in the editor. Never consulted when resolving. */
|
|
17854
17972
|
folder?: string;
|
|
17855
17973
|
assetId: string | null;
|
|
@@ -18054,6 +18172,7 @@ declare class CharacterAppearance {
|
|
|
18054
18172
|
createPose(name: string, folder?: string): CharacterPose | null;
|
|
18055
18173
|
removePose(poseId: string): boolean;
|
|
18056
18174
|
setPoseAsset(poseId: string, assetId: string | null): void;
|
|
18175
|
+
setPoseSequence(poseId: string, input: CharacterFrameSequence): void;
|
|
18057
18176
|
setPoseFolder(poseId: string, folder: string | undefined): void;
|
|
18058
18177
|
setPosePortrait(poseId: string, portrait: PortraitCrop | undefined): void;
|
|
18059
18178
|
/**
|
|
@@ -20227,6 +20346,17 @@ interface TagsFieldDefinition<TData = any> extends BaseFieldDefinition<TData> {
|
|
|
20227
20346
|
* that are not drawn, and removing a chip removes exactly the tag it stands for.
|
|
20228
20347
|
*/
|
|
20229
20348
|
formatTag?: (data: TData, tag: string) => string | null;
|
|
20349
|
+
/**
|
|
20350
|
+
* Why a stored tag will not do what it is there for, or null when it will. A tag with an issue
|
|
20351
|
+
* is drawn in the warning tone and the sentence is printed under the field. It is still stored:
|
|
20352
|
+
* the field warns rather than refusing, because the fix may be on another record.
|
|
20353
|
+
*/
|
|
20354
|
+
tagIssue?: (data: TData, tag: string) => string | null;
|
|
20355
|
+
/**
|
|
20356
|
+
* A tag the field drops instead of adding, as it drops a repeat. Absent: only repeats are
|
|
20357
|
+
* dropped.
|
|
20358
|
+
*/
|
|
20359
|
+
rejectTag?: (data: TData, tag: string) => boolean;
|
|
20230
20360
|
}
|
|
20231
20361
|
interface InfoFieldDefinition<TData = any> extends BaseFieldDefinition<TData> {
|
|
20232
20362
|
type: "info";
|
package/package.json
CHANGED