diff --git a/SHNFileDecryptor/AbState.shn b/SHNFileDecryptor/AbState.shn index ba3ba56..2fd7fc3 100644 Binary files a/SHNFileDecryptor/AbState.shn and b/SHNFileDecryptor/AbState.shn differ diff --git a/SHNFileDecryptor/AbState.shn.bak b/SHNFileDecryptor/AbState.shn.bak index aa926f4..49c9c46 100644 Binary files a/SHNFileDecryptor/AbState.shn.bak and b/SHNFileDecryptor/AbState.shn.bak differ diff --git a/SHNFileDecryptor/AbState.shn_decoded.bak b/SHNFileDecryptor/AbState.shn_decoded.bak deleted file mode 100644 index b09099a..0000000 Binary files a/SHNFileDecryptor/AbState.shn_decoded.bak and /dev/null differ diff --git a/SHNFileDecryptor/SHNFileDecryptor.h b/SHNFileDecryptor/SHNFileDecryptor.h index f901813..d1a6d1f 100644 --- a/SHNFileDecryptor/SHNFileDecryptor.h +++ b/SHNFileDecryptor/SHNFileDecryptor.h @@ -48,7 +48,7 @@ public: Data(int32_t n); Data(float n); Data(std::string str); - template + template T Get(); template void Set(T b); @@ -74,6 +74,14 @@ private: public: void Load(std::string file); void Save(); + void Write(int row,int col,byte val); + void Write(int row,int col,sbyte val); + void Write(int row,int col,int16_t val); + void Write(int row,int col,uint16_t val); + void Write(int row,int col,int32_t val); + void Write(int row,int col,uint32_t val); + void Write(int row,int col,float val); + void Write(int row,int col,std::string val); SHNFile(); }; #ifdef OLC_PGEX_SHNFile @@ -289,34 +297,34 @@ T SHNFile::Data::Get(){ } template void SHNFile::Data::Set(T b){ - data=std::make_shared(T(b)); + data=std::make_shared(b); } std::string SHNFile::Data::GetDisplayText(){ switch(type){ - case 1:{ - return std::to_string(int(Get())); - }break; - case 7:{ - return std::to_string(int(Get())); - }break; - case 2:{ - return std::to_string(Get()); - }break; - case 6:{ - return std::to_string(Get()); - }break; - case 3:{ - return std::to_string(Get()); - }break; - case 8:{ - return std::to_string(Get()); - }break; - case 4:{ - return std::to_string(Get()); - }break; - case 5:{ - return Get(); - }break; + case 1:{ + return std::to_string(int(Get())); + }break; + case 7:{ + return std::to_string(int(Get())); + }break; + case 2:{ + return std::to_string(Get()); + }break; + case 6:{ + return std::to_string(Get()); + }break; + case 3:{ + return std::to_string(Get()); + }break; + case 8:{ + return std::to_string(Get()); + }break; + case 4:{ + return std::to_string(Get()); + }break; + case 5:{ + return Get(); + }break; } } void SHNFile::Load(std::string file){ @@ -454,7 +462,7 @@ void SHNFile::Save(){ }break; case 9: case 0x18:{ - WriteString(f,col.Get(),columns[colNum].length); + WriteString(f,std::string(col.Get()),columns[colNum].length); }break; case 13: case 0x15:{ @@ -489,5 +497,29 @@ void SHNFile::Save(){ WriteBytes(encryptedFile,data); std::cout<<"File "<(val); +} +void SHNFile::Write(int row,int col,sbyte val){ + contents[row][col].Set(val); +} +void SHNFile::Write(int row,int col,int16_t val){ + contents[row][col].Set(val); +} +void SHNFile::Write(int row,int col,uint16_t val){ + contents[row][col].Set(val); +} +void SHNFile::Write(int row,int col,int32_t val){ + contents[row][col].Set(val); +} +void SHNFile::Write(int row,int col,uint32_t val){ + contents[row][col].Set(val); +} +void SHNFile::Write(int row,int col,float val){ + contents[row][col].Set(val); +} +void SHNFile::Write(int row,int col,std::string val){ + contents[row][col].Set(val); +} SHNFile::SHNFile(){} #endif \ No newline at end of file diff --git a/SHNFileDecryptor/SHNFile_example.cpp b/SHNFileDecryptor/SHNFile_example.cpp index 232d3eb..3fec96d 100644 --- a/SHNFileDecryptor/SHNFile_example.cpp +++ b/SHNFileDecryptor/SHNFile_example.cpp @@ -4,5 +4,6 @@ int main(){ SHNFile shn; shn.Load("AbState.shn"); + shn.Write(1,1,"Noodles"); shn.Save(); } \ No newline at end of file