Skip to content

Commit

Permalink
Fix level settings not auto initializing
Browse files Browse the repository at this point in the history
  • Loading branch information
brgmnn committed Nov 11, 2023
1 parent f7f75ab commit 468a9a2
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 65 deletions.
5 changes: 4 additions & 1 deletion AutogenRundown/src/DataBlocks/Level.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public class Level
public LayoutPlanner Planner { get; set; } = new LayoutPlanner();

[JsonIgnore]
public LevelSettings Settings { get; set; } = new LevelSettings();
public LevelSettings Settings { get; set; }

Check warning on line 80 in AutogenRundown/src/DataBlocks/Level.cs

View workflow job for this annotation

GitHub Actions / Build

Non-nullable property 'Settings' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
#endregion

#region Build directors
Expand Down Expand Up @@ -454,6 +454,9 @@ static public Level Build(Level level)

level.GenerateDepth();

if (level.Settings == null)
level.Settings = new LevelSettings(level.Tier);

// Randomly select which bulkheads to use
var selectedBulkheads = Generator.Select(new List<(double, Bulkhead)>
{
Expand Down
8 changes: 3 additions & 5 deletions AutogenRundown/src/DataBlocks/LevelLayout.cs
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ public void RollEnemies(BuildDirector director)
var bossChance = director.Tier switch
{
"C" => 0.2,
"D" => 0.3,
"D" => 0.2,
"E" => 0.3,
_ => 0.0
};
Expand Down Expand Up @@ -424,15 +424,13 @@ public void RollEnemies(BuildDirector director)
#endregion


var hasBoss = false;
if (Generator.Flip(bossChance) && settings.EnemyBossPack.Count() > 0)
{
zone.EnemySpawningInZone.Add(Generator.Draw(settings.EnemyBossPack));

Check warning on line 429 in AutogenRundown/src/DataBlocks/LevelLayout.cs

View workflow job for this annotation

GitHub Actions / Build

Possible null reference argument for parameter 'item' in 'void List<EnemySpawningData>.Add(EnemySpawningData item)'.
hasBoss = true;
Plugin.Logger.LogDebug($"{Name} -- Zone {zone.LocalIndex} rolled a boss!");
}


Plugin.Logger.LogDebug($"{Name} -- Zone {zone.LocalIndex} has {points}pts for enemies {(hasBoss ? "(also rolled a boss!)" : "")}");
Plugin.Logger.LogDebug($"{Name} -- Zone {zone.LocalIndex} has {points}pts for enemies");

// By default we will just let the spawning data allocate out groups.
zone.EnemySpawningInZone.Add(
Expand Down
128 changes: 69 additions & 59 deletions AutogenRundown/src/DataBlocks/LevelSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,76 +79,86 @@ public void Generate()
switch (Tier)
{
case "A":
Modifiers.Add(LevelModifiers.NoChargers);
Modifiers.Add(LevelModifiers.NoShadows);
break;
{
Modifiers.Add(LevelModifiers.NoChargers);
Modifiers.Add(LevelModifiers.NoShadows);
break;
}

case "B":
Modifiers.Add(LevelModifiers.NoChargers);
Modifiers.Add(LevelModifiers.NoShadows);
break;
{
Modifiers.Add(LevelModifiers.NoChargers);
Modifiers.Add(LevelModifiers.NoShadows);
break;
}

case "C":
Modifiers.Add(LevelModifiers.NoShadows);
Modifiers.Add(
Generator.Select(new List<WeightedModifier>
{
new WeightedModifier { Modifier = LevelModifiers.NoChargers, Weight = 0.4 },
new WeightedModifier { Modifier = LevelModifiers.Chargers, Weight = 0.5 },
new WeightedModifier { Modifier = LevelModifiers.ManyChargers, Weight = 0.1 },
}).Modifier);

EnemyBossPack = Generator.Select(
new List<(double, List<EnemySpawningData>)>
{
(0.8, new List<EnemySpawningData>()),
(0.2, new List<EnemySpawningData>
{
Modifiers.Add(LevelModifiers.NoShadows);
Modifiers.Add(
Generator.Select(new List<WeightedModifier>
{
EnemySpawningData.Mother with { Points = 10 }
})
});
break;
new WeightedModifier { Modifier = LevelModifiers.NoChargers, Weight = 0.4 },
new WeightedModifier { Modifier = LevelModifiers.Chargers, Weight = 0.5 },
new WeightedModifier { Modifier = LevelModifiers.ManyChargers, Weight = 0.1 },
}).Modifier);

case "D":
EnemyBossPack = Generator.Select(
new List<(double, List<EnemySpawningData>)>
{
(0.6, new List<EnemySpawningData>()),
(0.2, new List<EnemySpawningData>
EnemyBossPack = Generator.Select(
new List<(double, List<EnemySpawningData>)>
{
EnemySpawningData.Mother with { Points = 10 }
}),
(0.2, new List<EnemySpawningData>
//(0.8, new List<EnemySpawningData>()),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 10 }
})
});
break;
}

case "D":
{
EnemyBossPack = Generator.Select(
new List<(double, List<EnemySpawningData>)>
{
EnemySpawningData.Tank with { Points = 10 }
})
});
break;
//(0.6, new List<EnemySpawningData>()),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 10 }
}),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Tank with { Points = 10 }
})
});
break;
}

case "E":
EnemyBossPack = Generator.Select(
new List<(double, List<EnemySpawningData>)>
{
(0.4, new List<EnemySpawningData>()),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 10 }
}),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Tank with { Points = 10 }
}),
(0.1, new List<EnemySpawningData>
{
EnemyBossPack = Generator.Select(
new List<(double, List<EnemySpawningData>)>
{
EnemySpawningData.Mother with { Points = 20 }
}),
(0.1, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 20 },
EnemySpawningData.Tank with { Points = 10 }
})
});
break;
//(0.4, new List<EnemySpawningData>()),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 10 }
}),
(0.2, new List<EnemySpawningData>
{
EnemySpawningData.Tank with { Points = 10 }
}),
(0.1, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 20 }
}),
(0.1, new List<EnemySpawningData>
{
EnemySpawningData.Mother with { Points = 20 },
EnemySpawningData.Tank with { Points = 10 }
})
});
break;
}
}
}
}
Expand Down

0 comments on commit 468a9a2

Please sign in to comment.