Working, but needs tweak

This commit is contained in:
Hash Borgir 2024-04-19 05:47:43 -06:00
parent 9a858693c5
commit f3b0abf9ab

View File

@ -344,7 +344,7 @@ DWORD STDCALL manageBtnUp(sWinMessage* msg)
int frame = 0; int frame = 0;
long nEndTime = 0; long nEndTime = 0;
int nTip = 0; int nTip = 0;
long DURATION = 60000; long DURATION = 5000;
std::vector<std::wstring> diablo2Tips = { std::vector<std::wstring> diablo2Tips = {
L"Consume spirits like potions to increase Spirits Quaffed stat in character stat sheet page.", L"Consume spirits like potions to increase Spirits Quaffed stat in character stat sheet page.",
L"Cube Souls with Energy Sphere to capture Soul Energy and use it to create powerful items. Recipes will come later.", L"Cube Souls with Energy Sphere to capture Soul Energy and use it to create powerful items. Recipes will come later.",
@ -1696,17 +1696,72 @@ void OnLoad() {
srand(time(NULL)); srand(time(NULL));
} }
void onDraw() {
#include <iostream>
#include <sstream>
#include <algorithm>
#include <vector>
using namespace std;
// Function to break the tip into words
vector<string> split(const string& s, char delim) {
stringstream ss(s);
string item;
vector<string> tokens;
while (getline(ss, item, delim)) {
tokens.push_back(item);
}
return tokens;
}
// Function to create sentences from words
string makeSentence(vector<string> words, int start, int end) {
stringstream ss;
for (int i = start; i <= end; ++i) {
ss << words[i] << " ";
}
return ss.str();
}
// Function to convert string to wide string
wstring stringToWstring(const string& s) {
wstring ws;
for (char c : s) {
ws += (wchar_t)c;
}
return ws;
}
// Your original code here
// Modified onDraw function
void onDraw() {
if (GetTickCount64() >= nEndTime) { if (GetTickCount64() >= nEndTime) {
nEndTime = GetTickCount64() + DURATION; nEndTime = GetTickCount64() + DURATION;
nTip = rand() % diablo2Tips.size(); nTip = rand() % diablo2Tips.size();
} }
// Convert wstring to string for manipulation
string strTip = string(diablo2Tips[nTip].begin(), diablo2Tips[nTip].end());
vector<string> words = split(strTip, ' ');
// Calculate positions for multiple lines
int yPos = 95;
for (int i = 0; i < words.size(); i += 10) {
// Create a sentence from words and convert it back to wide string
string sentence = makeSentence(words, i, min(i + 9, (int)words.size() - 1));
wstring wSentence = stringToWstring(sentence);
D2PrintString(const_cast<LPWSTR>(wSentence.c_str()), 152, yPos, WHITE, 0);
yPos += 10; // Move to the next line
}
}
// Print the randomly selected tip using D2PrintString function
D2PrintString(const_cast<LPWSTR>(diablo2Tips[nTip].c_str()), 152, 95, WHITE, 0);
}
void FASTCALL printPageNumber(LPWSTR maxGoldText, DWORD x, DWORD y, DWORD color, DWORD bfalse) void FASTCALL printPageNumber(LPWSTR maxGoldText, DWORD x, DWORD y, DWORD color, DWORD bfalse)
{ {
@ -1781,6 +1836,9 @@ void FASTCALL printPageNumber(LPWSTR maxGoldText, DWORD x, DWORD y, DWORD color,
// Print Random Tips // Print Random Tips
D2SetFont(6);
onDraw(); onDraw();
} }