Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 9 additions & 14 deletions crates/workshop-rs/src/catalog/data/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@
"name"
],
"paramTypes": [
"Player|Array",
"Player|Array|EntityId",
"String"
],
"params": [
Expand Down Expand Up @@ -1987,10 +1987,7 @@
"paramCoercions": [
null,
null,
{
"falseAsNumber": true,
"trueAsNumber": true
},
null,
{
"nullVectorAsNull": true
},
Expand All @@ -2008,7 +2005,7 @@
"paramTypes": [
"Hero|Array",
"Team",
"Number",
"Number|Boolean",
"Vector",
"Vector"
],
Expand Down Expand Up @@ -5256,7 +5253,7 @@
]
}
],
"digest": "d25c1099ed1f23b50612406ea7ff767ba785117a36794f1c45c4d01cd4e0ce29",
"digest": "29346860dce77a49f75ad9b4e5f230f91460f2b4c391e2c6fff26e082ac29bdd",
"enums": [
{
"domain": "Impulse",
Expand Down Expand Up @@ -12361,7 +12358,7 @@
"array"
],
"paramTypes": [
"Array"
"Array|EntityId"
],
"params": [
"Array"
Expand Down Expand Up @@ -12393,7 +12390,7 @@
"paramTypes": [
"String|Array",
"String|Array",
"String|Array"
"String|Array|EntityId"
],
"params": [
"String",
Expand Down Expand Up @@ -12423,7 +12420,7 @@
"paramTypes": [
"String",
"Number",
"Number"
"Number|Boolean"
],
"params": [
"String",
Expand All @@ -12442,16 +12439,14 @@
{
"emptyArrayAsString": true
},
{
"emptyArrayAsString": true
}
null
],
"paramNames": [
"string",
"separator"
],
"paramTypes": [
"String|Array",
"String|Array|EntityId",
"String|Array"
],
"params": [
Expand Down
13 changes: 13 additions & 0 deletions crates/workshop-rs/tests/contextual_semantics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,19 @@ fn one_sided_contextual_aliases_reject_the_other_boolean() {
assert!(format!("{error:?}").contains("semantic type"));
}

#[test]
fn entity_ids_and_boolean_string_slice_counts_match_workshop_contract() {
let setup = program(
"Create Dummy Bot(All Heroes, Team 1, False, Null, Null); Start Forcing Dummy Bot Name(Last Created Entity, Custom String(\"x\"));",
);
validate_program(&setup);

let derived = program(
"Set Global Variable(probe, String Slice(String Replace(Custom String(\"x\"), String Split(Custom String(\"x\"), Empty Array), First Of(Last Created Entity)), 126, True)); Set Global Variable(parts, String Split(First Of(Last Created Entity), Empty Array));",
);
validate_program(&derived);
}

#[test]
fn wait_until_keeps_numeric_exception_without_global_truthiness() {
let numeric = program("Wait Until(1, 2);");
Expand Down
2 changes: 1 addition & 1 deletion crates/workshop-rs/tests/identity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use workshop_rs::catalog::{Catalog, Locale};
/// (`workshop-catalog-gen build`) recomputes it and the pin is updated
/// deliberately together with the data.
const PINNED_CATALOG_DIGEST: &str =
"d25c1099ed1f23b50612406ea7ff767ba785117a36794f1c45c4d01cd4e0ce29";
"29346860dce77a49f75ad9b4e5f230f91460f2b4c391e2c6fff26e082ac29bdd";

#[test]
fn committed_catalog_digest_is_pinned() {
Expand Down
10 changes: 7 additions & 3 deletions crates/workshop-rs/tests/language_conformance.rs
Original file line number Diff line number Diff line change
Expand Up @@ -727,9 +727,13 @@ fn sample_argument(catalog: &Catalog, parameter_type: &str) -> String {
"Boolean" => "True".to_string(),
"Number" | "Number|Boolean" | "Boolean|Number" | "Boolean|Number|Vector" => "1".to_string(),
"Vector" | "Vector|Player" | "Vector|Player|Array" => "Vector(0, 0, 0)".to_string(),
"String" | "String|Array" | "Object|String" => "Custom String(\"probe\")".to_string(),
"Array" => "All Players(All Teams)".to_string(),
"Player" | "Player|Array" | "Player|EntityId" => "Event Player".to_string(),
"String" | "String|Array" | "String|Array|EntityId" | "Object|String" => {
"Custom String(\"probe\")".to_string()
}
"Array" | "Array|EntityId" => "All Players(All Teams)".to_string(),
"Player" | "Player|Array" | "Player|Array|EntityId" | "Player|EntityId" => {
"Event Player".to_string()
}
"Object" | "Object|Array" | "Boolean|Number|Object|Array" => "Event Player".to_string(),
"Hero|Array" => "D.Va".to_string(),
"Operation" => "Add".to_string(),
Expand Down
4 changes: 2 additions & 2 deletions docs/language-support/actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This document inventories the canonical Workshop actions supported by `workshop-
| `Communicate` | ✅ Supported | Parameters: (Object: Player|Array, Comms: Comms). |
| `Continue` | ✅ Supported | No parameters. |
| `Create Beam Effect` | ✅ Supported | Parameters: (VisibleTo: Player|Array, Type: Beam, StartPosition: Vector, EndPosition: Vector, Color: Color, Reevaluation: EffectReeval). |
| `Create Dummy Bot` | ✅ Supported | Parameters: (Hero: Hero|Array, Team: Team, Slot: Number, Position: Vector, Direction: Vector). |
| `Create Dummy Bot` | ✅ Supported | Parameters: (Hero: Hero|Array, Team: Team, Slot: Number|Boolean, Position: Vector, Direction: Vector). |
| `Create Effect` | ✅ Supported | Parameters: (VisibleTo: Player|Array, Type: Effect, Color: Color, Position: Vector|Player, Radius: Number, Reevaluation: EffectReeval). |
| `Create HUD Text` | ✅ Supported | Parameters: (VisibleTo: Player|Array, Header: Object|String, Subheader: Object|String, Text: Object|String, Location: HudPosition, SortOrder: Number|Boolean, HeaderColor: Color, SubheaderColor: Color, TextColor: Color, Reevaluation: HudReeval, Spectators: SpecVisibility). |
| `Create Homing Projectile` | ✅ Supported | Parameters: (Projectile: Projectile, Object: Player|Array, Position: Vector, Direction: Vector, Relativity: Relativity, ModifyHealth: ModifyHealth, Team: Team, Number: Number, Number: Number, Number: Number, DynamicEffect: DynamicEffect, DynamicEffect: DynamicEffect, Number: Number, Number: Number, Number: Number, Number: Number, Player: Player, Number: Number). |
Expand Down Expand Up @@ -176,7 +176,7 @@ This document inventories the canonical Workshop actions supported by `workshop-
| `Start Damage Modification` | ✅ Supported | Parameters: (Object: Player|Array, Object: Player|Array, Number: Number, DamageReeval: DamageReeval). |
| `Start Damage Over Time` | ✅ Supported | Parameters: (Object: Player|Array, Player: Player, Number: Number, Number: Number). |
| `Start Facing` | ✅ Supported | Parameters: (Player: Player|Array, Direction: Vector, Turn Rate: Number, Relativity: Relativity, Reevaluation: FacingReeval). |
| `Start Forcing Dummy Bot Name` | ✅ Supported | Parameters: (Object: Player|Array, String: String). |
| `Start Forcing Dummy Bot Name` | ✅ Supported | Parameters: (Object: Player|Array|EntityId, String: String). |
| `Start Forcing Player Outlines` | ✅ Supported | Parameters: (ViewedPlayers: Player|Array, ViewingPlayers: Player|Array, Visible: Boolean, Color: Color, Visibility: OutlineVisibility). |
| `Start Forcing Player Position` | ✅ Supported | Parameters: (Player: Player, Position: Vector, Boolean: Boolean). |
| `Start Forcing Player To Be Hero` | ✅ Supported | Parameters: (Object: Player|Array, Hero: Hero). |
Expand Down
8 changes: 4 additions & 4 deletions docs/language-support/values.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ This document inventories canonical Workshop values and expressions in `workshop
| `Farthest Player From` | ✅ Supported | Returns: `Player`; Parameters: (Position: Vector, Team: Team). |
| `False` | ✅ Supported | Returns: `BoolLiteral`. |
| `Filtered Array` | ✅ Supported | Returns: `Array`; Parameters: (Array: Array, Condition: Boolean). |
| `First Of` | ✅ Supported | Returns: `Object|Array`; Parameters: (Array: Array). |
| `First Of` | ✅ Supported | Returns: `Object|Array`; Parameters: (Array: Array|EntityId). |
| `Flag Position` | ✅ Supported | Returns: `Vector`; Parameters: (Team: Team). |
| `Forward` | ✅ Supported | Returns: `Array`. |
| `Game Mode` | ✅ Supported | Returns: `Gamemode`; Parameters: (Gamemode: Gamemode). |
Expand Down Expand Up @@ -232,9 +232,9 @@ This document inventories canonical Workshop values and expressions in `workshop
| `String` | ✅ Supported | Returns: `String`; Parameters: (String: String, {0}: Object|Array, {1}: Object|Array, {2}: Object|Array). `Custom String` remains supported. |
| `String Contains` | ✅ Supported | Returns: `Boolean`; Parameters: (String: String, String: String). |
| `String Length` | ✅ Supported | Returns: `Number`; Parameters: (String: String). |
| `String Replace` | ✅ Supported | Returns: `String`; Parameters: (String: String|Array, Search: String|Array, Replacement: String|Array). |
| `String Slice` | ✅ Supported | Returns: `String`; Parameters: (String: String, Start Index: Number, Count: Number). |
| `String Split` | ✅ Supported | Returns: `Array`; Parameters: (String: String|Array, Separator: String|Array). |
| `String Replace` | ✅ Supported | Returns: `String`; Parameters: (String: String|Array, Search: String|Array, Replacement: String|Array|EntityId). |
| `String Slice` | ✅ Supported | Returns: `String`; Parameters: (String: String, Start Index: Number, Count: Number|Boolean). |
| `String Split` | ✅ Supported | Returns: `Array`; Parameters: (String: String|Array|EntityId, Separator: String|Array). |
| `Subtract` | ✅ Supported | Returns: `Number|Vector`; Parameters: (a: Number|Boolean|Vector, b: Number|Boolean|Vector). |
| `Tangent From Degrees` | ✅ Supported | Returns: `Number`; Parameters: (Number: Number). |
| `Tangent From Radians` | ✅ Supported | Returns: `Number`; Parameters: (Number: Number). |
Expand Down
Loading