/// <summary> /// アニメーションチップを書き込む /// </summary> /// <param name="objSave"></param> private bool WriteAnimationChip(SaveState objSave) { int i, j; //---------------- // アニメーションチップ //---------------- objSave.BlockStart(FAnmSquareTileHeader.ID); { for (i = 0; i < m_animationTile.Count; ++i) { objSave.Write(m_animationTile[i]); objSave.BlockStart(FAnmSquareTileFrame.ID); { for (j = 0; j < m_animationTile[i].ChipCount; ++j) { objSave.Write(m_animationTile[i].aTile[j]); } } objSave.BlockEnd(); } } objSave.BlockEnd(); return(true); }
///// <summary> ///// アニメーションRECTの読み込み ///// </summary> ///// <param name="lData"></param> ///// <returns></returns> //private bool ReadAnimationRect(LoadData lData) //{ // LoadData lData02; // LoadChank lChank, lChank02; // Chunk chank = new Chunk(); // AnimationRect tlAR = new AnimationRect(); // // チャンクブロックチェックしない // // IDから処理選択 // lData.GetChank(chank); // while ((lChank = lData.FindData(tlAR)) != null || !lData.GetFindEnd()) // { // if (lChank != null) // { // lChank.GetBlockChank(chank); // // IDから処理選択 // while ((lData02 = lChank.FindChank(chank)) != null) // { // if (chank.id == FAnimationRectFrame.ID) // { // //--------------------------------- // // RECTアニメーション // //--------------------------------- // AnimationRectFrame tlBRD = new AnimationRectFrame(); // // チェック // if (chank.nVersion != tlBRD.GetVersion() || chank.num == 0) // { // throw new IOException("FAnimationRectFrame バージョンが異常です。"); // } // tlAR.num = 0; // tlAR.period = 0.0f; // while ((lChank02 = lData02.FindData(tlBRD)) != null || !lData02.GetFindEnd()) // { // // 合計時間 // tlAR.period += (float)(tlBRD.wait) * FRAME_RATE; // // 現在これ以上入れ子はない // if (lChank02 != null) // { // throw new IOException("FAnimationRectFrame 予期せぬ入れ子。"); // } // ++tlAR.num; // tlAR.Add(tlBRD); // tlBRD = new AnimationRectFrame(); // } // if (tlAR.num <= 1) // { // tlAR.period = 0.0f; // } // } // else // { // // FFID_MAPCHIP_INFO以外のIDが今現在存在しないで // // 怪しい値を見つけたらエラーをはき出すようにする // throw new IOException("未対応のIDが呼ばれた。"); // } // } // } // m_vAnimaRECT.Add(tlAR); // tlAR = new AnimationRect(); // } // return true; //} #endregion //############################################################################## //############################################################################## //## //## 書き込み //## //############################################################################## //############################################################################## #region 書き込み /// <summary> /// 書き込み開始 /// </summary> /// <param name="objSave"></param> internal void RectWrite(SaveState objSave) { //------------------------------------------- // スクエアイメージファイルチャンクの書き込み //------------------------------------------- if (m_ptrRectImageFileDic.Count != 0) { //----------------------------- // FImageSquareTile objSave.BlockStart(FImageRect.ID); { foreach (ImageRect valu in m_ptrRectImageFileDic.Values) { // イメージ番号[0]:マップチップ用のイメージ objSave.Write(valu); if (valu.GetID() == FImageRect.ID && valu.aSprite.Count != 0) { //----------------------------- // FImageRect objSave.BlockStart(FImageRect.ID); { for (int i = 0; i < valu.aSprite.Count; ++i) { objSave.Write(valu.aSprite[i]); } } objSave.BlockEnd(); } } } objSave.BlockEnd(); } }
//############################################################################## //############################################################################## //## //## 書き込み //## //############################################################################## //############################################################################## #region 書き込み /// <summary> /// 書き込み開始 /// </summary> /// <param name="objSave"></param> internal void SquareTileWrite(SaveState objSave) { //------------------------------------------- // スクエアイメージファイルチャンクの書き込み //------------------------------------------- if (m_ptrSquareTileImageFileDic.Count != 0) { //----------------------------- // FImageSquareTile objSave.BlockStart(FImageSquareTile.ID); { foreach (ImageSquareTile valu in m_ptrSquareTileImageFileDic.Values) { // イメージ番号[0]:マップチップ用のイメージ objSave.Write(valu); if (valu.GetID() == FImageSquareTile.ID && valu.tileInfos.Count != 0) { //----------------------------- // FSquareTileInfo objSave.BlockStart(FSquareTileInfo.ID); { for (int i = 0; i < valu.tileInfos.Count; ++i) { objSave.Write(valu.tileInfos[i]); } } objSave.BlockEnd(); } } } objSave.BlockEnd(); } }
//########################################################################### //## //## 書き込み //## //########################################################################### public bool FF_WriteStageFile(SaveState objSave) { FF_BACKGROUND ffBG = new FF_BACKGROUND(); FF_BACKGROUND_CHIP bgChip = new FF_BACKGROUND_CHIP(); FF_BACKGROUND_RECT bgRECT = new FF_BACKGROUND_RECT(); int i, j; ffBG.SetString(m_strName); ffBG.tileNumX = m_tileNumX; ffBG.tileNumY = m_tileNumY; ffBG.tmp = 0; objSave.Write(ffBG); if (m_BGCs.LengthX != 0) { // チップデータ objSave.BlockStart(FF_BACKGROUND_CHIP.ID); { for (i = 0; i < m_BGCs.LengthY; ++i) { for (j = 0; j < m_BGCs.LengthX; ++j) { objSave.Write(m_BGCs[i, j]); } } } objSave.BlockEnd(); } // 背景、全景で一枚絵から切り取るヘッダ部分 if (m_aBGR.Count != 0) { objSave.BlockStart(FF_BACKGROUND_RECT.ID); { for (i = 0; i < m_aBGR.Count; ++i) { objSave.Write(m_aBGR[i]); } } objSave.BlockEnd(); } return(true); }
//bool StartAnimation(const TCHAR *tszName); //HRESULT PreUpdate(float fElapsedTime ); //bool ChangeMapChipCollisionChecku(const MCVECTOR2& rMovePos, const MC_AABB2D& rTagetAABB); //int MapChipDraw( // const VP_IMAGEFILE &rvpImgFile, // const MC_AABB2D* pBOA, // int nX, int nY //); //########################################################################### //## //## 書き込み //## //########################################################################### #region 書き込み /// <summary> /// /// </summary> /// <param name="objSave"></param> /// <returns></returns> internal bool FF_WriteStageFile(SaveState objSave) { int i, j, k; //---------------- // マップ //---------------- FSquareTileMapHeader map = new FSquareTileMapHeader(); // マップ map.SetString(m_mapName); map.tileNumX = m_tileCountX; map.tileNumY = m_tileCountY; objSave.Write(map); //---------------- // 一つのマップチップ //---------------- objSave.BlockStart(FSquareTileInfoMap.ID); { for (i = 0; i < m_mapTiles.LengthY; ++i) { for (j = 0; j < m_mapTiles.LengthX; ++j) { objSave.Write(m_mapTiles[i, j]); } } } objSave.BlockEnd(); //---------------- // イベントRECT //---------------- if (m_eventRect.Count > 0) { FSquareTileMapRect eRect = new FSquareTileMapRect(); objSave.BlockStart(FSquareTileMapRect.ID); { foreach (KeyValuePair <string, FSquareTileMapRect> kvp in m_eventRect) { objSave.Write(kvp.Value); } } objSave.BlockEnd(); } //---------------- // マップ置き換え //---------------- if (m_transPoseTiles.Count > 0) { objSave.BlockStart(FSquareTilesTransposeHeader.ID); { foreach (KeyValuePair <string, SquareTilesTranspose> kvp in m_transPoseTiles) { objSave.Write(kvp.Value); objSave.BlockStart(FSquareTilesTransposeFrame.ID); { for (i = 0; i < kvp.Value.aTCF.Count; ++i) { objSave.Write(kvp.Value.aTCF[i]); // マップチップデータ objSave.BlockStart(FSquareTileInfoMap.ID); { for (j = 0; j < kvp.Value.aTCF[i].aaMapChip.LengthY; ++j) { for (k = 0; k < kvp.Value.aTCF[i].aaMapChip.LengthX; ++k) { objSave.Write(kvp.Value.aTCF[i].aaMapChip[j, k]); } } } objSave.BlockEnd(); } } objSave.BlockEnd(); } } objSave.BlockEnd(); } return(true); }