public FamilyDTO LoadByCharacterId(long characterId) { try { using (OpenNosContext context = DataAccessHelper.CreateContext()) { FamilyCharacter familyCharacter = context.FamilyCharacter.AsNoTracking().FirstOrDefault(fc => fc.Character.CharacterId.Equals(characterId)); if (familyCharacter != null) { Family family = context.Family.AsNoTracking().FirstOrDefault(a => a.FamilyId.Equals(familyCharacter.FamilyId)); if (family != null) { FamilyDTO dto = new FamilyDTO(); if (Mapper.Mappers.FamilyMapper.ToFamilyDTO(family, dto)) { return(dto); } return(null); } } } } catch (Exception e) { Logger.Error(e); } return(null); }
public SaveResult InsertOrUpdate(ref FamilyCharacterDTO character) { try { using (OpenNosContext context = DataAccessHelper.CreateContext()) { long familyCharacterId = character.FamilyCharacterId; FamilyCharacter entity = context.FamilyCharacter.FirstOrDefault(c => c.FamilyCharacterId.Equals(familyCharacterId)); if (entity == null) { character = Insert(character, context); return(SaveResult.Inserted); } character = Update(entity, character, context); return(SaveResult.Updated); } } catch (Exception e) { Logger.Error(string.Format(Language.Instance.GetMessageFromKey("INSERT_ERROR"), character, e.Message), e); return(SaveResult.Error); } }
public void changeLoyalty(int amountChanged, string characterToChange) { FamilyCharacter currentCharacter = null; switch (characterToChange.ToLower()) { case "mother": currentCharacter = mother; break; case "father": currentCharacter = father; break; case "sister": currentCharacter = sister; break; case "brother": currentCharacter = brother; break; } if (currentCharacter != null) { currentCharacter.loyalty += amountChanged; } else { mother.loyalty += amountChanged; father.loyalty += amountChanged; sister.loyalty += amountChanged; brother.loyalty += amountChanged; } }
public DeleteResult Delete(long characterId) { try { using (OpenNosContext context = DataAccessHelper.CreateContext()) { FamilyCharacter familyCharacter = context.FamilyCharacter.FirstOrDefault(c => c.CharacterId == characterId); if (familyCharacter == null) { return(DeleteResult.NotFound); } context.FamilyCharacter.Remove(familyCharacter); context.SaveChanges(); return(DeleteResult.Deleted); } } catch (Exception e) { Logger.Error(string.Format(Language.Instance.GetMessageFromKey("DELETE_FAMILYCHARACTER_ERROR"), e.Message), e); return(DeleteResult.Error); } }
private void ExecuteHandler(ClientSession session) { if (session.Character.Family == null || !(session.Character.FamilyCharacter.Authority == FamilyAuthority.Head || session.Character.FamilyCharacter.Authority == FamilyAuthority.Assistant || (session.Character.FamilyCharacter.Authority == FamilyAuthority.Member && session.Character.Family.MemberAuthorityType == FamilyAuthorityType.All) || (session.Character.FamilyCharacter.Authority == FamilyAuthority.Manager && session.Character.Family.ManagerAuthorityType == FamilyAuthorityType.All))) { session.SendPacket( UserInterfaceHelper.GenerateInfo(Language.Instance.GetMessageFromKey("NO_FAMILY_RIGHT"))); return; } ItemInstance previousInventory = session.Character.Family.Warehouse.LoadBySlotAndType(Slot, InventoryType.FamilyWareHouse); if (Amount <= 0 || previousInventory == null || Amount > previousInventory.Amount) { return; } ItemInstance item2 = previousInventory.DeepCopy(); item2.Id = Guid.NewGuid(); item2.Amount = Amount; item2.CharacterId = session.Character.CharacterId; previousInventory.Amount -= Amount; if (previousInventory.Amount <= 0) { previousInventory = null; } session.Character.Inventory.AddToInventory(item2, item2.Item.Type); session.SendPacket(UserInterfaceHelper.Instance.GenerateFStashRemove(Slot)); if (previousInventory != null) { DAOFactory.ItemInstanceDAO.InsertOrUpdate(previousInventory); } else { FamilyCharacter fhead = session.Character.Family.FamilyCharacters.Find(s => s.Authority == FamilyAuthority.Head); if (fhead == null) { return; } DAOFactory.ItemInstanceDAO.DeleteFromSlotAndType(fhead.CharacterId, Slot, InventoryType.FamilyWareHouse); } session.Character.Family.InsertFamilyLog(FamilyLogType.WareHouseRemoved, session.Character.Name, message: $"{item2.ItemVNum}|{Amount}"); }
private static FamilyCharacterDTO Update(FamilyCharacter entity, FamilyCharacterDTO character, OpenNosContext context) { if (entity != null) { Mapper.Mappers.FamilyCharacterMapper.ToFamilyCharacter(character, entity); context.SaveChanges(); } if (Mapper.Mappers.FamilyCharacterMapper.ToFamilyCharacterDTO(entity, character)) { return(character); } return(null); }
private static FamilyCharacterDTO Insert(FamilyCharacterDTO character, OpenNosContext context) { FamilyCharacter entity = new FamilyCharacter(); Mapper.Mappers.FamilyCharacterMapper.ToFamilyCharacter(character, entity); context.FamilyCharacter.Add(entity); context.SaveChanges(); if (Mapper.Mappers.FamilyCharacterMapper.ToFamilyCharacterDTO(entity, character)) { return(character); } return(null); }
/// <summary> /// f_withdraw packet /// </summary> /// <param name="packet"></param> public void FamilyWithdraw(FWithdrawPacket packet) { if (Session.Character.Family == null || ! (Session.Character.FamilyCharacter.Authority == FamilyAuthority.Head || Session.Character.FamilyCharacter.Authority == FamilyAuthority.Assistant || Session.Character.FamilyCharacter.Authority == FamilyAuthority.Member && Session.Character.Family.MemberAuthorityType == FamilyAuthorityType.ALL || Session.Character.FamilyCharacter.Authority == FamilyAuthority.Manager && Session.Character.Family.ManagerAuthorityType == FamilyAuthorityType.ALL ) ) { Session.SendPacket(UserInterfaceHelper.Instance.GenerateInfo(Language.Instance.GetMessageFromKey("NO_FAMILY_RIGHT"))); return; } ItemInstance previousInventory = Session.Character.Family.Warehouse.LoadBySlotAndType(packet.Slot, InventoryType.FamilyWareHouse); if (packet.Amount <= 0 || previousInventory == null || packet.Amount > previousInventory.Amount) { return; } ItemInstance item2 = previousInventory.DeepCopy(); item2.Id = Guid.NewGuid(); item2.Amount = packet.Amount; item2.CharacterId = Session.Character.CharacterId; previousInventory.Amount -= packet.Amount; if (previousInventory.Amount <= 0) { previousInventory = null; } List <ItemInstance> newInv = Session.Character.Inventory.AddToInventory(item2, item2.Item.Type); Session.SendPacket(UserInterfaceHelper.Instance.GenerateFStashRemove(packet.Slot)); if (previousInventory != null) { DAOFactory.IteminstanceDAO.InsertOrUpdate(previousInventory); } else { FamilyCharacter fhead = Session.Character.Family.FamilyCharacters.FirstOrDefault(s => s.Authority == FamilyAuthority.Head); if (fhead == null) { return; } DAOFactory.IteminstanceDAO.DeleteFromSlotAndType(fhead.CharacterId, packet.Slot, InventoryType.FamilyWareHouse); } Session.Character.Family.InsertFamilyLog(FamilyLogType.WareHouseRemoved, Session.Character.Name, message: $"{item2.ItemVNum}|{packet.Amount}"); }
private void processStatEffect(FamilyCharacter character, string stat, int delta) { if (stat == "mood") { character.mood += delta; } else if (stat == "relationship") { character.relationship += delta; } else if (stat == "loyalty") { character.loyalty += delta; } }
public static bool ToFamilyCharacterDTO(FamilyCharacter input, FamilyCharacterDTO output) { if (input == null) { return(false); } output.Authority = input.Authority; output.CharacterId = input.CharacterId; output.DailyMessage = input.DailyMessage; output.Experience = input.Experience; output.FamilyCharacterId = input.FamilyCharacterId; output.FamilyId = input.FamilyId; output.Rank = input.Rank; return(true); }
private void OnOtherCharacterConnected(object sender, EventArgs e) { Tuple <long, string> loggedInCharacter = (Tuple <long, string>)sender; if (Character.IsFriendOfCharacter(loggedInCharacter.Item1)) { if (Character != null && Character.CharacterId != loggedInCharacter.Item1) { _client.SendPacket(Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("CHARACTER_LOGGED_IN"), loggedInCharacter.Item2), 10)); _client.SendPacket(Character.GenerateFinfo(loggedInCharacter.Item1, true)); } } FamilyCharacter chara = Character.Family?.FamilyCharacters.FirstOrDefault(s => s.CharacterId == loggedInCharacter.Item1); if (chara != null && loggedInCharacter.Item1 != Character?.CharacterId) { _client.SendPacket(Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("CHARACTER_FAMILY_LOGGED_IN"), loggedInCharacter.Item2, Language.Instance.GetMessageFromKey(chara.Authority.ToString().ToUpper())), 10)); } }
private bool CheckComparison(Comparison comp, FamilyCharacter char1, FamilyCharacter char2) { bool rtn = false; switch (comp.op) { case '>': break; case '<': break; case '=': break; default: break; } return(rtn); }
public DeleteResult Delete(string characterName) { try { using (OpenNosContext context = DataAccessHelper.CreateContext()) { Character character = context.Character.FirstOrDefault(c => c.Name.Equals(characterName) && c.State == (byte)CharacterState.Active); FamilyCharacter familyCharacter = context.FamilyCharacter.FirstOrDefault(c => c.CharacterId.Equals(character.CharacterId)); if (character != null && familyCharacter != null) { context.FamilyCharacter.Remove(familyCharacter); context.SaveChanges(); } return(DeleteResult.Deleted); } } catch (Exception e) { Logger.Error(string.Format(Language.Instance.GetMessageFromKey("DELETE_FAMILYCHARACTER_ERROR"), e.Message), e); return(DeleteResult.Error); } }
//---------------------------------------------------------------------------------------------------- private bool TryRunMinorEvent() { Debug.Log("RunMinorEvent"); //return runEvent(minorEvents); //choose event from list RandomEvent currentEvent = minorEvents[Random.Range(0, minorEvents.Length)]; Debug.Log(currentEvent.mName); //if room requirement, see if room has valid NPC FamilyCharacter[] allCharacters = CharacterManager.instance.GetCharacters(); int charsInRoom = allCharacters.Length; FamilyCharacter[] validCharacters; if (currentEvent.mRoomReq != null) { List <FamilyCharacter> validCharacterList = new List <FamilyCharacter>(); for (int i = 0; i < allCharacters.Length; ++i) { if ((allCharacters[i].currentRoom == currentEvent.mRoomReq) && (CharacterIsInGroup(currentEvent.mCharacter1, allCharacters[i].charName))) { validCharacterList.Add(allCharacters[i]); } } validCharacters = validCharacterList.ToArray(); } else { List <FamilyCharacter> validCharacterList = new List <FamilyCharacter>(); for (int i = 0; i < allCharacters.Length; ++i) { if (CharacterIsInGroup(currentEvent.mCharacter1, allCharacters[i].charName)) { validCharacterList.Add(allCharacters[i]); } } validCharacters = validCharacterList.ToArray(); } //choose random character from valid characters if (validCharacters.Length <= 0) { return(false); } //Debug.Log(validCharacters.Length); FamilyCharacter char1 = validCharacters[Random.Range(0, validCharacters.Length)]; FamilyCharacter char2 = null; if (currentEvent.mCharacter2 != CharacterGroup.None) { char2 = GetValidFamCharFromList(allCharacters, currentEvent.mCharacter2, char1.charName); } Debug.Log(char1.charName); if (char2) { Debug.Log(char2.charName); } //check comparisons bool passStatChecks = true; //apply effect StatEffect[] statEffectList = (passStatChecks? currentEvent.succeedEffects: currentEvent.failEffects); foreach (StatEffect stat in statEffectList) { switch (stat.who) { case StatEffect.WhoEffect.Char1: processStatEffect(char1, stat.stat, stat.delta); break; case StatEffect.WhoEffect.Char2: processStatEffect(char2, stat.stat, stat.delta); break; case StatEffect.WhoEffect.Witnesses: foreach (FamilyCharacter famchar in allCharacters) { if (famchar.currentRoom == char1.currentRoom && (famchar != char1) && (famchar != char2)) { processStatEffect(famchar, stat.stat, stat.delta); } } break; case StatEffect.WhoEffect.All: foreach (FamilyCharacter famchar in allCharacters) { processStatEffect(famchar, stat.stat, stat.delta); } break; default: break; } } //update UI printMinorEvent((passStatChecks ? currentEvent.succeedString : currentEvent.failString), (char1?char1.charName:""), (char2?char2.charName:""), statEffectList); //minorEventText.text = (passStatChecks ? currentEvent.succeedString : currentEvent.failString); return(true); }