private void RecreateLevel() { _carrentBrushType = EPipeType.None; _carrentBrushColor = -1; _carrentBrushParam = -1; _intBrush = PIPE_TYPE_NONE_ID; _indexStart = -1; _drawState = EMoveType.None; _textures = new Texture[_w * _h]; _neededStates.Clear(); for (int i = 0; i < _w; ++i) { List <SSlotData> rowN = new List <SSlotData>(); for (int j = 0; j < _h; ++j) { int id = GetSlotIndex(i, j); _textures[id] = _statesTexs[PIPE_TYPE_NONE_ID]; SSlotData neededSlot = new SSlotData(); neededSlot.x = i; neededSlot.y = j; neededSlot.c = -1; neededSlot.p = -1; neededSlot.pt = EPipeType.None; rowN.Add(neededSlot); } _neededStates.Add(rowN); } }
private void LoadStartLevelData() { StartLevelData = new LevelData(); TextAsset levelXml = Resources.Load <TextAsset>("Data/startleveldata"); XmlDocument xmlDoc = new XmlDocument(); // xmlDoc is the new xml document. xmlDoc.LoadXml(levelXml.text); // load the file. XmlNodeList slotsList = xmlDoc.GetElementsByTagName("slot"); // array of the slots nodes. foreach (XmlNode slotInfo in slotsList) { SSlotData sData = new SSlotData(); sData.x = int.Parse(slotInfo.Attributes["x"].Value); sData.y = int.Parse(slotInfo.Attributes["y"].Value); sData.pt = (EPipeType)System.Enum.Parse(typeof(EPipeType), slotInfo.Attributes["pt"].Value); sData.p = int.Parse(slotInfo.Attributes["p"].Value); sData.c = int.Parse(slotInfo.Attributes["c"].Value); StartLevelData.Slots.Add(sData); } StartLevelData.ReshufflePowerups = Consts.POWERUPS_RESHUFFLE_AT_START; StartLevelData.BreakePowerups = Consts.POWERUPS_BREAKE_AT_START; StartLevelData.ChainPowerups = Consts.POWERUPS_CHAIN_AT_START; StartLevelData.DestroyColorsPowerups = Consts.POWERUPS_DESTROY_COLOR_AT_START; StartLevelData.AddsViewed = false; // set true for paid version }
public void InitSavedSlot(SSlotData sData) { // for saved slots with pipe X = sData.x; Y = sData.y; Id = X * 100 + Y; name = "Slot_" + X + "_" + Y; WaitForPipe = false; }
public static LevelData ConvertToLevelData(CreatureMixLevelData cmLevelData, int level) { LevelData res = new LevelData(); res.Type = cmLevelData.Type; res.Moves = cmLevelData.Moves; res.CollectAim = cmLevelData.CollectAim; res.Colors = new List <int>(); for (int i = 0; i < cmLevelData.Colors.Count; ++i) { res.Colors.Add(cmLevelData.Colors[i]); } res.Slots = new List <SSlotData>(); for (int i = 0; i < cmLevelData.NeededStates.Count; ++i) { res.Slots.Add(cmLevelData.NeededStates[i]); } res.Aims = new List <Vector3Int>(); res.CreatureId = cmLevelData.CreatureId; for (int i = 0; i < cmLevelData.Aims.Count; ++i) { res.Aims.Add(new Vector3Int(cmLevelData.Aims[i].x, cmLevelData.Aims[i].y, 0)); } if (IsEmptyLevel(res.Slots)) { res.AddNewPipes = true; UnityEngine.Random.InitState(level); res.Slots.Clear(); for (int i = 0; i < GameBoard.WIDTH; ++i) { for (int j = 0; j < GameBoard.HEIGHT; ++j) { if (UnityEngine.Random.Range(0, 100) <= 33) { SSlotData sData = new SSlotData(); sData.x = i; sData.y = j; sData.pt = EPipeType.Colored; sData.p = 0; sData.c = -1; res.Slots.Add(sData); } } } } res.AddNewPipes = cmLevelData.AddNewPipes; // enemies res.EnemiesQueue = new List <QueueElement>(); for (int i = 0; i < cmLevelData.Queue.Count; ++i) { res.EnemiesQueue.Add(cmLevelData.Queue[i]); } // return(res); }
public static LevelData GenerateCreatureMixLevel(int level) { UnityEngine.Random.InitState(level); LevelData res = new LevelData(); res.Type = ELevelType.Battle; res.AddNewPipes = true; res.Colors = new List <int>(); res.Moves = 0; res.CollectAim = 0; // aims res.Aims = new List <Vector3Int>(); res.Aims.Add(new Vector3Int(0, UnityEngine.Random.Range(2, 5), 0)); res.Aims.Add(new Vector3Int(1, UnityEngine.Random.Range(2, 5), 0)); res.Aims.Add(new Vector3Int(2, UnityEngine.Random.Range(2, 5), 0)); res.Aims.Add(new Vector3Int(3, UnityEngine.Random.Range(2, 5), 0)); res.CreatureId = UnityEngine.Random.Range(0, 3); // start pipes res.Slots = new List <SSlotData>(); for (int i = 0; i < GameBoard.WIDTH; ++i) { for (int j = 0; j < GameBoard.HEIGHT; ++j) { if (UnityEngine.Random.Range(0, 100) <= 33) { SSlotData sData = new SSlotData(); sData.x = i; sData.y = j; sData.pt = EPipeType.Colored; sData.p = 0; sData.c = -1; res.Slots.Add(sData); } } } // enemies res.EnemiesQueue = new List <QueueElement>(); QueueElement startElement = new QueueElement("enemy_1", 0, 0, ""); res.EnemiesQueue.Add(startElement); for (int i = 0; i < 5; ++i) { QueueElement element = new QueueElement("enemy_1", i * 2, 0, ""); res.EnemiesQueue.Add(element); } // return(res); }
private void ReloadLevel() { if (_myLevel.NeededStates == null) { RecreateLevel(); return; } _w = GameBoard.WIDTH; _h = GameBoard.HEIGHT;; _textures = new Texture[_w * _h]; _neededStates = new List <List <SSlotData> >(); for (int i = 0; i < _w; ++i) { List <SSlotData> rowN = new List <SSlotData>(); for (int j = 0; j < _h; ++j) { int id = GetSlotIndex(i, j); SSlotData savedNeededSlot = _myLevel.NeededStates[id]; SSlotData neededSlot = new SSlotData(); neededSlot.x = i; neededSlot.y = j; neededSlot.c = savedNeededSlot.c; neededSlot.p = savedNeededSlot.p; neededSlot.pt = savedNeededSlot.pt; rowN.Add(neededSlot); int intNeededIndex = PipeParamsToEditorsInt(neededSlot.pt, neededSlot.c, neededSlot.p); _textures[id] = _statesTexs[intNeededIndex]; } _neededStates.Add(rowN); } // queue _queue.Clear(); for (int i = 0; i < _myLevel.Queue.Count; ++i) { _queue.Add(_myLevel.Queue[i]); } if (_queue.Count > 0) { _currentQueueIndex = 0; } else { _currentQueueIndex = -1; } // }
private void SaveLevel() { if (_myLevel.NeededStates == null) { _myLevel.NeededStates = new List <SSlotData>(); } _myLevel.NeededStates = new List <SSlotData>(); //for (int j = 0; j < _h; ++j) //{ //for (int i = 0; i < _w; ++i) //{ for (int j = _h - 1; j >= 0; --j) { for (int i = 0; i < _w; ++i) { SSlotData neededData = _neededStates[i][j]; SSlotData neededSlot = new SSlotData(); neededSlot.x = i; neededSlot.y = j; neededSlot.c = neededData.c; neededSlot.p = neededData.p; neededSlot.pt = neededData.pt; _myLevel.NeededStates.Add(neededSlot); } } // queue if (_myLevel.Queue == null) { _myLevel.Queue = new List <QueueElement>(); } _myLevel.Queue.Clear(); for (int i = 0; i < _queue.Count; ++i) { _myLevel.Queue.Add(_queue[i]); } // EditorUtility.SetDirty(_myLevel); }