LevelCreator.cs
global using Sandbox;
global using System;
global using System.Collections.Generic;
global using System.Linq;
public class LevelCreator
{
public static List<CardType> GetCardTypesForLevel(int levelNum)
{
List<CardType> cardTypes = null;
switch ( levelNum )
{
case 0:
cardTypes = new List<CardType>() {
CardType.King,
CardType.Wizard,
CardType.Police,
CardType.Ogre,
CardType.Clown,
CardType.Rock,
CardType.JumpingSpider,
CardType.Candle,
CardType.Skunk,
CardType.CarePackage,
CardType.Cash,
CardType.Steak,
CardType.Cockroach,
//CardType.Key,
//CardType.ATM,
CardType.Donut,
CardType.Cheese,
CardType.Taco,
CardType.Burrito,
CardType.Syringe,
CardType.Crab,
CardType.MagicWand,
CardType.Carrot,
CardType.Caterpillar,
CardType.Tornado,
//CardType.Map,
//CardType.Cellphone,
//CardType.Bank,
//CardType.Coin,
//CardType.Stethoscope,
//CardType.Rose,
//CardType.Bomb,
//CardType.AncientScroll,
//CardType.Mirror,
//CardType.Vampire,
//CardType.Wine,
//CardType.FlyingMoney,
//CardType.Bear,
//CardType.Apple,
//CardType.Ninja,
//CardType.FortuneCookie,
//CardType.Bento,
//CardType.Teacher,
//CardType.Tractor,
//CardType.Compass,
//CardType.Juggler,
//CardType.Flashlight,
//CardType.Genie,
//CardType.AlarmClock,
//CardType.Magnet,
//CardType.StockMarket,
//CardType.Helicopter,
//CardType.UFO,
//CardType.FaxMachine,
//CardType.Dice,
//CardType.Broccoli,
//CardType.Snake,
//CardType.Dolphin,
//CardType.Detective,
//CardType.Potion,
//CardType.Coffee,
//CardType.Dancer,
//CardType.Bell,
//CardType.Umbrella,
//CardType.Telephone,
//CardType.Compass,
//CardType.CrystalBall,
//CardType.Twins,
//CardType.Rocket,
//CardType.Apple,
//CardType.Tree,
//CardType.Pawn,
//CardType.Trumpet,
//CardType.Bodybuilder,
//CardType.Chipmunk,
//CardType.Coin,
//CardType.Antenna,
//CardType.Raccoon,
//CardType.Microwave,
//CardType.Balloon,
};
break;
case 1: // FOREST
cardTypes = new List<CardType>
{
//(Game.Random.Int( 0, 4 ) == 0 ? CardType.Bear : CardType.Tree),
CardType.Tree,
CardType.Apple,
((int)Manager.Instance.Stats[StatType.CardSpawnVal3] <= 4 ? CardType.BirthdayCake : CardType.Apple),
((int)Manager.Instance.Stats[StatType.CardSpawnVal3] <= 4 ? (Game.Random.Int( 0, 1 ) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Magnet : CardType.Pawn) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Chipmunk : CardType.Rocket)) : CardType.Coin),
//CardType.Coin,
(Game.Random.Int(0, 4) == 0 ? CardType.Compass : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Spider : CardType.Snake)),
(Game.Random.Int(0, 4) == 0 ? CardType.Balloon : (Game.Random.Int( 0, 1 ) == 0 ? (Game.Random.Int( 0, 6 ) == 0 ? CardType.Crab : CardType.Ant) : CardType.Rock)),
};
break;
case 2: // FOREST
cardTypes = new List<CardType>
{
CardType.Ogre,
CardType.Tree, //CardType.Apple,
((int)Manager.Instance.Stats[StatType.CardSpawnVal4] <= 3 ? CardType.BirthdayCake : CardType.Apple),
((int)Manager.Instance.Stats[StatType.CardSpawnVal4] <= 3 ? (Game.Random.Int( 0, 1 ) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Flashlight : CardType.Telephone) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Chipmunk : CardType.Juggler)) : CardType.Coin),
//CardType.Coin,
CardType.Chipmunk,
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Compass : CardType.Trumpet),
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Bear : CardType.Raccoon),
(Game.Random.Int( 0, 10 ) == 0 ? (Game.Random.Int( 0, 2 ) == 0 ? CardType.Skunk : CardType.Cockroach) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Spider : CardType.Snake)),
(Game.Random.Int( 0, 4 ) == 0 ? CardType.Balloon : (Game.Random.Int( 0, 1 ) == 0 ? (Game.Random.Int( 0, 6 ) == 0 ? CardType.Crab : CardType.Ant) : CardType.Rock)),
};
break;
case 3: // CONSPIRACY
cardTypes = new List<CardType>()
{
((int)Manager.Instance.Stats[StatType.CardSpawnVal5] < 5 ? CardType.Coffee: CardType.Apple),
//CardType.Donut,
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Broccoli : CardType.Donut),
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Coin : CardType.Cash),
CardType.Dice,
CardType.Flashlight,
((int)Manager.Instance.Stats[StatType.CardSpawnVal2] < 5 ? CardType.Tractor: CardType.Tornado),
(Game.Random.Int( 0, 2 ) == 0 ? CardType.Mountain : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Antenna : CardType.Twins)),
(Game.Random.Int( 0, 2 ) == 0 ? (Game.Random.Int( 0, 5 ) == 0 ? CardType.Cockroach : CardType.Rock) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Rocket : CardType.Ninja)),
((int)Manager.Instance.Stats[StatType.CardSpawnVal2] % 2 == 0 ? CardType.Bomb : CardType.UFO),
};
break;
case 4: // CONSPIRACY
cardTypes = new List<CardType>()
{
CardType.Clown,
((int)Manager.Instance.Stats[StatType.CardSpawnVal5] >= 5 ? CardType.Coffee: CardType.Apple),
//CardType.Coffee,
//CardType.BirthdayCake,
//CardType.Donut,
CardType.RedEnvelope,
((int)Manager.Instance.Stats[StatType.CardSpawnVal2] % 2 == 1 ? CardType.Bomb : CardType.UFO),
CardType.Detective,
CardType.Flashlight,
((int)Manager.Instance.Stats[StatType.CardSpawnVal2] >= 5 ? CardType.Tractor: CardType.Tornado),
CardType.Broccoli,
(Game.Random.Int( 0, 2 ) == 0 ? CardType.Mountain : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Antenna : CardType.Twins)),
//(Game.Random.Int( 0, 2 ) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Juggler : CardType.Rock) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Rocket : CardType.Ninja)),
};
break;
case 5: // CORPORATE
cardTypes = new List<CardType>()
{
CardType.FlyingMoney,
//CardType.Taco,
//CardType.Bento,
((int)Manager.Instance.Stats[StatType.CardSpawnVal8] % 2 == 0 ? CardType.Bento : CardType.Taco),
CardType.FortuneCookie,
((int)Manager.Instance.Stats[StatType.CardSpawnVal1] % 2 == 0 ? CardType.Cheese : CardType.Umbrella),
(Game.Random.Int( 0, 4 ) == 0 ? CardType.Bodybuilder : CardType.Magnet ),
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Helicopter : CardType.Juggler),
((int)Manager.Instance.Stats[StatType.CardSpawnVal0] % 2 == 0 ? CardType.Cellphone : CardType.FaxMachine),
((int)Manager.Instance.Stats[StatType.CardSpawnVal5] % 2 == 0 ? CardType.Microwave : CardType.CarePackage),
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Balloon : CardType.Rock),
//((int)Manager.Instance.Stats[StatType.CardSpawnVal6] > 5 ? CardType.ATM : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Cash : CardType.DiamondRing) ),
//(Game.Random.Int( 0, 1 ) == 0 ? CardType.Umbrella : CardType.Bodybuilder),
};
break;
case 6: // CORPORATE
cardTypes = new List<CardType>()
{
CardType.Police, //CardType.Key,
//CardType.Taco,
CardType.Broccoli,
((int)Manager.Instance.Stats[StatType.CardSpawnVal8] % 2 == 1 ? CardType.Bento : CardType.Taco),
CardType.FortuneCookie,
//((int)Manager.Instance.Stats[StatType.CardSpawnVal6] <= 5 ? CardType.ATM : (Game.Random.Int( 0, 1 ) == 0 ? CardType.FlyingMoney : CardType.DiamondRing) ),
((int)Manager.Instance.Stats[StatType.CardSpawnVal1] % 2 == 1 ? CardType.Cheese : CardType.Umbrella),
//CardType.Magnet,
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Helicopter : CardType.Juggler),
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Rabbit : CardType.Map) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Compass : CardType.Balloon)),
//CardType.Coin,
//CardType.Bank,
((int)Manager.Instance.Stats[StatType.CardSpawnVal0] % 2 == 1 ? CardType.Cellphone : CardType.FaxMachine),
((int)Manager.Instance.Stats[StatType.CardSpawnVal5] % 2 == 1 ? CardType.Microwave : CardType.CarePackage),
//(Game.Random.Int( 0, 1 ) == 0 ? CardType.Magnet : CardType.Bodybuilder),
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Coin : CardType.Cash) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.FlyingMoney : CardType.DiamondRing)),
//CardType.Bodybuilder,
//(Game.Random.Int( 0, 1 ) == 0 ? CardType.Umbrella : CardType.Bodybuilder),
// todo: needs money
};
break;
case 7: // GOTHIC
cardTypes = new List<CardType>()
{
//CardType.Dancer,
//CardType.Maracas,
((int)Manager.Instance.Stats[StatType.CardSpawnVal8] < 5 ? CardType.CrystalBall : CardType.Bell),
//CardType.Bell,
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Compass : CardType.Flashlight),
CardType.Rock,
CardType.Pickaxe,
//CardType.Wine,
CardType.Burrito,
CardType.Rabbit,
//CardType.Telephone,
((int)Manager.Instance.Stats[StatType.CardSpawnVal7] >= 5 ? CardType.Telephone : CardType.Maracas),
CardType.BirthdayCake,
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Coin : CardType.Cash) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.FlyingMoney : CardType.DiamondRing)),
(Game.Random.Int( 0, 2 ) == 0 ? CardType.Tractor : CardType.Stethoscope),
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Balloon : CardType.Pawn) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Magnet : CardType.Bodybuilder)),
CardType.Map,
//CardType.Vampire,
};
break;
case 8: // GOTHIC
cardTypes = new List<CardType>()
{
CardType.King,
//CardType.Maracas,
CardType.Wine,
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Broccoli : CardType.Donut) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Bento : CardType.Coffee)),
CardType.Coin,
//CardType.Bell,
((int)Manager.Instance.Stats[StatType.CardSpawnVal8] >= 5 ? CardType.CrystalBall : CardType.Bell),
CardType.Dancer,
//(Game.Random.Int( 0, 1 ) == 0 ? CardType.Trumpet : CardType.Dolphin),
//CardType.Vampire,
//CardType.Telephone,
((int)Manager.Instance.Stats[StatType.CardSpawnVal7] >= 5 ? CardType.Telephone : CardType.Maracas),
//(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Rabbit : CardType.Umbrella) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Ninja : CardType.Caterpillar)),
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Compass : CardType.Flashlight),
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Cash : CardType.Bank) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.DiamondRing : CardType.FlyingMoney)),
(Game.Random.Int(0, 2) == 0 ? CardType.Balloon : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Rock : CardType.Pawn)),
CardType.Syringe,
(Game.Random.Int( 0, 2 ) == 0 ? CardType.Bomb : CardType.Map),
};
break;
case 9: // FANTASY
cardTypes = new List<CardType>()
{
CardType.Candle,
CardType.Carrot,
((int)Manager.Instance.Stats[StatType.CardSpawnVal6] % 2 == 0 ? CardType.Potion : CardType.Dolphin),
CardType.Pawn,
((int)Manager.Instance.Stats[StatType.CardSpawnVal9] % 2 == 0 ? CardType.AncientScroll : CardType.Vampire),
CardType.Rock,
CardType.Pickaxe,
CardType.Genie,
CardType.MagicWand,
CardType.Coin,
CardType.Steak,
(Game.Random.Int( 0, 3 ) == 0 ? CardType.JumpingSpider : (Game.Random.Int( 0, 3 ) == 0 ? CardType.Ant : CardType.Crab)),
((int)Manager.Instance.Stats[StatType.CardSpawnVal7] % 2 == 1 ? CardType.Caterpillar : (Game.Random.Int( 0, 2 ) == 0 ? CardType.Skunk : CardType.Teacher) ),
(Game.Random.Int( 0, 2 ) == 0 ? CardType.Compass : (Game.Random.Int( 0, 3 ) == 0 ? CardType.Raccoon : CardType.Snake)),
//CardType.CrystalBall,
//((int)Manager.Instance.Stats[StatType.CardSpawnVal9] < 5 ? CardType.Genie : CardType.MagicWand),
//CardType.JumpingSpider,
};
break;
case 10: // FANTASY
cardTypes = new List<CardType>()
{
CardType.Wizard,
CardType.Candle,
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Cheese : CardType.Wine) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Broccoli : CardType.Coffee)),
((int)Manager.Instance.Stats[StatType.CardSpawnVal9] % 2 == 1 ? CardType.AncientScroll : CardType.Vampire),
(Game.Random.Int( 0, 2 ) == 0 ? CardType.Balloon : CardType.Pawn),
//CardType.Steak,
(Game.Random.Int( 0, 1 ) == 0 ? CardType.Compass : CardType.Flashlight),
CardType.Carrot,
((int)Manager.Instance.Stats[StatType.CardSpawnVal7] % 2 == 1 ? CardType.Caterpillar : (Game.Random.Int( 0, 2 ) == 0 ? CardType.Skunk : CardType.Rabbit) ),
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Ant : CardType.Rock) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Magnet : CardType.Bodybuilder)),
CardType.MagicWand,
((int)Manager.Instance.Stats[StatType.CardSpawnVal6] % 2 == 1 ? CardType.Potion : CardType.Dolphin),
CardType.Genie,
CardType.Rose,
CardType.Mirror,
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.Juggler : CardType.Teacher) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Tractor : CardType.UFO)),
(Game.Random.Int(0, 1) == 0 ? (Game.Random.Int( 0, 1 ) == 0 ? CardType.FortuneCookie : CardType.Bomb) : (Game.Random.Int( 0, 1 ) == 0 ? CardType.Map : CardType.Twins)),
};
break;
default:
Log.Error( $"Level {levelNum} not implemented!" );
break;
}
return cardTypes;
}
}