Quest
Introduction¶
Question manager.
- Author: Rex
- Member of scene, or game object
Live demos¶
Usage¶
Install plugin¶
Load minify file¶
- Load plugin (minify file) in preload stage
scene.load.plugin('rexquestplugin', 'https://raw.githubusercontent.com/rexrainbow/phaser3-rex-notes/master/dist/rexquestplugin.min.js', true); - Add quest-manager object
var questionManager = scene.plugins.get('rexquestplugin').add(config);
Import plugin¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Install plugin in configuration of game
import QuestPlugin from 'phaser3-rex-plugins/plugins/quest-plugin.js'; var config = { // ... plugins: { global: [{ key: 'rexQuest', plugin: QuestPlugin, start: true }, // ... ] } // ... }; var game = new Phaser.Game(config); - Add quest-manager object
var questionManager = scene.plugins.get('rexQuest').add(config);
Import class¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Import class
import Quest from 'phaser3-rex-plugins/plugins/quest.js'; - Add quest-manager object
var questionManager = new Quest(config);
Question manager¶
Create question manager instance¶
var questionManager = scene.plugins.get('rexQuest').add({
questions: undefined,
// format: undefined,
// delimiter: ',',
// types: {
// question: 'q',
// option: '',
// },
// convert: true,
quest: undefined,
// quest: {
// shuffleQuestions: false,
// shuffleOptions: false,
// }
});
format: Input data (parameterquestion) format.'csv': Input data is a csv string'yaml': Input data is a yaml string represented multiple documents, or an array of yaml string for each document.'json': Input data is a json string.undefined: Input data is a plain array of questions, don' parse it.
questions: Input data of questions.- A plain array of questions. Parsing result of other input formats.
[ { key: q0, param0: value0, param1: value1, param2: value2, options: [ { key: o0, param0: value0, param1: value1, // ... }, { key: o1, param0: value0, param1: value1, // ... } ] }, { key: q1, param0: value0, param1: value1, param2: value2, options: [ { key: o0, param0: value0, param1: value1, // ... }, { key: o1, param0: value0, param1: value1, // ... } ] }, ]- Question object :
{key, options, param, ...}key: An unique key string. Create a key string'_' + serialNumberif not given.options: An array of option objects.- Other key-value parameters.
- Option object :
{key, param, ...}key: An unique key string. Create a key string'_' + serialNumberif not given.- Other key-value parameters.
- Question object :
- A yaml string represented multiple documents, will parse it to array of questions.
key: q0 param0: value0 param1: value1 options: - key: o0 param0: value0 param1: value1 - key: o1 param0: value0 param1: value1 --- key: q1 param0: value0 param1: value1 options: - key: o0 param0: value0 param1: value1 - key: o1 param0: value0 param1: value1 - An array of yaml strings for each document, will parse them to array of questions.
- A csv string, will parse it to array of questions.
type,key,param0,param1,... q,q0,value0,value1,... ,o0,value0,value1,... ,o1,value0,value1,... q,q1,value0,value1,... ,o0,value0,value1,... ,o1,value0,value1,...- Fields in first row
type: Type of this row. These values can be redefined viatypesin configuration object.q: A row of question object.- Empty string : A row of option object belong a question object.
key: Unique key string. Create a key string'_' + serialNumberif this field does not exist.- Other fields.
- Fields in first row
- A json string, will parse it to array of questions.
- A plain array of questions. Parsing result of other input formats.
delimiter: Delimiter of csv string. Default value is','types: Define value of row type.types.question: Define value of question row. Default value isq.types.option: Define value of option row. Default value is''(empty string).
convert: Convert string values to other types.- Default type converting : Convert string to number, boolean, null, or string
'0','1', ... (number string) -> number'true', or'false'->trueorfalse''(empty string) ->null- Others : string.
- Set
falseto ignore types converting, i.e. all values are string. - A custom type converting function :
function(stringValue, key) { // return value; }
- Default type converting : Convert string to number, boolean, null, or string
quest: Create a private quest task object.undefined: Don't create a private quest task object.true: Create a private quest task object with default configuration.- Configuration of quest task :
quest.shuffleQuestions: Settrueto shuffle questions.quest.shuffleOptions: Settrueto shuffle options.
Add questions¶
questionManager.add(questions, config);
questions: An array of question objects, or a csv string. Seequestionssection in Create question manager instance section.config:delimiter: Delimiter of csv string. Default value is','types: Define value of row type.types.question: Define value of question row. Default value isq.types.option: Define value of option row. Default value is''(empty string).
convert: Convert string values to other types.- Default type converting : Convert string to number, boolean, null, or string
'0','1', ... (number string) -> number'true', or'false'->trueorfalse''(empty string) ->null- Others : string.
- Set
falseto ignore types converting, i.e. all values are string. - A custom type converting function :
function(stringValue, key) { // return value; }
- Default type converting : Convert string to number, boolean, null, or string
Remove question¶
- Remove a question object
questionManager.remove(key);key: An unique key string.
- Remove all question objects
questionManager.removeAll();
Get question¶
- Get a question object
var question = questionManager.get(key); - Get all keys of question objects
var questionKeys = questionManager.getKeys(); // var out = questionManager.getKeys(out);questionKeys: Array of question key string.
Question is existed¶
var isExisted = questionManager.has(key);
Array of questions¶
var questions = questionManager.questions;
Rearrange items of this questions array to reorder questions in quest task.
Get option¶
var option = questionManager.getOption(question, optionKey);
question: A question object, or a question key string.optionKey: A option key string.
Private quest task¶
Create private quest task¶
Each question manager can hava a private quest task object, created when creating question manager, or
questionManager.startQuest(config);
config:shuffleQuestions: Settrueto shuffle questions.shuffleOptions: Settrueto shuffle options.
Get next question object¶
- Get next question object
var question = questionManager.getNextQuestion(); - Get next question object via question key
var question = questionManager.getNextQuestion(questionKey);
Event¶
- Fire
'quest'when callingquestionManager.getNextQuestion()questionManager.on('quest', function(question, questionManager, quest){ // questionManager.getNextQuestion(); })question: Question object.question.options: Option objects of this question.
questionManager: Question manager.quest: Quest task.
Is last question¶
var isLast = questionManager.isLastQuestion();
Restart quest task¶
questionManager.restartQuest();
Private data¶
- Get data
var value = questionManager.getData(key, defaultValue); - Get all data
var data = questionManager.getData(); - Set value
questionManager.setData(key, value); - Increase value
questionManager.incData(key, inc, defaultValue); - Multiple value
questionManager.mulData(key, mul, defaultValue); - Clear all data
questionManager.clearData();
Quest task¶
Create new quest task if user needs more then 1 quest task.
Create quest task¶
var quest = questionManager.newQuest(config);
config:shuffleQuestions: Settrueto shuffle questions.shuffleOptions: Settrueto shuffle options.
Get next question object¶
- Get next question object
var question = quest.getNextQuestion(); - Get next question object via question key
var question = quest.getNextQuestion(questionKey);
Event¶
- Fire
'quest'when callingquestionManager.getNextQuestion()quest.on('quest', function(question, questionManager, quest){ // questionManager.getNextQuestion(); })question: Question object.question.options: Option objects of this question.
questionManager: Question manager.quest: Quest task.
Is last question¶
var isLast = quest.isLastQuestion();
Restart quest task¶
quest.start();
Private data¶
- Get data
var value = quest.getData(key, defaultValue); - Get all data
var data = quest.getData(); - Set value
quest.setData(key, value); - Increase value
quest.incData(key, inc, defaultValue); - Multiple value
quest.mulData(key, inc, defaultValue); - Clear all data
quest.clearData();
Get option¶
var option = quest.getOption(question, optionKey);
question: A question object, or a question key string, orundefinedto get current question object.optionKey: A option key string.