parent
f3bfa81198
commit
2b3c1ea1b4
@ -0,0 +1,98 @@ |
||||
#pragma region License |
||||
/*
|
||||
License (OLC-3) |
||||
~~~~~~~~~~~~~~~ |
||||
|
||||
Copyright 2018 - 2022 OneLoneCoder.com |
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
|
||||
1. Redistributions or derivations of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions or derivative works in binary form must reproduce the above |
||||
copyright notice. This list of conditions and the following disclaimer must be |
||||
reproduced in the documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may |
||||
be used to endorse or promote products derived from this software without specific |
||||
prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
||||
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
SUCH DAMAGE. |
||||
|
||||
Portions of this software are copyright © 2023 The FreeType |
||||
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||
All rights reserved. |
||||
*/ |
||||
#pragma endregion |
||||
|
||||
#include "Merchant.h" |
||||
|
||||
std::map<Chapter,std::vector<Merchant>>Merchant::merchants; |
||||
|
||||
const Merchant&Merchant::GetRandomMerchant(Chapter chapter)const{ |
||||
return merchants[chapter][rand()%(merchants[chapter].size()-1)]; |
||||
} |
||||
|
||||
const std::string&Merchant::GetDisplayName()const{ |
||||
return displayName; |
||||
} |
||||
|
||||
const std::vector<Item>&Merchant::GetShopItems()const{ |
||||
return shopItems; |
||||
} |
||||
|
||||
Merchant&Merchant::AddMerchant(Chapter chapter){ |
||||
merchants[chapter].push_back({}); |
||||
return merchants[chapter].back(); |
||||
} |
||||
|
||||
void Merchant::AddItem(IT item,uint8_t enhancementLevel){ |
||||
shopItems.push_back(Item{1,item,enhancementLevel}); |
||||
} |
||||
|
||||
INCLUDE_DATA |
||||
|
||||
void Merchant::Initialize(){ |
||||
for(int chapter=1;chapter<=6;chapter++){ |
||||
std::string merchantChapterFilename="assets/"+"merchant_directory"_S+"Chapter "+std::to_string(chapter)+" Merchants.txt"; |
||||
if(!std::filesystem::exists(merchantChapterFilename))ERR("WARNING! Could not find file "<<std::quoted(merchantChapterFilename)<<" for merchant reading!"); |
||||
utils::datafile::Read(DATA,merchantChapterFilename); |
||||
} |
||||
for(int chapter=1;chapter<=6;chapter++){ |
||||
int merchantCount=0; |
||||
utils::datafile&chapterMerchantInfo=DATA["Merchant"][std::format("Chapter {}",chapter)]; |
||||
for(auto&[key,size]:chapterMerchantInfo){ |
||||
utils::datafile&data=chapterMerchantInfo.GetProperty(key); |
||||
Merchant&newMerchant=AddMerchant(chapter); |
||||
for(int itemNumber=1;auto&[key,size]:data){ |
||||
if(key=="DisplayName")newMerchant.displayName=data[key].GetString(); |
||||
else |
||||
if(key.starts_with("Item[")){ |
||||
std::string itemKey=std::format("Item[{}]",itemNumber); |
||||
if(data.HasProperty(itemKey)){ |
||||
IT itemName=data[itemKey].GetString(); |
||||
newMerchant.AddItem(itemName); |
||||
}else{ |
||||
ERR("Could not find item "<<itemNumber<<" in Merchant "<<merchantCount<<" of Chapter "<<chapter<<"!"); |
||||
} |
||||
itemNumber++; |
||||
}else{ |
||||
ERR("Unhandled key "<<std::quoted(key)<<" inside of Merchant "<<merchantCount<<" of Chapter "<<chapter<<"!"); |
||||
} |
||||
} |
||||
merchantCount++; |
||||
} |
||||
std::cout<<std::format("Added {} merchants to Chapter {}",merchantCount,chapter)<<std::endl; |
||||
} |
||||
} |
@ -0,0 +1,56 @@ |
||||
#pragma region License |
||||
/*
|
||||
License (OLC-3) |
||||
~~~~~~~~~~~~~~~ |
||||
|
||||
Copyright 2018 - 2022 OneLoneCoder.com |
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
|
||||
1. Redistributions or derivations of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions or derivative works in binary form must reproduce the above |
||||
copyright notice. This list of conditions and the following disclaimer must be |
||||
reproduced in the documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may |
||||
be used to endorse or promote products derived from this software without specific |
||||
prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
||||
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
SUCH DAMAGE. |
||||
|
||||
Portions of this software are copyright © 2023 The FreeType |
||||
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||
All rights reserved. |
||||
*/ |
||||
#pragma endregion |
||||
|
||||
#include "Crawler.h" |
||||
|
||||
using Chapter=int; |
||||
|
||||
class Merchant{ |
||||
public: |
||||
const Merchant&GetRandomMerchant(Chapter chapter)const; |
||||
const std::string&GetDisplayName()const; |
||||
const std::vector<Item>&GetShopItems()const; |
||||
void AddItem(IT item,uint8_t enhancementLevel=0U); |
||||
public: |
||||
static void Initialize(); |
||||
static Merchant&AddMerchant(Chapter chapter); |
||||
private: |
||||
static std::map<Chapter,std::vector<Merchant>>merchants; |
||||
std::string displayName; |
||||
std::vector<Item>shopItems; |
||||
}; |
@ -1,26 +1,29 @@ |
||||
Merchant |
||||
{ |
||||
Chapter1_A |
||||
Chapter 1 |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Health Potion |
||||
Item[2] = Minor Mana Potion |
||||
} |
||||
Chapter1_B |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Health Potion |
||||
} |
||||
Chapter1_C |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Mana Potion |
||||
} |
||||
Chapter1_D |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Health Potion |
||||
Item[2] = Minor Mana Potion |
||||
Item[3] = Bandages |
||||
Chapter1_A |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Health Potion |
||||
Item[2] = Minor Mana Potion |
||||
} |
||||
Chapter1_B |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Health Potion |
||||
} |
||||
Chapter1_C |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Mana Potion |
||||
} |
||||
Chapter1_D |
||||
{ |
||||
DisplayName = Merchant |
||||
Item[1] = Minor Health Potion |
||||
Item[2] = Minor Mana Potion |
||||
Item[3] = Bandages |
||||
} |
||||
} |
||||
} |
@ -1,4 +1,7 @@ |
||||
Merchant |
||||
{ |
||||
|
||||
Chapter 2 |
||||
{ |
||||
|
||||
} |
||||
} |
@ -1,4 +1,7 @@ |
||||
Merchant |
||||
{ |
||||
|
||||
Chapter 3 |
||||
{ |
||||
|
||||
} |
||||
} |
@ -1,4 +1,7 @@ |
||||
Merchant |
||||
{ |
||||
|
||||
Chapter 4 |
||||
{ |
||||
|
||||
} |
||||
} |
@ -1,4 +1,7 @@ |
||||
Merchant |
||||
{ |
||||
|
||||
Chapter 5 |
||||
{ |
||||
|
||||
} |
||||
} |
@ -1,4 +1,7 @@ |
||||
Merchant |
||||
{ |
||||
|
||||
Chapter 6 |
||||
{ |
||||
|
||||
} |
||||
} |
Loading…
Reference in new issue