add URL params read in function to take in missions and set the missions in Godot
parent
6055d88d5e
commit
cf872e8fd8
@ -0,0 +1,69 @@
|
||||
/**************************************************************************/
|
||||
/* godot.audio.position.worklet.js */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
const POST_THRESHOLD_S = 0.1;
|
||||
|
||||
class GodotPositionReportingProcessor extends AudioWorkletProcessor {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.lastPostTime = currentTime;
|
||||
this.position = 0;
|
||||
this.ended = false;
|
||||
|
||||
this.port.onmessage = (event) => {
|
||||
if (event?.data?.type === 'ended') {
|
||||
this.ended = true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
process(inputs, _outputs, _parameters) {
|
||||
if (this.ended) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (inputs.length > 0) {
|
||||
const input = inputs[0];
|
||||
if (input.length > 0) {
|
||||
this.position += input[0].length;
|
||||
}
|
||||
}
|
||||
|
||||
// Posting messages is expensive. Let's limit the number of posts.
|
||||
if (currentTime - this.lastPostTime > POST_THRESHOLD_S) {
|
||||
this.lastPostTime = currentTime;
|
||||
this.port.postMessage({ type: 'position', data: this.position });
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
registerProcessor('godot-position-reporting-processor', GodotPositionReportingProcessor);
|
||||
@ -1,62 +1,3 @@
|
||||
[gd_resource type="Resource" script_class="MissionConfig" load_steps=2 format=3]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/mission/mission_config.gd" id="1_config"]
|
||||
[gd_resource type="Resource" format=3 uid="uid://bkkc6ej2nx3r6"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_config")
|
||||
starting_structures = ["res://structures/road-straight.tres", "res://structures/building-small-a.tres"]
|
||||
initial_structures = [
|
||||
{
|
||||
"structure_path": "res://structures/road-straight.tres",
|
||||
"position": Vector3(0, 0, 0),
|
||||
"rotation": 0
|
||||
},
|
||||
{
|
||||
"structure_path": "res://structures/road-straight.tres",
|
||||
"position": Vector3(1, 0, 0),
|
||||
"rotation": 90
|
||||
}
|
||||
]
|
||||
missions = [
|
||||
{
|
||||
"id": "custom_mission_1",
|
||||
"title": "Road Network",
|
||||
"description": "Build a basic road network for your city",
|
||||
"objectives": [
|
||||
{
|
||||
"type": 1,
|
||||
"target_count": 4,
|
||||
"structure_path": "res://structures/road-straight.tres",
|
||||
"description": "Build 4 straight roads"
|
||||
}
|
||||
],
|
||||
"rewards": {
|
||||
"cash": 200,
|
||||
"experience": 25
|
||||
},
|
||||
"unlocked_items": [
|
||||
"res://structures/road-corner.tres"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "custom_mission_2",
|
||||
"title": "First Houses",
|
||||
"description": "Start building houses along your roads",
|
||||
"objectives": [
|
||||
{
|
||||
"type": 1,
|
||||
"target_count": 2,
|
||||
"structure_path": "res://structures/building-small-a.tres",
|
||||
"description": "Build 2 Type A houses"
|
||||
}
|
||||
],
|
||||
"rewards": {
|
||||
"cash": 300,
|
||||
"experience": 50
|
||||
},
|
||||
"unlocked_items": [
|
||||
"res://structures/building-small-b.tres",
|
||||
"res://structures/building-small-c.tres"
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1,10 +1,10 @@
|
||||
[gd_resource type="Resource" script_class="GenericText" load_steps=2 format=3]
|
||||
[gd_resource type="Resource" script_class="GenericText" load_steps=2 format=3 uid="uid://bljpugjou1cxo"]
|
||||
|
||||
[ext_resource type="Script" path="res://resources/generic_text_panel.resource.gd" id="1_resource"]
|
||||
[ext_resource type="Script" uid="uid://bt3emc1vt40gq" path="res://resources/generic_text_panel.resource.gd" id="1_resource"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_resource")
|
||||
panel_type = 0
|
||||
title = "Building Selector"
|
||||
body_text = "Select structures to build in your city."
|
||||
button_text = "Close"
|
||||
button_text = "Close"
|
||||
|
||||
@ -0,0 +1 @@
|
||||
uid://g0rf3gsjgld
|
||||
Loading…
Reference in New Issue