public override bool InitOne(ContentManager content, int id) { XmlDocument _doc = new XmlDocument(); _doc.Load(_xmlInfo); XmlNode _map = _doc.SelectSingleNode(@"//Map[@id = '" + id.ToString() + "']"); _prototype[id] = new Map(); int _cols = int.Parse(_map.SelectSingleNode("Width").InnerText); int _rows = int.Parse(_map.SelectSingleNode("Height").InnerText); int _pieceWidth = int.Parse(_map.SelectSingleNode("PieceWidth").InnerText); int _pieceHeight = int.Parse(_map.SelectSingleNode("PieceHeight").InnerText); int _npiece = _prototype[id]._nsprite = _cols * _rows; _prototype[id]._sprite = new GameSprite[_npiece]; string contentName = _map.SelectSingleNode("ContentName").InnerText; for (int i = 0; i < _npiece; ++i) { _prototype[id]._sprite[i] = new GameSprite(content.Load<Texture2D>(contentName + i.ToString("0000")), (i % _cols) * _pieceWidth, (i / _cols) * _pieceHeight); } ((Map)_prototype[id]).Width = _prototype[id]._sprite[0].Texture2D[0].Width * _cols; ((Map)_prototype[id]).Height = _prototype[id]._sprite[0].Texture2D[0].Height * _rows; ((Map)_prototype[id]).Cols = _cols; ((Map)_prototype[id]).Rows = _rows; ((Map)_prototype[id]).RpF = GlobalVariables.ScreenHeight / _pieceHeight + 1; ((Map)_prototype[id]).CpF = GlobalVariables.ScreenWidth / _pieceWidth + 1; ((Map)_prototype[id]).StartPointX = int.Parse(_map.SelectSingleNode("StartPointX").InnerText); ((Map)_prototype[id]).StartPointY = int.Parse(_map.SelectSingleNode("StartPointY").InnerText); ((Map)_prototype[id]).PieceWidth = int.Parse(_map.SelectSingleNode(@"PieceWidth").InnerText); ((Map)_prototype[id]).PieceHeight = int.Parse(_map.SelectSingleNode(@"PieceHeight").InnerText); string collisionName = _map.SelectSingleNode("Collision").InnerText; List<List<bool>> matrix = new List<List<bool>>(); int collisionUnitDim = int.Parse(_map.SelectSingleNode("CollisionUnitDim").InnerText); int collisionMatrixWith = (int)((Map)_prototype[id]).Width / collisionUnitDim; int collisionMatrixHeight = (int)((Map)_prototype[id]).Height / collisionUnitDim; FileStream f = File.OpenRead(collisionName); List<bool> temp = new List<bool>(); while (true) { int i = f.ReadByte(); if (i == -1) break; if (i == '\r' || i == ' ' || i == '\n') continue; if (i == '1') temp.Add(true); else temp.Add(false); if (temp.Count == collisionMatrixWith) { matrix.Add(temp); temp = new List<bool>(); } } ((Map)_prototype[id]).Matrix = matrix; ((Map)_prototype[id]).CollisionDim = collisionUnitDim; ((Map)_prototype[id]).MapName = _map.SelectSingleNode(@"MapName").InnerText; return true; }
public override void SetMap(Map map) { base.SetMap(map); X = map.StartPointX * map.CollisionDim; Y = map.StartPointY * map.CollisionDim; GlobalVariables.dX = Math.Min(-X + GlobalVariables.ScreenWidth / 2, 0); GlobalVariables.dY = Math.Min(-Y + GlobalVariables.ScreenHeight / 2, 0); DestPoint = new Point((int)X, (int)Y); }
public override void InitState(ContentManager content, MainGame owner) { base.InitState(content, owner); GlobalVariables.MonsterManager = new MonsterManager(); GlobalVariables.MonsterManager.InitPrototypes(content, @"Data\monster\monster.xml"); _charManager.InitPrototypes(content, @"Data\character\character.xml"); _mapManager.InitPrototypes(content, @"Data\Map\map01.xml"); _map = (Map)_mapManager.CreateObject(0); GlobalVariables.MapCollisionDim = _map.CollisionDim; _char = (PlayerCharacter)_charManager.CreateObject(0); _char.SetMap(_map); _listMonsters = _map.InitMonsterList(); _frog = new Frog(); _frog.Init(content); _frog.SetCharacter(_char); }
/// <summary> /// Gán nhân vật với bản đồ /// </summary> /// <param name="map">Bản đồ cần gán</param> public virtual void SetMap(Map map) { _map = map; cellToMove = new List<Point>(); IsStanding = true; _destPoint = new Point((int)X, (int)Y); }
public override void InitState(GameObjectManager[] objectManagerArray, MainGame owner) { base.InitState(objectManagerArray, owner); _map = (Map)objectManagerArray[1].CreateObject(0); GlobalVariables.MapCollisionDim = _map.CollisionDim; _char = (PlayerCharacter)objectManagerArray[0].CreateObject(0); _char.SetMap(_map); _char.StateOwner = this; _map.Owner = this; _listMonsters = _map.InitMonsterList((MonsterManager)objectManagerArray[2],@"Data\Map\map01\map01_monster.xml"); _frog = new Fog(); _frog.Init(owner.Content); _frog.SetCharacter(_char); _displayMessageLayer = new DisplayMessageLayer(); //Phần ???--------------------------------------------------------------------------- _listPortral = _map.InitPortralList((PortralManager)objectManagerArray[4], @"Data\Map\map01\map01_portral.xml"); _listObstacle = _map.InitObstacle((MapObstacleManager)objectManagerArray[5], @"Data\Map\map01\map01_obstacle.xml"); _objectManagerArray = objectManagerArray; _listToDraw = new List<VisibleGameEntity>(); _char.InitSkill(); //Phần healthbar-------------------------------------------------------------------- _healthBar = new HealthBar(); _healthBar.SetCharacter(_char); List<GameObjectManager> _resourcesForHealthbar = new List<GameObjectManager>(); _resourcesForHealthbar.Add(objectManagerArray[8]); _resourcesForHealthbar.Add(objectManagerArray[9]); _resourcesForHealthbar.Add(objectManagerArray[10]); _resourcesForHealthbar.Add(objectManagerArray[11]); _healthBar.GetResources(_resourcesForHealthbar); //Phần SkillBoard------------------------------------------------------------------ _skillBoard = new SkillBoard(); _skillBoard.SetCharacter(_char); List<GameObjectManager> _resourcesForSkillBoard = new List<GameObjectManager>(); _resourcesForSkillBoard.Add(objectManagerArray[8]); _resourcesForSkillBoard.Add(objectManagerArray[10]); _resourcesForSkillBoard.Add(objectManagerArray[11]); _skillBoard.GetResources(_resourcesForSkillBoard); //Phần Left-hand selection frame _lhSkillSelectionFrame = new LHSkillSelectionFrame(); _lhSkillSelectionFrame.SetCharacter(_char); List<GameObjectManager> _resourceForLHSSelectionFrame = new List<GameObjectManager>(); _resourceForLHSSelectionFrame.Add(_objectManagerArray[8]); _resourceForLHSSelectionFrame.Add(_objectManagerArray[10]); _lhSkillSelectionFrame.GetResources(_resourceForLHSSelectionFrame); //Phần Right-hand selection frame _rhSkillSelectionFrame = new RHSkillSelectionFrame(); _rhSkillSelectionFrame.SetCharacter(_char); _rhSkillSelectionFrame.GetResources(_resourceForLHSSelectionFrame); //Phần subMenu _subMenu = new SubMenu(); List<GameObjectManager> _resourceForSubMenu = new List<GameObjectManager>(); _resourceForSubMenu.Add(_objectManagerArray[8]); _resourceForSubMenu.Add(_objectManagerArray[10]); _subMenu.GetResources(_resourceForSubMenu); _subMenu.GetStateOwner(this); //Phần infoBoard _infoBoard = new InfoBoard(); _infoBoard.SetCharacter(_char); List<GameObjectManager> _resourceForInfo = new List<GameObjectManager>(); _resourceForInfo.Add(_objectManagerArray[8]); _resourceForInfo.Add(_objectManagerArray[10]); _resourceForInfo.Add(_objectManagerArray[11]); _infoBoard.GetResources(_resourceForInfo); }
public override bool InitPrototypes(ContentManager content, string fileName) { try { _nprototype = 1; _prototype = new Map[_nprototype]; _prototype[0] = new Map(); XmlDocument doc = new XmlDocument(); doc.Load(fileName); int _cols = int.Parse(doc.SelectSingleNode("//Width").InnerText); int _rows = int.Parse(doc.SelectSingleNode("//Height").InnerText); int _pieceWidth = int.Parse(doc.SelectSingleNode("//PieceWidth").InnerText); int _pieceHeight = int.Parse(doc.SelectSingleNode("//PieceHeight").InnerText); int _npiece = _prototype[0]._nsprite = _cols * _rows; _prototype[0]._sprite = new GameSprite[_npiece]; string contentName = doc.SelectSingleNode("//ContentName").InnerText; for (int i = 0; i < _npiece; ++i) { _prototype[0]._sprite[i] = new GameSprite(content.Load<Texture2D>(contentName + i.ToString("0000")),(i % _cols) * _pieceWidth,(i / _cols) * _pieceHeight); } ((Map)_prototype[0]).Width = _prototype[0]._sprite[0].Texture2D[0].Width * _cols; ((Map)_prototype[0]).Height = _prototype[0]._sprite[0].Texture2D[0].Height * _rows; ((Map)_prototype[0]).Cols = _cols; ((Map)_prototype[0]).Rows = _rows; ((Map)_prototype[0]).RpF = GlobalVariables.ScreenHeight / _pieceHeight + 1; ((Map)_prototype[0]).CpF = GlobalVariables.ScreenWidth / _pieceWidth + 1; ((Map)_prototype[0]).StartPointX = int.Parse(doc.SelectSingleNode("//StartPointX").InnerText); ((Map)_prototype[0]).StartPointY = int.Parse(doc.SelectSingleNode("//StartPointY").InnerText); string collisionName = doc.SelectSingleNode("//Collision").InnerText; List<List<bool>> matrix = new List<List<bool>>(); int collisionUnitDim = int.Parse(doc.SelectSingleNode("//CollisionUnitDim").InnerText); int collisionMatrixWith = (int)((Map)_prototype[0]).Width / collisionUnitDim; int collisionMatrixHeight = (int)((Map)_prototype[0]).Height / collisionUnitDim; FileStream f = File.OpenRead(collisionName); List<bool> temp = new List<bool>(); while (true) { int i = f.ReadByte(); if (i == -1) break; if (i == '\r' || i == ' ' || i == '\n') continue; if (i == '1') temp.Add(true); else temp.Add(false); if (temp.Count == collisionMatrixWith) { matrix.Add(temp); temp = new List<bool>(); } } ((Map)_prototype[0]).Matrix = matrix; ((Map)_prototype[0]).CollisionDim = collisionUnitDim; XmlNodeList Monsters = doc.SelectNodes(@"//Monster"); ((Map)_prototype[0]).LstMonster = new List<Monster>(); for (int i = 0; i < Monsters.Count; ++i) { Monster mst = (Monster)GlobalVariables.MonsterManager.CreateObject(int.Parse(Monsters[i].SelectSingleNode(@"Type").InnerText)); ((Map)_prototype[0]).LstMonster.Add(mst); ((Map)_prototype[0]).LstMonster[i].X = int.Parse(Monsters[i].SelectSingleNode(@"X").InnerText) * collisionUnitDim; ((Map)_prototype[0]).LstMonster[i].Y = int.Parse(Monsters[i].SelectSingleNode(@"Y").InnerText) * collisionUnitDim; ((Map)_prototype[0]).LstMonster[i].DestPoint = new Point((int)((Map)_prototype[0]).LstMonster[i].X, (int)((Map)_prototype[0]).LstMonster[i].Y); ((Map)_prototype[0]).LstMonster[i].CellToMove = new List<Point>(); ((Map)_prototype[0]).LstMonster[i].SetMap((Map)_prototype[0]); } return true; } catch (Exception e) { return false; } }