Może coś takiego? Nie wykracza poza możliwości CBOTa, chociaż zapewne jest zbyt obiektowe jak na jego strukturalną naturę. Takie opcje powinny być dostępne tylko dla MissionControllera IMHO, można też wtedy ustalić większe granice wartości (oczywiście powinny być ustawione w taki sposób, aby nie bugować silnika... 2 razy większa szybkość dla jednego bota już może być zabójcza, gdy zwiększy się dodatkowo szybkość symulacji, ale nie wiem).
Code:
// klasa istniejaca w grze, uproszczony przyklad jej interfejsu
class AbstractBot
{
private float health;
private float cooling;
private float speed;
private int category;
private string name;
private static int count = 0;
public void Bot(int category)
{
this.category = category;
this.health = 1.0f;
this.cooling = 1.0f;
this.speed = 1.0f;
this.name = "Bot" + count;
count += 1;
}
// Bardziej szczegolowe konstruktory
// Gettery i settery
// ...
public setSpeed(float newSpeed)
{
this.speed = Clamp(newSpeed, 0.0f, 1.0f);
}
// ...
}
...
object botFactory = radar(BotFactory);
AbstractBot bot = new AbstractBot(WingedGrabber);
bot.setSpeed(2.0f); // chcialoby sie, cheaterze! :P
botFactory.factory(bot);