private void GetCHK(BinaryWriter bw, CHKToken cHKToken, TOKENTYPE tOKENTYPE) { byte[] tokenbyte; if (tOKENTYPE == TOKENTYPE.NULL) { tokenbyte = System.Text.Encoding.ASCII.GetBytes(cHKToken.code.PadRight(4, ' ')); } else { tokenbyte = System.Text.Encoding.ASCII.GetBytes(tOKENTYPE.ToString().PadRight(4, ' ')); } //에디터로부터 CHK데이터를 가져오는 함수 switch (tOKENTYPE) { case TOKENTYPE.NULL: bw.Write(cHKToken.bytes); break; case TOKENTYPE.ENCD: bw.Write(tokenbyte); bw.Write((int)4); bw.Write(ENCODING.CodePage); break; case TOKENTYPE.VER: bw.Write(tokenbyte); bw.Write((int)2); bw.Write(VER); break; case TOKENTYPE.TYPE: bw.Write(tokenbyte); bw.Write((int)4); bw.Write(TYPE); break; case TOKENTYPE.IVE2: bw.Write(tokenbyte); bw.Write((int)2); bw.Write(IVE2); break; case TOKENTYPE.VCOD: bw.Write(tokenbyte); bw.Write(VCOD.Length); bw.Write(VCOD); break; case TOKENTYPE.IOWN: bw.Write(tokenbyte); bw.Write(IOWN.Length); bw.Write(IOWN); break; case TOKENTYPE.OWNR: //TODO:스타트로케이션 확인 후 IOWN수정해야됨. OWNR = (byte[])IOWN.Clone(); bool[] pexist = new bool[8]; for (int i = 0; i < UNIT.Count; i++) { if (UNIT[i].unitID == 214) { pexist[UNIT[i].player] = true; } } for (int i = 0; i < 8; i++) { if (!pexist[i]) { OWNR[i] = 0; } } bw.Write(tokenbyte); bw.Write(OWNR.Length); bw.Write(OWNR); break; case TOKENTYPE.SIDE: bw.Write(tokenbyte); bw.Write(SIDE.Length); bw.Write(SIDE); break; case TOKENTYPE.COLR: bw.Write(tokenbyte); bw.Write(COLR.Length); bw.Write(COLR); break; case TOKENTYPE.CRGB: bw.Write(tokenbyte); bw.Write(32); for (int i = 0; i < 8; i++) { bw.Write(CRGB[i].R); bw.Write(CRGB[i].G); bw.Write(CRGB[i].B); } bw.Write(CRGBIND); break; case TOKENTYPE.UNIT: bw.Write(tokenbyte); bw.Write(UNIT.Count * 36); for (int i = 0; i < UNIT.Count; i++) { bw.Write(UNIT[i].unitclass); bw.Write(UNIT[i].X); bw.Write(UNIT[i].Y); bw.Write(UNIT[i].unitID); bw.Write(UNIT[i].linkFlag); bw.Write(UNIT[i].validstatusFlag); bw.Write(UNIT[i].validunitFlag); bw.Write(UNIT[i].player); bw.Write(UNIT[i].hitPoints); bw.Write(UNIT[i].shieldPoints); bw.Write(UNIT[i].energyPoints); bw.Write(UNIT[i].resoruceAmount); bw.Write(UNIT[i].hangar); bw.Write(UNIT[i].stateFlag); bw.Write(UNIT[i].unused); bw.Write(UNIT[i].linkedUnit); } break; case TOKENTYPE.ERA: bw.Write(tokenbyte); bw.Write((int)2); bw.Write((ushort)TILETYPE); break; case TOKENTYPE.DIM: bw.Write(tokenbyte); bw.Write((int)4); bw.Write((ushort)WIDTH); bw.Write((ushort)HEIGHT); break; case TOKENTYPE.TILE: bw.Write(tokenbyte); bw.Write((int)WIDTH * HEIGHT * 2); for (int i = 0; i < WIDTH * HEIGHT; i++) { bw.Write(TILE[i]); } break; case TOKENTYPE.MTXM: bw.Write(tokenbyte); bw.Write((int)WIDTH * HEIGHT * 2); for (int i = 0; i < WIDTH * HEIGHT; i++) { bw.Write(MTXM[i]); } break; case TOKENTYPE.DD2: bw.Write(tokenbyte); bw.Write((int)DD2.Count * 8); for (int i = 0; i < DD2.Count; i++) { bw.Write(DD2[i].ID); bw.Write(DD2[i].X); bw.Write(DD2[i].Y); bw.Write(DD2[i].PLAYER); bw.Write(DD2[i].FLAG); } break; case TOKENTYPE.THG2: bw.Write(tokenbyte); DDDTHG2.AddRange(THG2); bw.Write((int)DDDTHG2.Count * 10); for (int i = 0; i < DDDTHG2.Count; i++) { bw.Write(DDDTHG2[i].ID); bw.Write(DDDTHG2[i].X); bw.Write(DDDTHG2[i].Y); bw.Write(DDDTHG2[i].PLAYER); bw.Write(DDDTHG2[i].UNUSED); bw.Write(DDDTHG2[i].FLAG); } break; case TOKENTYPE.MASK: bw.Write(tokenbyte); bw.Write((int)MASK.Length); bw.Write(MASK); break; case TOKENTYPE.STRx: bw.Write(tokenbyte); { int strptrlen = stringDatas.Count * 4 + 4; MemoryStream memory = new MemoryStream(); BinaryWriter tbw = new BinaryWriter(memory); uint[] strptr = new uint[stringDatas.Count]; for (int i = 0; i < stringDatas.Count; i++) { byte[] bytes = ENCODING.GetBytes(stringDatas[i].CodeString); strptr[i] = (uint)((uint)tbw.BaseStream.Position + strptrlen); tbw.Write(bytes); tbw.Write((byte)0); } bw.Write((uint)(tbw.BaseStream.Length + strptrlen)); bw.Write((uint)stringDatas.Count); for (int i = 0; i < stringDatas.Count; i++) { bw.Write(strptr[i]); } bw.Write(memory.ToArray()); tbw.Close(); memory.Close(); } //long strptrstart = bw.BaseStream.Position; //bw.Write((uint)0); //long ptrpos = bw.BaseStream.Position; //for (int i = 0; i < stringDatas.Count; i++) //{ // bw.Write((uint)0); //} //long endpos = bw.BaseStream.Position; //bw.BaseStream.Position = strptrstart; //bw.Write((uint)endpos - strptrstart); //for (int i = 0; i < stringDatas.Count; i++) //{ // bw.Write(strptr[i]); //} //bw.BaseStream.Position = endpos; break; case TOKENTYPE.SPRP: bw.Write(tokenbyte); bw.Write((int)4); bw.Write((ushort)SCEARIONAME.ResultIndex); bw.Write((ushort)SCEARIODES.ResultIndex); break; case TOKENTYPE.FORC: bw.Write(tokenbyte); bw.Write((int)20); bw.Write(FORCE); bw.Write((ushort)FORCENAME[0].ResultIndex); bw.Write((ushort)FORCENAME[1].ResultIndex); bw.Write((ushort)FORCENAME[2].ResultIndex); bw.Write((ushort)FORCENAME[3].ResultIndex); bw.Write(FORCEFLAG); break; case TOKENTYPE.MRGN: bw.Write(tokenbyte); bw.Write((int)5100); for (int i = 0; i < 255; i++) { LocationData locationData = LocationDatas.SingleOrDefault(x => x.INDEX == (i + 1)); if (locationData == null) { bw.Write(new byte[20]); } else { bw.Write(locationData.L); bw.Write(locationData.T); bw.Write(locationData.R); bw.Write(locationData.B); bw.Write((ushort)locationData.STRING.ResultIndex); bw.Write(locationData.FLAG); } } break; case TOKENTYPE.UPRP: bw.Write(tokenbyte); bw.Write((int)UPRP.Length * 20); for (int i = 0; i < UPRP.Length; i++) { bw.Write(UPRP[i].STATUSVALID); bw.Write(UPRP[i].POINTVALID); bw.Write(UPRP[i].PLAYER); bw.Write(UPRP[i].HITPOINT); bw.Write(UPRP[i].SHIELDPOINT); bw.Write(UPRP[i].ENERGYPOINT); bw.Write(UPRP[i].RESOURCE); bw.Write(UPRP[i].HANGAR); bw.Write(UPRP[i].STATUSFLAG); bw.Write(UPRP[i].UNUSED); } break; case TOKENTYPE.UPUS: bw.Write(tokenbyte); bw.Write((int)UPUS.Length); bw.Write(UPUS); break; case TOKENTYPE.WAV: bw.Write(tokenbyte); bw.Write((int)WAV.Length * 4); for (int i = 0; i < WAV.Length; i++) { bw.Write(WAV[i].ResultIndex); } break; case TOKENTYPE.SWNM: bw.Write(tokenbyte); bw.Write((int)SWNM.Length * 4); for (int i = 0; i < SWNM.Length; i++) { bw.Write(SWNM[i].ResultIndex); } break; case TOKENTYPE.PUNI: bw.Write(tokenbyte); bw.Write((int)5700); for (int i = 0; i < 12; i++) { bw.Write(PUNI.UNITENABLED[i]); } bw.Write(PUNI.DEFAULT); for (int i = 0; i < 12; i++) { bw.Write(PUNI.USEDEFAULT[i]); } break; case TOKENTYPE.PUPx: bw.Write(tokenbyte); bw.Write((int)2318); for (int i = 0; i < 12; i++) { bw.Write(PUPx.MAXLEVEL[i]); } for (int i = 0; i < 12; i++) { bw.Write(PUPx.STARTLEVEL[i]); } bw.Write(PUPx.DEFAULTMAXLEVEL); bw.Write(PUPx.DEFAULTSTARTLEVEL); for (int i = 0; i < 12; i++) { bw.Write(PUPx.USEDEFAULT[i]); } break; case TOKENTYPE.PTEx: bw.Write(tokenbyte); bw.Write((int)1672); for (int i = 0; i < 12; i++) { bw.Write(PTEx.MAXLEVEL[i]); } for (int i = 0; i < 12; i++) { bw.Write(PTEx.STARTLEVEL[i]); } bw.Write(PTEx.DEFAULTMAXLEVEL); bw.Write(PTEx.DEFAULTSTARTLEVEL); for (int i = 0; i < 12; i++) { bw.Write(PTEx.USEDEFAULT[i]); } break; case TOKENTYPE.UNIx: bw.Write(tokenbyte); bw.Write((int)4168); for (int i = 0; i < 228; i++) { bw.Write(UNIx.USEDEFAULT[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.HIT[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.SHIELD[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.ARMOR[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.BUILDTIME[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.MIN[i]); } for (int i = 0; i < 228; i++) { bw.Write(UNIx.GAS[i]); } for (int i = 0; i < 228; i++) { bw.Write((ushort)UNIx.STRING[i].ResultIndex); } for (int i = 0; i < 130; i++) { bw.Write(UNIx.DMG[i]); } for (int i = 0; i < 130; i++) { bw.Write(UNIx.BONUSDMG[i]); } break; case TOKENTYPE.UPGx: bw.Write(tokenbyte); bw.Write((int)794); for (int i = 0; i < 61; i++) { bw.Write(UPGx.USEDEFAULT[i]); } bw.Write((byte)0); for (int i = 0; i < 61; i++) { bw.Write(UPGx.BASEMIN[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BONUSMIN[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BASEGAS[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BONUSGAS[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BASETIME[i]); } for (int i = 0; i < 61; i++) { bw.Write(UPGx.BONUSTIME[i]); } break; case TOKENTYPE.TECx: bw.Write(tokenbyte); bw.Write((int)396); for (int i = 0; i < 44; i++) { bw.Write(TECx.USEDEFAULT[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.MIN[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.GAS[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.BASETIME[i]); } for (int i = 0; i < 44; i++) { bw.Write(TECx.ENERGY[i]); } break; case TOKENTYPE.TRIG: bw.Write(tokenbyte); bw.Write((int)2400 * TRIG.Count); for (int i = 0; i < TRIG.Count; i++) { for (int c = 0; c < 16; c++) { bw.Write(TRIG[i].conditions[c].locid); bw.Write(TRIG[i].conditions[c].player); bw.Write(TRIG[i].conditions[c].amount); bw.Write(TRIG[i].conditions[c].unitid); bw.Write(TRIG[i].conditions[c].comparison); bw.Write(TRIG[i].conditions[c].condtype); bw.Write(TRIG[i].conditions[c].restype); bw.Write(TRIG[i].conditions[c].flags); bw.Write(TRIG[i].conditions[c].maskflag); } for (int a = 0; a < 64; a++) { bw.Write(TRIG[i].actions[a].locid1); bw.Write(TRIG[i].actions[a].strid); bw.Write(TRIG[i].actions[a].wavid); bw.Write(TRIG[i].actions[a].time); bw.Write(TRIG[i].actions[a].player1); bw.Write(TRIG[i].actions[a].player2); bw.Write(TRIG[i].actions[a].unitid); bw.Write(TRIG[i].actions[a].acttype); bw.Write(TRIG[i].actions[a].amount); bw.Write(TRIG[i].actions[a].flags); bw.Write(TRIG[i].actions[a].padding); bw.Write(TRIG[i].actions[a].maskflag); } bw.Write(TRIG[i].exeflag); bw.Write(TRIG[i].playerlist); bw.Write(TRIG[i].trigindex); } break; case TOKENTYPE.MBRF: bw.Write(tokenbyte); bw.Write((int)2400 * MBRF.Count); for (int i = 0; i < MBRF.Count; i++) { for (int c = 0; c < 16; c++) { bw.Write(MBRF[i].conditions[c].locid); bw.Write(MBRF[i].conditions[c].player); bw.Write(MBRF[i].conditions[c].amount); bw.Write(MBRF[i].conditions[c].unitid); bw.Write(MBRF[i].conditions[c].comparison); bw.Write(MBRF[i].conditions[c].condtype); bw.Write(MBRF[i].conditions[c].restype); bw.Write(MBRF[i].conditions[c].flags); bw.Write(MBRF[i].conditions[c].maskflag); } for (int a = 0; a < 64; a++) { bw.Write(MBRF[i].actions[a].locid1); bw.Write(MBRF[i].actions[a].strid); bw.Write(MBRF[i].actions[a].wavid); bw.Write(MBRF[i].actions[a].time); bw.Write(MBRF[i].actions[a].player1); bw.Write(MBRF[i].actions[a].player2); bw.Write(MBRF[i].actions[a].unitid); bw.Write(MBRF[i].actions[a].acttype); bw.Write(MBRF[i].actions[a].amount); bw.Write(MBRF[i].actions[a].flags); bw.Write(MBRF[i].actions[a].padding); bw.Write(MBRF[i].actions[a].maskflag); } bw.Write(MBRF[i].exeflag); bw.Write(MBRF[i].playerlist); bw.Write(MBRF[i].trigindex); } break; } }
private bool Applychk(BinaryReader br) { CHKToken cHKToken = GetNextCHK(br); br.BaseStream.Position = cHKToken.start; //Byte로부터 에디터로 넣는 함수 switch (cHKToken.tokentype) { case TOKENTYPE.ENCD: SetEncoding(br.ReadInt32()); break; case TOKENTYPE.IOWN: IOWN = br.ReadBytes(12); break; case TOKENTYPE.OWNR: //넘기기 OWNR = br.ReadBytes(12); break; case TOKENTYPE.SIDE: SIDE = br.ReadBytes(12); break; case TOKENTYPE.ERA: ushort tile = br.ReadUInt16(); if (tile > 7) { throw new Exception(""); } TILETYPE = (TileType)tile; break; case TOKENTYPE.COLR: COLR = br.ReadBytes(8); for (int i = 0; i < 8; i++) { if (COLR[i] >= ColorName.Count()) { COLR[i] = 0; } CRGB[i] = new Microsoft.Xna.Framework.Color(0, 0, COLR[i]); } break; case TOKENTYPE.CRGB: for (int i = 0; i < 8; i++) { byte[] colors = br.ReadBytes(3); CRGB[i] = new Microsoft.Xna.Framework.Color(colors[0], colors[1], colors[2]); } CRGBIND = br.ReadBytes(8); break; case TOKENTYPE.UNIT: UNIT.Clear(); for (int i = 0; i < cHKToken.size / 36; i++) { CUNIT cUNIT = new CUNIT(br); cUNIT.SetMapEditor(mapEditor); UNIT.Add(cUNIT); } break; case TOKENTYPE.DIM: WIDTH = br.ReadUInt16(); HEIGHT = br.ReadUInt16(); break; case TOKENTYPE.TILE: TILE = new ushort[cHKToken.size / 2]; for (int i = 0; i < cHKToken.size / 2; i++) { TILE[i] = br.ReadUInt16(); } break; case TOKENTYPE.MTXM: MTXM = new ushort[cHKToken.size / 2]; for (int i = 0; i < cHKToken.size / 2; i++) { MTXM[i] = br.ReadUInt16(); } break; case TOKENTYPE.DD2: for (int i = 0; i < cHKToken.size / 8; i++) { CDD2 cDD2 = new CDD2(br, this); DD2.Add(cDD2); } break; case TOKENTYPE.THG2: for (int i = 0; i < cHKToken.size / 10; i++) { CTHG2 cTHG2 = new CTHG2(br); THG2.Add(cTHG2); } break; case TOKENTYPE.MASK: MASK = br.ReadBytes((int)cHKToken.size); break; case TOKENTYPE.STR: { long startpoint = br.BaseStream.Position; LOADSTR = new string[br.ReadUInt16()]; BYTESTR = new List <byte[]>(); ushort[] ptrs = new ushort[LOADSTR.Length]; for (int i = 0; i < ptrs.Length; i++) { ptrs[i] = br.ReadUInt16(); } for (int i = 0; i < ptrs.Length; i++) { br.BaseStream.Position = startpoint + ptrs[i]; List <byte> strs = new List <byte>(); byte readbyte = br.ReadByte(); if (readbyte != 0) { strs.Add(readbyte); while (true) { readbyte = br.ReadByte(); if (readbyte == 0) { break; } strs.Add(readbyte); } } BYTESTR.Add(strs.ToArray()); //LOADSTR[i] = System.Text.Encoding.GetEncoding(949).GetString(strs.ToArray()); } } break; case TOKENTYPE.STRx: { long startpoint = br.BaseStream.Position; LOADSTRx = new string[br.ReadUInt32()]; BYTESTRx = new List <byte[]>(); uint[] ptrs = new uint[LOADSTRx.Length]; for (int i = 0; i < ptrs.Length; i++) { ptrs[i] = br.ReadUInt32(); } for (int i = 0; i < ptrs.Length; i++) { br.BaseStream.Position = startpoint + ptrs[i]; List <byte> strs = new List <byte>(); byte readbyte = br.ReadByte(); if (readbyte != 0) { strs.Add(readbyte); while (true) { readbyte = br.ReadByte(); if (readbyte == 0) { break; } strs.Add(readbyte); } } BYTESTRx.Add(strs.ToArray()); //LOADSTRx[i] = System.Text.Encoding.UTF8.GetString(strs.ToArray()); } } break; case TOKENTYPE.SPRP: SCEARIONAME = new StringData(this, br.ReadUInt16()); SCEARIODES = new StringData(this, br.ReadUInt16()); break; case TOKENTYPE.FORC: FORCE = br.ReadBytes(8); FORCENAME = new StringData[4]; FORCENAME[0] = new StringData(this, br.ReadUInt16()); FORCENAME[1] = new StringData(this, br.ReadUInt16()); FORCENAME[2] = new StringData(this, br.ReadUInt16()); FORCENAME[3] = new StringData(this, br.ReadUInt16()); FORCEFLAG = br.ReadBytes(4); break; case TOKENTYPE.MRGN: LocationDatas.Clear(); LocationDatas.Add(new LocationData(mapEditor)); for (int i = 0; i < 255; i++) { LocationData locationData = new LocationData(mapEditor); locationData.INDEX = i + 1; locationData.L = br.ReadUInt32(); locationData.T = br.ReadUInt32(); locationData.R = br.ReadUInt32(); locationData.B = br.ReadUInt32(); locationData.STRING = new StringData(this, br.ReadUInt16()); locationData.FLAG = br.ReadUInt16(); if (locationData.L == 0 & locationData.T == 0 & locationData.L == 0 & locationData.T == 0 & locationData.STRING.LoadedIndex == -1 & locationData.FLAG == 0) { continue; } LocationDatas.Add(locationData); } //u32: Left(X1) coordinate of location, in pixels(usually 32 pt grid aligned) //u32: Top(Y1) coordinate of location, in pixels //u32: Right(X2) coordinate of location, in pixels //u32: Bottom(Y2) coordinate of location, in pixels //u16: String number of the name of this location //u16: Location elevation flags.If an elevation is disabled in the location, it's bit will be on (1) //Bit 0 - Low elevation //Bit 1 - Medium elevation //Bit 2 - High elevation //Bit 3 - Low air //Bit 4 - Medium air //Bit 5 - High air //Bit 6 - 15 - Unused break; case TOKENTYPE.UPRP: UPRP = new CUPRP[64]; for (int i = 0; i < 64; i++) { CUPRP cUPRP = new CUPRP(); cUPRP.STATUSVALID = br.ReadUInt16(); cUPRP.POINTVALID = br.ReadUInt16(); cUPRP.PLAYER = br.ReadByte(); cUPRP.HITPOINT = br.ReadByte(); cUPRP.SHIELDPOINT = br.ReadByte(); cUPRP.ENERGYPOINT = br.ReadByte(); cUPRP.RESOURCE = br.ReadUInt32(); cUPRP.HANGAR = br.ReadUInt16(); cUPRP.STATUSFLAG = br.ReadUInt16(); cUPRP.UNUSED = br.ReadUInt32(); UPRP[i] = cUPRP; } break; case TOKENTYPE.UPUS: UPUS = br.ReadBytes(64); break; case TOKENTYPE.WAV: WAV = new StringData[512]; for (int i = 0; i < 512; i++) { WAV[i] = new StringData(this, br.ReadInt32()); } break; case TOKENTYPE.SWNM: SWNM = new StringData[256]; for (int i = 0; i < 256; i++) { SWNM[i] = new StringData(this, br.ReadInt32()); } break; case TOKENTYPE.PUNI: PUNI = new CPUNI(); for (int i = 0; i < 12; i++) { PUNI.UNITENABLED[i] = br.ReadBytes(228); } PUNI.DEFAULT = br.ReadBytes(228); for (int i = 0; i < 12; i++) { PUNI.USEDEFAULT[i] = br.ReadBytes(228); } break; case TOKENTYPE.PUPx: PUPx = new CPUPx(); for (int i = 0; i < 12; i++) { PUPx.MAXLEVEL[i] = br.ReadBytes(61); } for (int i = 0; i < 12; i++) { PUPx.STARTLEVEL[i] = br.ReadBytes(61); } PUPx.DEFAULTMAXLEVEL = br.ReadBytes(61); PUPx.DEFAULTSTARTLEVEL = br.ReadBytes(61); for (int i = 0; i < 12; i++) { PUPx.USEDEFAULT[i] = br.ReadBytes(61); } break; case TOKENTYPE.PTEx: PTEx = new CPTEx(); for (int i = 0; i < 12; i++) { PTEx.MAXLEVEL[i] = br.ReadBytes(44); } for (int i = 0; i < 12; i++) { PTEx.STARTLEVEL[i] = br.ReadBytes(44); } PTEx.DEFAULTMAXLEVEL = br.ReadBytes(44); PTEx.DEFAULTSTARTLEVEL = br.ReadBytes(44); for (int i = 0; i < 12; i++) { PTEx.USEDEFAULT[i] = br.ReadBytes(44); } break; case TOKENTYPE.UNIx: UNIx = new CUNIx(); for (int i = 0; i < 228; i++) { UNIx.USEDEFAULT[i] = br.ReadByte(); } for (int i = 0; i < 228; i++) { UNIx.HIT[i] = br.ReadUInt32(); } for (int i = 0; i < 228; i++) { UNIx.SHIELD[i] = br.ReadUInt16(); } for (int i = 0; i < 228; i++) { UNIx.ARMOR[i] = br.ReadByte(); } for (int i = 0; i < 228; i++) { UNIx.BUILDTIME[i] = br.ReadUInt16(); } for (int i = 0; i < 228; i++) { UNIx.MIN[i] = br.ReadUInt16(); } for (int i = 0; i < 228; i++) { UNIx.GAS[i] = br.ReadUInt16(); } for (int i = 0; i < 228; i++) { UNIx.STRING[i] = new StringData(this, br.ReadUInt16()); } for (int i = 0; i < 130; i++) { UNIx.DMG[i] = br.ReadUInt16(); } for (int i = 0; i < 130; i++) { UNIx.BONUSDMG[i] = br.ReadUInt16(); } break; case TOKENTYPE.UPGx: UPGx = new CUPGx(); for (int i = 0; i < 61; i++) { UPGx.USEDEFAULT[i] = br.ReadByte(); } br.ReadByte(); for (int i = 0; i < 61; i++) { UPGx.BASEMIN[i] = br.ReadUInt16(); } for (int i = 0; i < 61; i++) { UPGx.BONUSMIN[i] = br.ReadUInt16(); } for (int i = 0; i < 61; i++) { UPGx.BASEGAS[i] = br.ReadUInt16(); } for (int i = 0; i < 61; i++) { UPGx.BONUSGAS[i] = br.ReadUInt16(); } for (int i = 0; i < 61; i++) { UPGx.BASETIME[i] = br.ReadUInt16(); } for (int i = 0; i < 61; i++) { UPGx.BONUSTIME[i] = br.ReadUInt16(); } break; case TOKENTYPE.TECx: TECx = new CTECx(); for (int i = 0; i < 44; i++) { TECx.USEDEFAULT[i] = br.ReadByte(); } for (int i = 0; i < 44; i++) { TECx.MIN[i] = br.ReadUInt16(); } for (int i = 0; i < 44; i++) { TECx.GAS[i] = br.ReadUInt16(); } for (int i = 0; i < 44; i++) { TECx.BASETIME[i] = br.ReadUInt16(); } for (int i = 0; i < 44; i++) { TECx.ENERGY[i] = br.ReadUInt16(); } break; case TOKENTYPE.TRIG: TRIG.Clear(); for (int i = 0; i < cHKToken.size / 2400; i++) { RAWTRIGMBRF trig = new RAWTRIGMBRF(br); TRIG.Add(trig); } break; case TOKENTYPE.MBRF: MBRF.Clear(); for (int i = 0; i < cHKToken.size / 2400; i++) { RAWTRIGMBRF mbrf = new RAWTRIGMBRF(br); MBRF.Add(mbrf); } break; } for (int i = 0; i < cHKTokens.Count; i++) { if (cHKTokens[i].code == cHKToken.code) { cHKTokens.RemoveAt(i); break; } } cHKTokens.Add(cHKToken); br.BaseStream.Position = cHKToken.end; return(true); }
public void MapDataReset() { cHKTokens = new List <CHKToken>(); for (int i = 0; i < 8; i++) { CRGB[i] = new Microsoft.Xna.Framework.Color(0, 0, 0); CRGBIND[i] = (byte)CRGBINDTYPE.UseCOLRselection; COLR[i] = (byte)i; } UNIT.Clear(); FORCE = new byte[8]; FORCENAME = new StringData[4]; FORCENAME[0] = new StringData(this, "세력 1"); FORCENAME[1] = new StringData(this, "세력 2"); FORCENAME[2] = new StringData(this, "세력 3"); FORCENAME[3] = new StringData(this, "세력 4"); SIDE = new byte[12]; FORCEFLAG = new byte[4]; WIDTH = 0; HEIGHT = 0; MASK = null; MTXM = null; TILE = null; BYTESTR = null; BYTESTRx = null; LOADSTR = null; LOADSTRx = null; IOWN = null; OWNR = null; //LocationDatas.Add(new LocationData()); SCEARIONAME = new StringData(this, "제목 없음"); SCEARIODES = new StringData(this, "시나리오 설명이 없습니다."); ENCODING = null;// System.Text.Encoding. DD2.Clear(); THG2.Clear(); DDDTHG2.Clear(); LocationDatas.Clear(); LocationDatas.Add(new LocationData(mapEditor)); UPRP = new CUPRP[64]; for (int i = 0; i < 64; i++) { UPRP[i] = new CUPRP(); } UPUS = new byte[64]; WAV = new StringData[512]; for (int i = 0; i < 512; i++) { WAV[i] = new StringData(this); } SWNM = new StringData[256]; for (int i = 0; i < 256; i++) { SWNM[i] = new StringData(this); } TRIG.Clear(); MBRF.Clear(); PUNI = new CPUNI(true); PUPx = new CPUPx(true); PTEx = new CPTEx(true); UNIx = new CUNIx(this, true); UPGx = new CUPGx(true); TECx = new CTECx(true); soundDatas = new List <SoundData>(); Triggers.Clear(); Brifings.Clear(); }