private CryptFeature(Crypt crypt, CryptSection cryptSection, Point position) { Crypt = crypt; CryptSection = cryptSection; Position = position; Device = null; }
private void GenerateSpires(CryptSection section) { var centerPoint = section.SectionPositionToCryptPosition(CryptFeaturesMidPoint, CryptFeaturesMidPoint); //if (section.Position.X == 0 && section.Position.Y == 0) //{ // var cryptCoinSpire = new CryptFeature.CryptCoinSpire(this, section, centerPoint); // _features[centerPoint.GetKey()] = cryptCoinSpire; //} var softFeatureQueue = new Queue <CryptFeature>(section.GetCryptFeatures() .Where(f => !(f is CryptFeature.HardRock) && !(f is CryptFeature.Spire)) .Where(f => { var cryptPosition = section.CryptPositionToSectionPosition(f.Position); var rowPos = (Abs(cryptPosition.Y - CryptFeaturesMidPoint) * 100) / CryptFeaturesMidPoint; var colPos = (Abs(cryptPosition.X - CryptFeaturesMidPoint) * 100) / CryptFeaturesMidPoint; return(rowPos < 50 && rowPos > 10 && colPos < 50 && colPos > 10); }) .OrderBy(_ => _random.Next(100)) .ToArray()); var featureToReplace = softFeatureQueue.Dequeue(); var soulSpire = new CryptFeature.SoulSpire(this, section, featureToReplace.Position); _features[featureToReplace.Position.GetKey()] = soulSpire; _spawningSpires.Add(soulSpire); featureToReplace = softFeatureQueue.Dequeue(); var hellFireSpire = new CryptFeature.HellFireSpire(this, section, featureToReplace.Position); _features[featureToReplace.Position.GetKey()] = hellFireSpire; _spawningSpires.Add(hellFireSpire); }
private Action <int, int> GenerateCryptFeaturesForSection(CryptSection section) => (row, col) => { var featurePosition = section.SectionPositionToCryptPosition(row, col); var featureRoll = _random.Next(100); var chanceHardRock = (Min(Abs(row - CryptFeaturesMidPoint), Abs(col - CryptFeaturesMidPoint)) * 100) / CryptFeaturesMidPoint; chanceHardRock = chanceHardRock < 50 ? 0 : chanceHardRock; var chanceSoftRock = (Min(Abs(row - CryptFeaturesMidPoint), Abs(col - CryptFeaturesMidPoint)) * 100) / CryptFeaturesMidPoint; chanceSoftRock = chanceSoftRock < 25 ? 0 : chanceSoftRock; var feature = featureRoll < chanceHardRock ? new CryptFeature.HardRock(this, section, featurePosition) : featureRoll < chanceSoftRock ? new CryptFeature.SoftRock(this, section, featurePosition) : new CryptFeature.Floor(this, section, featurePosition) as CryptFeature; _features[feature.Position.GetKey()] = feature; };
public CryptCoinSpire(Crypt crypt, CryptSection cryptSection, Point cryptPosition) : base(crypt, cryptSection, cryptPosition) { }
public HellFireSpire(Crypt crypt, CryptSection cryptSection, Point cryptPosition) : base(crypt, cryptSection, cryptPosition) { }
protected SpawningSpire(Crypt crypt, CryptSection cryptSection, Point position) : base(crypt, cryptSection, position) { }
public HardRock(Crypt crypt, CryptSection cryptSection, Point cryptPosition) : base(crypt, cryptSection, cryptPosition) { }
public Floor(Crypt crypt, CryptSection cryptSection, Point cryptPosition) : base(crypt, cryptSection, cryptPosition) { }
public Void(Crypt crypt, CryptSection cryptSection, Point cryptPosition) : base(crypt, cryptSection, cryptPosition) { }