talk: try to make "Go Back" and the keys work again,
shopping: try to make work again,
This commit is contained in:
@@ -1631,6 +1631,7 @@ bool handle_keystroke(const sf::Event& event){
|
|||||||
else if(chr2 == Key::PageDown) chr2 = Key::Numpad3;
|
else if(chr2 == Key::PageDown) chr2 = Key::Numpad3;
|
||||||
|
|
||||||
sf::Event pass_event = {sf::Event::MouseButtonPressed};
|
sf::Event pass_event = {sf::Event::MouseButtonPressed};
|
||||||
|
extern rectangle talk_area_rect;
|
||||||
if(overall_mode == MODE_TALKING) {
|
if(overall_mode == MODE_TALKING) {
|
||||||
if(chr2 == Key::Escape)
|
if(chr2 == Key::Escape)
|
||||||
chr2 = Key::D;
|
chr2 = Key::D;
|
||||||
@@ -1639,8 +1640,10 @@ bool handle_keystroke(const sf::Event& event){
|
|||||||
for(short i = 0; i < 9; i++)
|
for(short i = 0; i < 9; i++)
|
||||||
if(chr2 == talk_chars[i] && (!talk_end_forced || i == 6 || i == 5)) {
|
if(chr2 == talk_chars[i] && (!talk_end_forced || i == 6 || i == 5)) {
|
||||||
int j = talk_end_forced ? i - 5 : i;
|
int j = talk_end_forced ? i - 5 : i;
|
||||||
|
// related to talk_area_rect, unsure why adding +9 is needed?
|
||||||
pass_point = talk_words[j].rect.topLeft();
|
pass_point = talk_words[j].rect.topLeft();
|
||||||
pass_point.x += 9; pass_point.y += 9;
|
pass_point.x += talk_area_rect.left+9;
|
||||||
|
pass_point.y += talk_area_rect.top+9;
|
||||||
pass_point = mainPtr.mapCoordsToPixel(pass_point, mainView);
|
pass_point = mainPtr.mapCoordsToPixel(pass_point, mainView);
|
||||||
pass_event.mouseButton.x = pass_point.x;
|
pass_event.mouseButton.x = pass_point.x;
|
||||||
pass_event.mouseButton.y = pass_point.y;
|
pass_event.mouseButton.y = pass_point.y;
|
||||||
@@ -1655,7 +1658,9 @@ bool handle_keystroke(const sf::Event& event){
|
|||||||
for(short i = 0; i < 8; i++)
|
for(short i = 0; i < 8; i++)
|
||||||
if(chr2 == shop_chars[i]) {
|
if(chr2 == shop_chars[i]) {
|
||||||
pass_point = shopping_rects[i][SHOPRECT_ACTIVE_AREA].topLeft();
|
pass_point = shopping_rects[i][SHOPRECT_ACTIVE_AREA].topLeft();
|
||||||
pass_point.x += 9; pass_point.y += 9;
|
// related to talk_area_rect
|
||||||
|
pass_point.x += talk_area_rect.left+9;
|
||||||
|
pass_point.y += talk_area_rect.top+9;
|
||||||
pass_point = mainPtr.mapCoordsToPixel(pass_point, mainView);
|
pass_point = mainPtr.mapCoordsToPixel(pass_point, mainView);
|
||||||
pass_event.mouseButton.x = pass_point.x;
|
pass_event.mouseButton.x = pass_point.x;
|
||||||
pass_event.mouseButton.y = pass_point.y;
|
pass_event.mouseButton.y = pass_point.y;
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "mathutil.hpp"
|
#include "mathutil.hpp"
|
||||||
#include "dialogxml/dialogs/strdlog.hpp"
|
#include "dialogxml/dialogs/strdlog.hpp"
|
||||||
#include "dialogxml/dialogs/choicedlog.hpp"
|
#include "dialogxml/dialogs/choicedlog.hpp"
|
||||||
|
#include "gfx/render_shapes.hpp"
|
||||||
#include "tools/winutil.hpp"
|
#include "tools/winutil.hpp"
|
||||||
#include "fileio/fileio.hpp"
|
#include "fileio/fileio.hpp"
|
||||||
#include "fileio/resmgr/res_dialog.hpp"
|
#include "fileio/resmgr/res_dialog.hpp"
|
||||||
@@ -578,6 +579,41 @@ void start_talk_mode(short m_num,short personality,mon_num_t monst_type,short st
|
|||||||
store_pre_talk_mode = overall_mode;
|
store_pre_talk_mode = overall_mode;
|
||||||
overall_mode = MODE_TALKING;
|
overall_mode = MODE_TALKING;
|
||||||
talk_end_forced = false;
|
talk_end_forced = false;
|
||||||
|
|
||||||
|
// first initialise talk_words here
|
||||||
|
talk_words.clear();
|
||||||
|
static const rectangle preset_rects[9] = {
|
||||||
|
rectangle{366,4,386,54}, rectangle{366,70,386,130}, rectangle{366,136,386,186},
|
||||||
|
rectangle{389,4,409,54}, rectangle{389,70,409,120}, rectangle{389,121,409,186},
|
||||||
|
rectangle{389,210,409,270}, rectangle{366,190,386,270},
|
||||||
|
rectangle{343,4,363,134},
|
||||||
|
};
|
||||||
|
static const char*const preset_words[9] = {
|
||||||
|
"Look", "Name", "Job",
|
||||||
|
"Buy", "Sell", "Record",
|
||||||
|
"Done", "Go Back",
|
||||||
|
"Ask About...",
|
||||||
|
};
|
||||||
|
|
||||||
|
// Place buttons at bottom.
|
||||||
|
for(short i = 0; i < 9; i++) {
|
||||||
|
word_rect_t preset_word(preset_words[i], preset_rects[i]);
|
||||||
|
preset_word.on = Colours::DARK_GREEN;
|
||||||
|
preset_word.off = Colours::LIGHT_GREEN;
|
||||||
|
switch(i) {
|
||||||
|
case 0: preset_word.node = TALK_LOOK; break;
|
||||||
|
case 1: preset_word.node = TALK_NAME; break;
|
||||||
|
case 2: preset_word.node = TALK_JOB; break;
|
||||||
|
case 3: preset_word.node = TALK_BUY; break;
|
||||||
|
case 4: preset_word.node = TALK_SELL; break;
|
||||||
|
case 5: preset_word.node = TALK_RECORD; break;
|
||||||
|
case 6: preset_word.node = TALK_DONE; break;
|
||||||
|
case 7: preset_word.node = TALK_BACK; break;
|
||||||
|
case 8: preset_word.node = TALK_ASK; break;
|
||||||
|
}
|
||||||
|
talk_words.push_back(preset_word);
|
||||||
|
}
|
||||||
|
|
||||||
stat_screen_mode = MODE_SHOP;
|
stat_screen_mode = MODE_SHOP;
|
||||||
current_talk_node = TALK_LOOK;
|
current_talk_node = TALK_LOOK;
|
||||||
|
|
||||||
|
@@ -876,45 +876,14 @@ void place_talk_str(std::string str_to_place,std::string str_to_place2,short col
|
|||||||
style.colour = Colours::TITLE_BLUE;
|
style.colour = Colours::TITLE_BLUE;
|
||||||
win_draw_string(talk_gworld,dest_rect,title_string,eTextMode::LEFT_TOP,style);
|
win_draw_string(talk_gworld,dest_rect,title_string,eTextMode::LEFT_TOP,style);
|
||||||
|
|
||||||
talk_words.clear();
|
|
||||||
static const rectangle preset_rects[9] = {
|
|
||||||
rectangle{366,4,386,54}, rectangle{366,70,386,130}, rectangle{366,136,386,186},
|
|
||||||
rectangle{389,4,409,54}, rectangle{389,70,409,120}, rectangle{389,121,409,186},
|
|
||||||
rectangle{389,210,409,270}, rectangle{366,190,386,270},
|
|
||||||
rectangle{343,4,363,134},
|
|
||||||
};
|
|
||||||
static const char*const preset_words[9] = {
|
|
||||||
"Look", "Name", "Job",
|
|
||||||
"Buy", "Sell", "Record",
|
|
||||||
"Done", "Go Back",
|
|
||||||
"Ask About...",
|
|
||||||
};
|
|
||||||
|
|
||||||
// Place buttons at bottom.
|
// Place buttons at bottom.
|
||||||
if(color == 0)
|
if(color == 0)
|
||||||
style.colour = Colours::DARK_GREEN;
|
style.colour = Colours::DARK_GREEN;
|
||||||
else
|
else
|
||||||
style.colour = Colours::LIGHT_GREEN;
|
style.colour = Colours::LIGHT_GREEN;
|
||||||
for(short i = 0; i < 9; i++) {
|
for(short i = 0; i < 9; i++) {
|
||||||
if(!talk_end_forced || i == 6 || i == 5) {
|
if(!talk_end_forced || i == 6 || i == 5)
|
||||||
word_rect_t preset_word(preset_words[i], preset_rects[i]);
|
win_draw_string(talk_gworld,talk_words[i].rect,talk_words[i].word,eTextMode::LEFT_TOP,style);
|
||||||
preset_word.on = Colours::DARK_GREEN;
|
|
||||||
preset_word.off = Colours::LIGHT_GREEN;
|
|
||||||
switch(i) {
|
|
||||||
case 0: preset_word.node = TALK_LOOK; break;
|
|
||||||
case 1: preset_word.node = TALK_NAME; break;
|
|
||||||
case 2: preset_word.node = TALK_JOB; break;
|
|
||||||
case 3: preset_word.node = TALK_BUY; break;
|
|
||||||
case 4: preset_word.node = TALK_SELL; break;
|
|
||||||
case 5: preset_word.node = TALK_RECORD; break;
|
|
||||||
case 6: preset_word.node = TALK_DONE; break;
|
|
||||||
case 7: preset_word.node = TALK_BACK; break;
|
|
||||||
case 8: preset_word.node = TALK_ASK; break;
|
|
||||||
}
|
|
||||||
talk_words.push_back(preset_word);
|
|
||||||
rectangle draw_rect = preset_word.rect;
|
|
||||||
win_draw_string(talk_gworld,draw_rect,preset_word.word,eTextMode::LEFT_TOP,style);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
style.colour = Colours::NAVY;
|
style.colour = Colours::NAVY;
|
||||||
|
Reference in New Issue
Block a user