Wire up the tutorial (which is empty)
This commit is contained in:
9
rsrc/dialogs/start-valleydy.xml
Normal file
9
rsrc/dialogs/start-valleydy.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
|
||||
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
|
||||
<dialog defbtn='play'>
|
||||
<pict type='scen' size='large' num='0' top='9' left='9'/>
|
||||
<text name='prompt' top='5' left='80' width='250' height='32'>You've completed the tutorial! We recommend playing the first official scenario, The Valley of Dying Things, next.</text>
|
||||
<button name='cancel' type='regular' top='46' left='178'>Cancel</button>
|
||||
<button name='play' type='regular' def-key='esc' top='46' left='248'>Play</button>
|
||||
</dialog>
|
@@ -36,7 +36,7 @@
|
||||
<out-width>1</out-width>
|
||||
<out-height>1</out-height>
|
||||
<start-town>0</start-town>
|
||||
<town-start x="24" y="24" />
|
||||
<town-start x="32" y="32" />
|
||||
<outdoor-start x="0" y="0" />
|
||||
<sector-start x="24" y="24" />
|
||||
<shop>
|
||||
|
@@ -0,0 +1,7 @@
|
||||
@end-scen = 0
|
||||
sdf -1, -1
|
||||
msg -1, -1, -1
|
||||
pic 0, 4
|
||||
ex1 -1, -1, -1
|
||||
ex2 -1, -1, -1
|
||||
goto -1
|
||||
|
@@ -127,7 +127,7 @@ fs::path locate_scenario(std::string scen_name, bool allow_unpacked) {
|
||||
std::transform(scen_name.begin(), scen_name.end(), scen_name.begin(), tolower);
|
||||
size_t dot = scen_name.find_first_of('.');
|
||||
std::string base_name = scen_name.substr(0,dot);
|
||||
if(base_name == "valleydy" || base_name == "stealth" || base_name == "zakhazi"/* || base_name == "busywork" */)
|
||||
if(base_name == "valleydy" || base_name == "stealth" || base_name == "zakhazi" || base_name == "tutorial" /* || base_name == "busywork" */)
|
||||
return progDir/"Blades of Exile Scenarios"/scen_name;
|
||||
fs::path scenPath;
|
||||
|
||||
|
@@ -1412,10 +1412,17 @@ void handle_victory(bool force, bool record) {
|
||||
overall_mode = MODE_STARTUP;
|
||||
draw_startup(0);
|
||||
menu_activate();
|
||||
bool tutorial_finished = (univ.party.scen_name == "tutorial.boes");
|
||||
univ.party.scen_name = ""; // should be harmless...
|
||||
if(!force && cChoiceDlog("congrats-save",{"cancel","save"}).show() == "save"){
|
||||
do_save();
|
||||
}
|
||||
|
||||
if(!force && tutorial_finished){
|
||||
if(cChoiceDlog("start-valleydy",{"play","cancel"}).show() == "play"){
|
||||
put_party_in_scen("valleydy.boes");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_party_death() {
|
||||
@@ -3655,7 +3662,7 @@ void new_party() {
|
||||
}
|
||||
if(party_in_memory) {
|
||||
cChoiceDlog confirm("restart-game",{"okay","cancel"});
|
||||
(confirm.operator->())->getControl("warning").replaceText("{{action}}", "Starting over");
|
||||
confirm->getControl("warning").replaceText("{{action}}", "Starting over");
|
||||
std::string choice = confirm.show();
|
||||
if(choice == "cancel")
|
||||
return;
|
||||
@@ -3765,7 +3772,17 @@ void start_new_game(bool force) {
|
||||
void start_tutorial() {
|
||||
std::string version_flag = get_feature_version("tutorial");
|
||||
if(!version_flag.empty()){
|
||||
// TODO implement the tutorial. If the behavior for launching the tutorial ever changes, update feature flags.
|
||||
if(party_in_memory){
|
||||
cChoiceDlog confirm("restart-game",{"okay","cancel"});
|
||||
confirm->getControl("warning").replaceText("{{action}}", "Starting the tutorial");
|
||||
std::string choice = confirm.show();
|
||||
if(choice == "cancel")
|
||||
return;
|
||||
}
|
||||
// Start by using the default party
|
||||
start_new_game(true);
|
||||
|
||||
put_party_in_scen("tutorial.boes");
|
||||
}else{
|
||||
showWarning("Tutorial coming soon!");
|
||||
}
|
||||
|
@@ -132,6 +132,8 @@ std::map<std::string,std::vector<std::string>> feature_flags = {
|
||||
// Game balance
|
||||
{"magic-resistance", {"fixed"}}, // Resist Magic used to not help with magic damage!
|
||||
{"door-town-difficulty", {"fixed"}},
|
||||
// Tutorial
|
||||
{"tutorial", {"V1"}}
|
||||
};
|
||||
|
||||
struct cParseEntrance {
|
||||
|
Reference in New Issue
Block a user