|
|
|
import { ShapeDefinition } from "./shape_definition";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @enum {string}
|
|
|
|
*/
|
|
|
|
export const enumHubGoalRewards = {
|
|
|
|
reward_cutter_and_trash: "reward_cutter_and_trash",
|
|
|
|
reward_rotater: "reward_rotater",
|
|
|
|
reward_painter: "reward_painter",
|
|
|
|
reward_mixer: "reward_mixer",
|
|
|
|
reward_stacker: "reward_stacker",
|
|
|
|
reward_splitter: "reward_splitter",
|
|
|
|
reward_tunnel: "reward_tunnel",
|
|
|
|
|
|
|
|
no_reward: "no_reward",
|
|
|
|
};
|
|
|
|
|
|
|
|
export const tutorialGoals = [
|
|
|
|
// Circle
|
|
|
|
{
|
|
|
|
shape: "CuCuCuCu",
|
|
|
|
required: 40,
|
|
|
|
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Cutter
|
|
|
|
{
|
|
|
|
shape: "CuCu----",
|
|
|
|
required: 150,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "----CuCu",
|
|
|
|
required: 200,
|
|
|
|
reward: enumHubGoalRewards.reward_splitter,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Rectangle
|
|
|
|
{
|
|
|
|
shape: "RuRuRuRu",
|
|
|
|
required: 80,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "RuRu----",
|
|
|
|
required: 250,
|
|
|
|
reward: enumHubGoalRewards.reward_rotater,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Rotater
|
|
|
|
{
|
|
|
|
shape: "--CuCu--",
|
|
|
|
required: 300,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "Ru----Ru",
|
|
|
|
required: 400,
|
|
|
|
reward: enumHubGoalRewards.reward_tunnel,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "Cu------",
|
|
|
|
required: 800,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "------Ru",
|
|
|
|
required: 1000,
|
|
|
|
reward: enumHubGoalRewards.reward_painter,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Painter
|
|
|
|
{
|
|
|
|
shape: "CrCrCrCr",
|
|
|
|
required: 1500,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "RbRb----",
|
|
|
|
required: 2500,
|
|
|
|
reward: enumHubGoalRewards.reward_mixer,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Mixing (purple)
|
|
|
|
{
|
|
|
|
shape: "CpCpCpCp",
|
|
|
|
required: 4000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Star shape + cyan
|
|
|
|
{
|
|
|
|
shape: "ScScScSc",
|
|
|
|
required: 500,
|
|
|
|
reward: enumHubGoalRewards.reward_stacker,
|
|
|
|
},
|
|
|
|
|
|
|
|
// Stacker
|
|
|
|
{
|
|
|
|
shape: "CgScScCg",
|
|
|
|
required: 3000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "RpRpRpRp:CcCcCcCc",
|
|
|
|
required: 4000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "RgCwRgCw:CpCpCpCp",
|
|
|
|
required: 6000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "CwSwCwSw:CpCrCpCr",
|
|
|
|
required: 6000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "WyWyWyWy",
|
|
|
|
required: 2000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "WyWgWyWg:CbCpCbCp",
|
|
|
|
required: 4000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "WyRgWyRg:CbCpCbCp:CpCgCpCg",
|
|
|
|
required: 9000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
shape: "CwRrCbRy:ScSrSpSb:CwCwCwCw:RgRgRgRg",
|
|
|
|
required: 15000,
|
|
|
|
reward: enumHubGoalRewards.no_reward,
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
if (G_IS_DEV) {
|
|
|
|
tutorialGoals.forEach(({ shape, required, reward }) => {
|
|
|
|
try {
|
|
|
|
ShapeDefinition.fromShortKey(shape);
|
|
|
|
} catch (ex) {
|
|
|
|
throw new Error("Invalid tutorial goal: '" + ex + "' for shape" + shape);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|