| 820 | } |
| 821 | |
| 822 | S32 xSGReadData(st_XSAVEGAME_DATA* xsgdata, st_XSAVEGAME_READCONTEXT* rctxt, char* buff, |
| 823 | S32 elesiz, S32 n) |
| 824 | { |
| 825 | S32 cnt; |
| 826 | if (elesiz == 0) |
| 827 | { |
| 828 | return 0; |
| 829 | } |
| 830 | |
| 831 | cnt = n * elesiz; |
| 832 | if (cnt == 0) |
| 833 | { |
| 834 | return cnt; |
| 835 | } |
| 836 | |
| 837 | st_XSAVEGAME_CLIENT* clt = (st_XSAVEGAME_CLIENT*)rctxt; |
| 838 | if (clt != NULL && cnt > clt->readremain) |
| 839 | { |
| 840 | xUtil_idtag2string(clt->idtag, 0); |
| 841 | return 0; |
| 842 | } |
| 843 | |
| 844 | if (clt != NULL) |
| 845 | { |
| 846 | memcpy(buff, clt->readpos, cnt); |
| 847 | } |
| 848 | else |
| 849 | { |
| 850 | memcpy(buff, xsgdata->walkpos, cnt); |
| 851 | } |
| 852 | |
| 853 | xsgdata->walkpos += cnt; |
| 854 | xsgdata->walkremain -= cnt; |
| 855 | |
| 856 | if (clt != NULL) |
| 857 | { |
| 858 | clt->readpos += cnt; |
| 859 | clt->readamt += cnt; |
| 860 | clt->readremain -= cnt; |
| 861 | } |
| 862 | |
| 863 | return cnt / elesiz; |
| 864 | } |
| 865 | |
| 866 | S32 xSGReadData(st_XSAVEGAME_DATA* xsgdata, st_XSAVEGAME_READCONTEXT* rctxt, char* buff, S32 n) |
| 867 | { |
no test coverage detected