misc.c
changeset 2050 3b37e813823a
parent 2049 538e73c53f54
child 2051 e369160ce2f3
equal deleted inserted replaced
2049:538e73c53f54 2050:3b37e813823a
   860 	for (; _map_dim_y > 1; _map_dim_y >>= 1) ++bits_y;
   860 	for (; _map_dim_y > 1; _map_dim_y >>= 1) ++bits_y;
   861 
   861 
   862 	InitMap(bits_x, bits_y);
   862 	InitMap(bits_x, bits_y);
   863 }
   863 }
   864 
   864 
   865 static void Load_MAPT(void)
   865 
   866 {
   866 static void SaveLoad_MapByte(byte *m)
   867 	uint size = MapSize();
   867 {
   868 	uint i;
   868 	uint size = MapSize(), i;
   869 
   869 	byte buf[4096];
   870 	for (i = 0; i != size;) {
   870 	if (_sl.save) {
   871 		byte buf[4096];
   871 		SlSetLength(size);
   872 		uint j;
   872 		for(;size;size -= lengthof(buf)) {
   873 
   873 			for (i = 0; i != lengthof(buf); i++) { buf[i] = *m; m += sizeof(Tile); }
   874 		SlArray(buf, lengthof(buf), SLE_UINT8);
   874 			SlArray(buf, lengthof(buf), SLE_UINT8);
   875 		for (j = 0; j != lengthof(buf); j++) _m[i++].type_height = buf[j];
   875 		}
   876 	}
   876 	} else {
   877 }
   877 		for(;size;size -= lengthof(buf)) {
   878 
   878 			SlArray(buf, lengthof(buf), SLE_UINT8);
   879 static void Save_MAPT(void)
   879 			for (i = 0; i != lengthof(buf); i++) { *m = buf[i]; m += sizeof(Tile); }
   880 {
   880 		}
   881 	uint size = MapSize();
   881 	}
   882 	uint i;
   882 }
   883 
   883 
   884 	SlSetLength(size);
   884 static void SaveLoad_MAPT(void)
   885 	for (i = 0; i != size;) {
   885 {
   886 		byte buf[4096];
   886 	SaveLoad_MapByte(&_m[0].type_height);
   887 		uint j;
   887 }
   888 
   888 
   889 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].type_height;
   889 static void SaveLoad_MAPO(void)
   890 		SlArray(buf, lengthof(buf), SLE_UINT8);
   890 {
   891 	}
   891 	SaveLoad_MapByte(&_m[0].owner);
   892 }
       
   893 
       
   894 static void Load_MAPO(void)
       
   895 {
       
   896 	uint size = MapSize();
       
   897 	uint i;
       
   898 
       
   899 	for (i = 0; i != size;) {
       
   900 		byte buf[4096];
       
   901 		uint j;
       
   902 
       
   903 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
   904 		for (j = 0; j != lengthof(buf); j++) _m[i++].owner = buf[j];
       
   905 	}
       
   906 }
       
   907 
       
   908 static void Save_MAPO(void)
       
   909 {
       
   910 	uint size = MapSize();
       
   911 	uint i;
       
   912 
       
   913 	SlSetLength(size);
       
   914 	for (i = 0; i != size;) {
       
   915 		byte buf[4096];
       
   916 		uint j;
       
   917 
       
   918 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].owner;
       
   919 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
   920 	}
       
   921 }
   892 }
   922 
   893 
   923 static void Load_MAP2(void)
   894 static void Load_MAP2(void)
   924 {
   895 {
   925 	uint size = MapSize();
   896 	uint size = MapSize();
   950 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m2;
   921 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m2;
   951 		SlArray(buf, lengthof(buf), SLE_UINT16);
   922 		SlArray(buf, lengthof(buf), SLE_UINT16);
   952 	}
   923 	}
   953 }
   924 }
   954 
   925 
   955 static void Load_MAP3(void)
   926 static void SaveLoad_MAP3(void)
   956 {
   927 {
   957 	uint size = MapSize();
   928 	SaveLoad_MapByte(&_m[0].m3);
   958 	uint i;
   929 }
   959 
   930 
   960 	for (i = 0; i != size;) {
   931 static void SaveLoad_MAP4(void)
   961 		byte buf[4096];
   932 {
   962 		uint j;
   933 	SaveLoad_MapByte(&_m[0].m4);
   963 
   934 }
   964 		SlArray(buf, lengthof(buf), SLE_UINT8);
   935 
   965 		for (j = 0; j != lengthof(buf); j++) _m[i++].m3 = buf[j];
   936 static void SaveLoad_MAP5(void)
   966 	}
   937 {
   967 }
   938 	SaveLoad_MapByte(&_m[0].m5);
   968 
       
   969 static void Save_MAP3(void)
       
   970 {
       
   971 	uint size = MapSize();
       
   972 	uint i;
       
   973 
       
   974 	SlSetLength(size);
       
   975 	for (i = 0; i != size;) {
       
   976 		byte buf[4096];
       
   977 		uint j;
       
   978 
       
   979 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m3;
       
   980 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
   981 	}
       
   982 }
       
   983 
       
   984 static void Load_MAP4(void)
       
   985 {
       
   986 	uint size = MapSize();
       
   987 	uint i;
       
   988 
       
   989 	for (i = 0; i != size;) {
       
   990 		byte buf[4096];
       
   991 		uint j;
       
   992 
       
   993 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
   994 		for (j = 0; j != lengthof(buf); j++) _m[i++].m4 = buf[j];
       
   995 	}
       
   996 }
       
   997 
       
   998 static void Save_MAP4(void)
       
   999 {
       
  1000 	uint size = MapSize();
       
  1001 	uint i;
       
  1002 
       
  1003 	SlSetLength(size);
       
  1004 	for (i = 0; i != size;) {
       
  1005 		byte buf[4096];
       
  1006 		uint j;
       
  1007 
       
  1008 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m4;
       
  1009 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
  1010 	}
       
  1011 }
       
  1012 
       
  1013 static void Load_MAP5(void)
       
  1014 {
       
  1015 	uint size = MapSize();
       
  1016 	uint i;
       
  1017 
       
  1018 	for (i = 0; i != size;) {
       
  1019 		byte buf[4096];
       
  1020 		uint j;
       
  1021 
       
  1022 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
  1023 		for (j = 0; j != lengthof(buf); j++) _m[i++].m5 = buf[j];
       
  1024 	}
       
  1025 }
       
  1026 
       
  1027 static void Save_MAP5(void)
       
  1028 {
       
  1029 	uint size = MapSize();
       
  1030 	uint i;
       
  1031 
       
  1032 	SlSetLength(size);
       
  1033 	for (i = 0; i != size;) {
       
  1034 		byte buf[4096];
       
  1035 		uint j;
       
  1036 
       
  1037 		for (j = 0; j != lengthof(buf); j++) buf[j] = _m[i++].m5;
       
  1038 		SlArray(buf, lengthof(buf), SLE_UINT8);
       
  1039 	}
       
  1040 }
   939 }
  1041 
   940 
  1042 static void Load_MAPE(void)
   941 static void Load_MAPE(void)
  1043 {
   942 {
  1044 	uint size = MapSize();
   943 	uint size = MapSize();
  1105 }
  1004 }
  1106 
  1005 
  1107 
  1006 
  1108 const ChunkHandler _misc_chunk_handlers[] = {
  1007 const ChunkHandler _misc_chunk_handlers[] = {
  1109 	{ 'MAPS', Save_MAPS, Load_MAPS, CH_RIFF },
  1008 	{ 'MAPS', Save_MAPS, Load_MAPS, CH_RIFF },
  1110 	{ 'MAPT', Save_MAPT, Load_MAPT, CH_RIFF },
  1009 	{ 'MAPT', SaveLoad_MAPT, SaveLoad_MAPT, CH_RIFF },
  1111 	{ 'MAPO', Save_MAPO, Load_MAPO, CH_RIFF },
  1010 	{ 'MAPO', SaveLoad_MAPO, SaveLoad_MAPO, CH_RIFF },
  1112 	{ 'MAP2', Save_MAP2, Load_MAP2, CH_RIFF },
  1011 	{ 'MAP2', Save_MAP2, Load_MAP2, CH_RIFF },
  1113 	{ 'M3LO', Save_MAP3, Load_MAP3, CH_RIFF },
  1012 	{ 'M3LO', SaveLoad_MAP3, SaveLoad_MAP3, CH_RIFF },
  1114 	{ 'M3HI', Save_MAP4, Load_MAP4, CH_RIFF },
  1013 	{ 'M3HI', SaveLoad_MAP4, SaveLoad_MAP4, CH_RIFF },
  1115 	{ 'MAP5', Save_MAP5, Load_MAP5, CH_RIFF },
  1014 	{ 'MAP5', SaveLoad_MAP5, SaveLoad_MAP5, CH_RIFF },
  1116 	{ 'MAPE', Save_MAPE, Load_MAPE, CH_RIFF },
  1015 	{ 'MAPE', Save_MAPE, Load_MAPE, CH_RIFF },
  1117 
  1016 
  1118 	{ 'NAME', Save_NAME, Load_NAME, CH_ARRAY},
  1017 	{ 'NAME', Save_NAME, Load_NAME, CH_ARRAY},
  1119 	{ 'DATE', SaveLoad_DATE, SaveLoad_DATE, CH_RIFF},
  1018 	{ 'DATE', SaveLoad_DATE, SaveLoad_DATE, CH_RIFF},
  1120 	{ 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, CH_RIFF},
  1019 	{ 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, CH_RIFF},