public TrainingReward(int level, ItemInfo item, RobotTemplate robotTemplate, int raceId) { Level = level; Item = item; RobotTemplate = robotTemplate; RaceId = raceId; }
public Robot(RobotTemplate template, Game game) { _template = template; _game = game; MemorySize = MemoryUpgrades .Select(upgradesCount => template.InitialMemorySize + upgradesCount * template.MemoryUpgradeSize) .ToReactiveProperty(); Programs = new ReactiveCollection <Program>(); ProgramBytes = Programs.ObserveCountChanged(true) .SelectMany(_ => Programs .Select(x => x.MemorySize) .CombineLatest() .Select(y => y.Sum())) .ToReactiveProperty(initialValue: 0); TotalUsedBytes = ProgramBytes.CombineLatest(LeakedBytes, ProducedBytes, (programs, leaked, produced) => programs + leaked + produced) .ToReactiveProperty(); FreeSpace = TotalUsedBytes.CombineLatest(MemorySize, (used, memory) => memory - used) .ToReactiveProperty(); Status = Programs.ObserveCountChanged(true).CombineLatest(FreeSpace, (programCount, freeSpace) => freeSpace <= 0 ? RobotStatus.OutOfMemory : programCount == 0 ? RobotStatus.BootError : RobotStatus.Ok) .ToReactiveProperty(); HasSyncProgram = Programs.ObserveCountChanged(true) .Select(_ => Programs.Any(x => x.Template.Type == ProgramType.Sync)) .ToReactiveProperty(); //TODO: stop sync on game over Observable.CombineLatest(HasSyncProgram, Status.Select(x => x == RobotStatus.OutOfMemory), (hasSync, outOfMemory) => hasSync && !outOfMemory) .DistinctUntilChanged() .Select(shouldSync => shouldSync ? Observable.Interval(TimeSpan.FromSeconds(10)) : Observable.Empty <long>()) .Switch() .Subscribe(_ => { _game.GameProgress.DataCollected.Value += ProducedBytes.Value; ProducedBytes.Value = 0; }); }
public override void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var templateName = request.Data.GetOrDefault <string>(k.name); var description = request.Data.GetOrDefault <Dictionary <string, object> >(k.description); if (string.IsNullOrEmpty(templateName)) { templateName = "template_" + FastRandom.NextString(7); } var template = RobotTemplate.CreateFromDictionary(templateName, description).ThrowIfNull(ErrorCodes.TemplateError); template.Validate().ThrowIfFalse(ErrorCodes.TemplateError); _robotTemplateRepository.Insert(template); SendRobotTemplateListWhenTransactionCompleted(request); scope.Complete(); } }
public CreateRobotTemplate() { InitializeComponent(); Entities = new EntityDefaults(this.Connstr); RTemplate = new RobotTemplatesTable(this.Connstr); BotTemplate = new RobotTemplate(); HeadSlotList = new CompositeCollection(); ChassisSlotList = new CompositeCollection(); LegSlotList = new CompositeCollection(); BotsList = Entities.GetEntitiesByCategory(Types.CategoryFlags.cf_robots); HeadsList = Entities.GetEntitiesByCategory(Types.CategoryFlags.cf_robot_head); ChassisList = Entities.GetEntitiesByCategory(Types.CategoryFlags.cf_robot_chassis); LegsList = Entities.GetEntitiesByCategory(Types.CategoryFlags.cf_robot_leg); InventoryList = Entities.GetEntitiesByCategory(Types.CategoryFlags.cf_robot_inventory); // oh dear god. Shitshow ahead! Mods = Entities.GetAllEntities(); this.DataContext = this; }
public override void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var id = request.Data.GetOrDefault <int>(k.ID); var template = _robotTemplateRepository.Get(id); var templateName = request.Data.GetOrDefault <string>(k.name); if (!string.IsNullOrEmpty(templateName)) { template.Name = templateName; } var description = request.Data.GetOrDefault <Dictionary <string, object> >(k.description); var robotTemplate = RobotTemplate.CreateFromDictionary(templateName, description); if (robotTemplate == null) { throw new PerpetuumException(ErrorCodes.TemplateError); } template.EntityDefault = robotTemplate.EntityDefault; template.Head = robotTemplate.Head; template.Chassis = robotTemplate.Chassis; template.Leg = robotTemplate.Leg; template.Inventory = robotTemplate.Inventory; if (!template.Validate()) { throw new PerpetuumException(ErrorCodes.TemplateError); } _robotTemplateRepository.Update(template); SendRobotTemplateListWhenTransactionCompleted(request); scope.Complete(); } }
public BuildableRobot(RobotTemplate robot) { this.robot = robot; }
private void ExectureRobot(RobotTemplate robot) { robot.Go(); }