public void AddItem(int itemid, int hue, sbyte z) { if(Items == null) Items = new List<ItemClone>(); var item = new ItemClone {Id = itemid, Hue = hue, Z = z}; Items.Add(item); }
public void AddItem(int itemid, int hue, sbyte z) { if (Items == null) { Items = new List <ItemClone>(); } var item = new ItemClone { Id = itemid, Hue = hue, Z = z }; Items.Add(item); }
/// <summary> /// function to make the translations with items /// </summary> /// <param name="coordinates"> </param> /// <param name="areaColorCoordinates"> </param> /// <param name="mapObjectCoordinates"> </param> private void ItemsTransitions (Coordinates coordinates, AreaColorCoordinates areaColorCoordinates, MapObjectCoordinates mapObjectCoordinates, Random random) { if (areaColorCoordinates.Center.Type == TypeColor.Cliff) return; if (mapObjectCoordinates.Center.Items != null || mapObjectCoordinates.Center.Occupied != 0) return; //int special = 0; var texturelist = areaColorCoordinates.List.Select(o => o.TextureIndex).Distinct(); if (texturelist.Count() <= 1) return; var transitionList = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems; if (!transitionList.List.Any()) return; transitionList.InitializeSeaches(); if (areaColorCoordinates.List.All(o => o.Color == areaColorCoordinates.Center.Color)) return; var indexes = areaColorCoordinates.List.Select(o => o.TextureIndex); AreaTransitionItem k = null; foreach (var id in indexes) { k = transitionList.FindById(id); if (k != null) break; } if (k == null) return; int zlev = 0; var item = new ItemClone(); #region Border //Border //GB //xG if (areaColorCoordinates.NorthEast.Color != areaColorCoordinates.Center.Color) { var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.NorthEast.Color); //7 if (transation != null) item = new ItemClone() {Id = RandomFromList(transation.BorderSouthWest.List, random)}; } //BG //Gx if (areaColorCoordinates.NorthWest.Color != areaColorCoordinates.Center.Color) { var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.NorthWest.Color); //6 if (transation != null) item = new ItemClone {Id = RandomFromList(transation.BorderSouthEast.List, random)}; } //Gx //BG if (areaColorCoordinates.SouthWest.Color != areaColorCoordinates.Center.Color) { var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.SouthWest.Color); //5 if (transation != null) item = new ItemClone {Id = RandomFromList(transation.BorderNorthEast.List, random)}; } //xG //GB if (areaColorCoordinates.SouthEast.Color != areaColorCoordinates.Center.Color) { var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.SouthEast.Color); //4 if (transation != null) item = new ItemClone {Id = RandomFromList(transation.BorderNorthWest.List, random)}; } #endregion //Border #region Line //Line // B //GxG if (areaColorCoordinates.North.TextureIndex != areaColorCoordinates.Center.TextureIndex) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.North.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.North.TextureIndex); //2 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.LineSouth.List, random)}; } //GxG // B if (areaColorCoordinates.South.TextureIndex != areaColorCoordinates.Center.TextureIndex) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.South.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems. FindById( areaColorCoordinates.South.TextureIndex); //0 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.LineNorth.List, random)}; } //G //xB //G if (areaColorCoordinates.East.TextureIndex != areaColorCoordinates.Center.TextureIndex) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.East.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.East.TextureIndex); //3 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.LineWest.List, random)}; } // G //Bx // G if (areaColorCoordinates.West.TextureIndex != areaColorCoordinates.Center.TextureIndex) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.West.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.West.TextureIndex); //1 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.LineEast.List, random)}; } #endregion //Line #region Edge //Edge //B //xB if ( areaColorCoordinates.East.TextureIndex != areaColorCoordinates.Center.TextureIndex && areaColorCoordinates.North.TextureIndex != areaColorCoordinates.Center.TextureIndex ) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.NorthEast.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.NorthEast.TextureIndex); //11 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.EdgeSouthWest.List, random)}; } // B //Bx if ( areaColorCoordinates.West.TextureIndex != areaColorCoordinates.Center.TextureIndex && areaColorCoordinates.North.TextureIndex != areaColorCoordinates.Center.TextureIndex ) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.NorthWest.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.NorthWest.TextureIndex); //10 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.EdgeSouthEast.List, random)}; } //Bx // B if ( areaColorCoordinates.West.TextureIndex != areaColorCoordinates.Center.TextureIndex && areaColorCoordinates.South.TextureIndex != areaColorCoordinates.Center.TextureIndex ) { //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.SouthWest.Color); var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.SouthWest.TextureIndex); //9 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.EdgeNorthEast.List, random)}; } //xB //B if ( areaColorCoordinates.East.TextureIndex != areaColorCoordinates.Center.TextureIndex && areaColorCoordinates.South.TextureIndex != areaColorCoordinates.Center.TextureIndex ) { var transition = TextureAreas._fast[areaColorCoordinates.Center.TextureIndex].CollectionAreaItems.FindById( areaColorCoordinates.SouthEast.TextureIndex); //var transation = areaColorCoordinates.Center.FindTransationItemByColor(areaColorCoordinates.SouthEast.Color); //8 if (transition != null) item = new ItemClone {Id = RandomFromList(transition.EdgeNorthWest.List, random)}; } #endregion //Edge if (item.Id == 0) return; var coast = areaColorCoordinates.Center; if (coast.Type == TypeColor.Water) { //zlev = random.Next(coast.Min, coast.Max); item.Z = (sbyte) areaColorCoordinates.Center.ItemsAltitude; } if (mapObjectCoordinates.Center.Items == null) mapObjectCoordinates.Center.Items = new List<ItemClone>(); mapObjectCoordinates.Center.Items.Add(item); }
/// <summary> /// method to set items in the map /// </summary> void SetItem() { var randomGen = new Random(); int x, y, z = 0; for (x = MinX; x < _X; x++) for (y = MinY; y < _Y; y++) { var location = CalculateZone(x, y, _stride); if (_mapObjects[location].Occupied != 0) continue; var itemgroups = _bitmapAreaColor[location].Items; if (itemgroups == null || itemgroups.List.Count <= 0) continue; var group = itemgroups.List[randomGen.Next(0, itemgroups.List.Count)]; var random = randomGen.Next(0, 100); if (random > @group.Percent) continue; var tmp_item = @group.List.First(); if (@group.List.Count > 1) { z = tmp_item.Z; } foreach (SingleItem item in @group.List) { var locationshift = CalculateZone(x + item.X, y + item.Y, _stride); if (_mapObjects[locationshift].Items == null) _mapObjects[locationshift].Items = new List<ItemClone>(); var itemclone = new ItemClone(item); _mapObjects[locationshift].Items.Add(itemclone); if (tmp_item == item) { itemclone.Z = (sbyte)((_mapObjects[locationshift].Altitude + _mapObjects[CalculateZone(x + item.X + 1, y + item.Y, _stride)].Altitude + _mapObjects[CalculateZone(x + item.X, y + item.Y + 1, _stride)].Altitude + _mapObjects[CalculateZone(x + item.X + 1, y + item.Y + 1, _stride)].Altitude) / 4 + item.Z); } else { itemclone.Z = (sbyte)((_mapObjects[CalculateZone(x + tmp_item.X, y + tmp_item.Y, _stride)].Altitude + _mapObjects[CalculateZone(x + tmp_item.X + 1, y + tmp_item.Y, _stride)].Altitude + _mapObjects[CalculateZone(x + tmp_item.X, y + tmp_item.Y + 1, _stride)].Altitude + _mapObjects[CalculateZone(x + tmp_item.X + 1, y + tmp_item.Y + 1, _stride)].Altitude) / 4 + tmp_item.Z + z); } } } }