public void AddFolder(string fullPath) { var path = System.IO.Path.Combine(Environment.CurrentDirectory, fullPath); var item = new GeneratedItem(path, x => Directory.CreateDirectory(x), Directory.Exists); Items.Add(item); }
public void AddFile(string fullPath, IGenerator generator) { var path = System.IO.Path.Combine(Environment.CurrentDirectory, fullPath); var item = new GeneratedItem(path, x => File.WriteAllText(path, generator.GetText()), File.Exists); Items.Add(item); }
public GeneratedItem GetGeneratedItem(Item item, Affix prefix, Affix suffix) { if (item == null) { return(null); } GeneratedItem generatedItem = new GeneratedItem() { ItemId = item.Id, PrimaryMinValue = item.PrimaryMinValue, PrimaryMaxValue = item.PrimaryMaxValue, Durability = item.Durability }; Random dice = new Random(); if (prefix != null) { generatedItem.PrefixId = prefix.Id; generatedItem.Strength += dice.Next(prefix.MinStrength, prefix.MinStrength + 1); generatedItem.Dexterity += dice.Next(prefix.MinDexterity, prefix.MinDexterity + 1); generatedItem.Intelligence += dice.Next(prefix.MinIntelligence, prefix.MinIntelligence + 1); generatedItem.Vitality += dice.Next(prefix.MinVitality, prefix.MinVitality + 1); } if (suffix != null) { generatedItem.SuffixId = suffix.Id; generatedItem.Strength += dice.Next(suffix.MinStrength, suffix.MinStrength + 1); generatedItem.Dexterity += dice.Next(suffix.MinDexterity, suffix.MinDexterity + 1); generatedItem.Intelligence += dice.Next(suffix.MinIntelligence, suffix.MinIntelligence + 1); generatedItem.Vitality += dice.Next(suffix.MinVitality, suffix.MinVitality + 1); } return(generatedItem); }
private TypeSyntax BuildClassExpression(JSchema schema, GenerationContext context) { var properties = new List <SyntaxNode>(); var usings = new List <string>(); foreach (var property in schema.Properties) { var propertyName = ToCamelCase(property.Key, property.Value); properties.Add(BuildPropertyExpression(propertyName, property.Value, context)); if (property.Value.Type == JSchemaType.Array) { usings.Add(typeof(IEnumerable <object>).Namespace); } } var modifiers = DeclarationModifiers.None; if (context.IsSealed) { modifiers |= DeclarationModifiers.Sealed; } var className = ToCamelCase(schema.Title, schema); var classDeclaration = _generator.ClassDeclaration(className, null, Accessibility.Public, modifiers, null, null, properties); var result = new GeneratedItem { SyntaxNode = classDeclaration, Usings = usings, Name = className }; context.GeneratedClasses.Add(result); return(SyntaxFactory.IdentifierName(SyntaxFactory.Identifier(className))); }
public GeneratedItemIndexPair(GeneratedItem item, int index) { Item = item; Index = index; }
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.HttpContext.Items.Contains("Character")) { this.OnActionExecuting(filterContext); return; } Character character = filterContext.HttpContext.Items["Character"] as Character; var query = from el in db.EventLogs.AsNoTracking() where el.CharacterId == character.Id && el.IsCompleted == false orderby el.Created_at descending select el; var eventLog = query.FirstOrDefault(); if (eventLog == null) { return; } DateTime timeNow = DateTime.Now; double differentSeconds = (timeNow - eventLog.Created_at).TotalSeconds; if (differentSeconds < 10) { filterContext.HttpContext.Items.Add("NotCompletedEventLog", eventLog); this.OnActionExecuting(filterContext); return; } var query2 = from e in db.Events.AsNoTracking() where e.Id == eventLog.EventId select e; var oneEvent = query2.FirstOrDefault(); if (oneEvent == null) { this.OnActionExecuting(filterContext); return; } EventService es = new EventService(); CharacterService cs = new CharacterService(); ItemService itemService = new ItemService(); Random dice = new Random(); string messageContent = es.GetMainDescription(oneEvent); bool characterWinner = false; if (oneEvent.Type == EventType.Monster) { var query3 = from m in db.Monsters.AsNoTracking() where m.Id == oneEvent.MonsterId select m; var monster = query3.FirstOrDefault(); if (monster == null) { this.OnActionExecuting(filterContext); return; } var query4 = from gi in db.GeneratedItems from i in db.Items where gi.CharacterId == character.Id && gi.ItemId == i.Id && gi.Status == ItemStatus.Equipped select new ItemViewModel { GeneratedItem = gi, Item = i }; List <ItemViewModel> items = query4.ToList(); CharacterViewModel characterViewModel = cs.GetCharacterViewModel(character, items.FindAll(i => i.GeneratedItem.Durability > 0)); messageContent += es.GetBattleReport(characterViewModel, monster, ref characterWinner); if (characterWinner) { var query5 = from i in db.GeneratedItems where i.CharacterId == character.Id && i.Status == ItemStatus.Bagpack select i; if (query5.Count() == 0) { var item = itemService.GetRandomItem(monster.Level); if (item != null) { int random = dice.Next(0, 100); Affix prefix = null; if (random >= 50) { prefix = itemService.GetRandomAffix(AffixType.Prefix, item.Type, item.QualityLevel); } random = dice.Next(0, 100); Affix suffix = null; if (random >= 75) { suffix = itemService.GetRandomAffix(AffixType.Suffix, item.Type, item.QualityLevel); } GeneratedItem generatedItem = itemService.GetGeneratedItem(item, prefix, suffix); if (generatedItem == null) { return; } generatedItem.Status = ItemStatus.Bagpack; generatedItem.CharacterId = character.Id; db.GeneratedItems.Add(generatedItem); } } foreach (var item in items) { item.GeneratedItem.Durability -= 5; item.GeneratedItem.Durability = item.GeneratedItem.Durability < 0 ? 0 : item.GeneratedItem.Durability; db.Entry(item.GeneratedItem).State = EntityState.Modified; } } else { foreach (var item in items) { item.GeneratedItem.Durability -= item.Item.Durability / 3; item.GeneratedItem.Durability = item.GeneratedItem.Durability < 0 ? 0 : item.GeneratedItem.Durability; db.Entry(item.GeneratedItem).State = EntityState.Modified; } } } else { var query3 = from gi in db.GeneratedItems from i in db.Items where gi.CharacterId == character.Id && gi.ItemId == i.Id && gi.Status == ItemStatus.Equipped select new ItemViewModel { GeneratedItem = gi, Item = i }; List <ItemViewModel> items = query3.ToList(); CharacterViewModel characterViewModel = cs.GetCharacterViewModel(character, items); characterWinner = es.CheckCharacterMeetsEventRequiment(oneEvent, characterViewModel); if (characterWinner) { character.Gold += oneEvent.Reward; } } messageContent += es.GetResultDescription(oneEvent, characterWinner); Message message = new Message() { Type = MessageType.System, Title = "Raport ze zdarzenia", ContentOfMessage = messageContent, Date = DateTime.Now, ToUserId = character.Id, FromUser = "******" }; eventLog.IsCompleted = true; try { if (characterWinner && oneEvent.Type == EventType.Random) { db.Entry(character).State = EntityState.Modified; } db.Entry(eventLog).State = EntityState.Modified; db.Messages.Add(message); db.SaveChanges(); } catch (Exception) { // ?? } if (characterWinner && oneEvent.Type == EventType.Random) { filterContext.HttpContext.Items["Character"] = character; } this.OnActionExecuting(filterContext); }