Commit graph

99 commits

Author SHA1 Message Date
mykola2312
33e9cdaa75 Begun implementing Attributes, have added some string tables to work with 2023-09-08 20:57:45 +03:00
mykola2312
74f70c5171 remove silly size param from read_ctx because Decoder doesn't require it anymore 2023-09-08 19:54:41 +03:00
mykola2312
1fdcad3548 ReadStream now doesn't use Raw because &[u8] is more flexible and allow read ESH binaries, + cargo fmt 2023-09-08 19:52:01 +03:00
mykola2312
06ebdc6062 Update on reverse-engineering of player Attributes and Modifiers 2023-09-08 18:07:05 +03:00
mykola2312
3108ad11bb Add new ESH type 2023-09-07 18:20:52 +03:00
mykola2312
03dccf3d4d Decoder::decode now uses ReadStream mut reference instead of raw offset size, therefore less allocations needed, because there is only one ReadStream that being passed around decoders 2023-09-07 16:54:35 +03:00
mykola2312
0c04e466af the same update but for DecoderOpt 2023-09-07 15:43:40 +03:00
mykola2312
a6bfa194b9 HUGE PERFOMANCE UPDATE: Now Decoder::encode uses mutable ref to WriteStream to write new data, instead of creating allocation every time something needs to be encoded 2023-09-07 15:20:23 +03:00
mykola2312
d060e5ca63 World encoding now fully on WriteStream to write all data to construct new save file 2023-09-07 14:45:48 +03:00
mykola2312
676b7b598f impl cmp<str> for FString, so comparing to other string types will be as easy as now it is. Add get_type_idx for EntityList 2023-09-05 00:23:59 +03:00
mykola2312
88003c2997 modify IntoIterator that now it yields (id, &Entity) 2023-09-05 00:17:48 +03:00
mykola2312
201b51e85c impl IntoIterator for EntityList, so entities can be easily iterated 2023-09-05 00:04:54 +03:00
mykola2312
5f63a69c38 realized that ent file isn't list of entities, but a single entity, however it 100% compatible with entity_file block, so dump_to_entfile implemented to assist in reverse-engineering 2023-09-04 13:02:32 +03:00
mykola2312
b01a11f9b9 add convert ability for EntityList to convert from world entity_file to separate ent file. Needs to be fixed 2023-09-04 10:19:40 +03:00
mykola2312
41c513f5e9 add CTag for const tag definitions. + cargo fmt 2023-09-04 09:58:19 +03:00
mykola2312
43c3bd11f6 EntityList decoding and encoding fully implemented, working and tested 2023-09-04 09:26:16 +03:00
mykola2312
35ce0e9076 EntityList decoding now fully works and tested 2023-09-04 07:38:59 +03:00
mykola2312
5ea616cd44 implemented EntityList decoding and encoding. But decoding has some bugs that needs to be fixed 2023-09-04 07:14:07 +03:00
mykola2312
4e8cc4a5e8 implement EntityList decoding. May need to deal with ESH-less entities from entity_file block 2023-09-04 03:08:14 +03:00
mykola2312
6d7b9f735b update on EntityList decoding 2023-09-04 03:03:51 +03:00
mykola2312
ff900bf123 implement basic functionality of EntityList 2023-09-04 02:52:18 +03:00
mykola2312
226b8dcfb9 refactor DecoderOpt to DecoderCtx because it is not optional anymore, but it is a context (which makes more sense) 2023-09-03 09:04:39 +03:00
mykola2312
122ee7bfc0 implement Entity decoding and encoding 2023-09-03 02:20:59 +03:00
mykola2312
28c5bf6989 add EntityList that will decode types and entities and manage them 2023-09-03 01:45:47 +03:00
mykola2312
9b151e509b fix 2023-09-03 01:08:29 +03:00
mykola2312
93f75c583f move Opt to DecodeOpt trait because not so many objects need complex decoding 2023-09-03 01:07:34 +03:00
mykola2312
1620098672 add GAT to Decoder Opt (so there will be lifetime), introducce EntityList which will control behavior of entity decoding/encoding and management of entities 2023-09-03 00:52:29 +03:00
mykola2312
aa4a7da90c got better idea with EntityOwner trait 2023-09-02 23:33:30 +03:00
mykola2312
c4a0c6b0c5 fix 2023-09-02 21:52:43 +03:00
mykola2312
7f0be36c30 fix 2023-09-02 21:52:41 +03:00
mykola2312
b190315920 deny rust 2018 idioms so no hidden lifetimes - I will be able to manage lifetimes better 2023-09-02 21:43:20 +03:00
mykola2312
535bcc8b94 impl Entity. todo! 2023-09-01 15:49:03 +03:00
mykola2312
10fd8bb7cc Decoder now has Opt type of implementing additional info that required to deal with complex decoding and add more context to result objects 2023-09-01 15:12:05 +03:00
mykola2312
c49622e2ac update on entity_file: successfully able to parse all entities, therefore reverse-engineering theory is complete and proved for entity_file 2023-09-01 02:31:29 +03:00
mykola2312
ea5874594f update on entity_file 2023-09-01 01:15:05 +03:00
mykola2312
d8f1ef6dbd cargo fmt 2023-08-31 13:51:41 +03:00
mykola2312
4d78a5ca8b implement correct Hash for FString so indexing and hash maps would be working as intended 2023-08-31 13:51:13 +03:00
mykola2312
4df2803fdb implement Display, PartialEq and Borrow for FString. May need to complete it so indexing by &str would be possible 2023-08-31 13:46:20 +03:00
mykola2312
a5d44bd730 implement Display for ESHValue 2023-08-31 13:03:47 +03:00
mykola2312
8fe330b368 fixed bug wihen WriteStream::write_bytes wrote data at wrong position. ESH encoding and decoding fully implemented and tested 2023-08-31 12:12:33 +03:00
mykola2312
bc339d57a6 implemented ESH encoding, but found out there was a critical bug in WriteStream. Needs to be fixed ASAP 2023-08-31 11:15:50 +03:00
mykola2312
c69ae933c0 implement full decoding of ESH values 2023-08-31 10:32:24 +03:00
mykola2312
1339b4da9e implement more ESH types 2023-08-31 09:43:45 +03:00
mykola2312
344ec241e7 add some ESH types to enum 2023-08-31 09:17:53 +03:00
mykola2312
71de729437 update on format 2023-08-31 08:53:40 +03:00
mykola2312
e03785e045 update on ESH data types 2023-08-31 08:36:24 +03:00
mykola2312
561e4a4dd3 some discoveries about ESH data types 2023-08-31 06:54:57 +03:00
mykola2312
628010e6c2 implement ESH 2023-08-31 00:17:20 +03:00
mykola2312
7ac969aff4 implement SSG (though it's unknown) 2023-08-30 23:57:03 +03:00
mykola2312
6597063d7c World::encode now uses ReadStream 2023-08-30 22:45:21 +03:00