private static ArrayList GetBeacons(Mobile m, NavDestinations dest) { Map map = m.Map; ArrayList list = new ArrayList(); IPooledEnumerable eable = map.GetItemsInRange(m.Location, 256); //add each NavBeacon found add it to are list foreach (Item n in eable) { if (n != null && n is NavBeacon && ((NavBeacon)n).Active && ((NavBeacon)n).GetWeight((int)dest) != -1) { list.Add(n); } } return(list); }
public override void Deserialize(GenericReader reader) { TimeSpan ts = TimeSpan.Zero; base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_LevelScale = reader.ReadDouble(); goto case 2; } case 2: { m_LevelError = (LevelErrors)reader.ReadInt(); goto case 1; } case 1: { ts = reader.ReadDeltaTime() - DateTime.Now; goto case 0; } case 0: { // read it all back in m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt()); int a = reader.ReadInt(); SpawnLevels = new ArrayList(); // create new level array through deserialise constructors for (int i = 0; i < a; ++i) { SpawnLevels.Add(new ChampLevelData(reader)); } m_Monsters = reader.ReadMobileList(); m_FreeMonsters = reader.ReadMobileList(); m_LevelCounter = reader.ReadInt(); m_Kills = reader.ReadInt(); m_ExpireTime = reader.ReadDateTime(); m_NavDest = (NavDestinations)reader.ReadInt(); // the bools m_bActive = reader.ReadBool(); m_bGraphics = reader.ReadBool(); // if graphics were on remake them thru deserialise constructor if (m_bGraphics) { m_Graphics = new ChampGraphics(this, reader); } // and the restart... m_bRestart = reader.ReadBool(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool() && !m_bActive && m_bRestart) { // in this case the champ is activley in restart mode, so create new timer //pla: 13/01/07 //changed so we don't lose time on restart if (ts == TimeSpan.Zero) { DoTimer(m_RestartDelay); } else { DoTimer(ts); } } else if (m_bActive) { // if spawn was active then start the wheels turning... StartSlice(); } break; } } }
public static void AddRequest(Mobile m, NavDestinations nav) { NavList n = new NavList(m, nav); Navs.Add(n); }
public NavList(Mobile m, NavDestinations dest) { requester = m; Nav = dest; }
public Beacon_Sort(SortDirection direction, NavDestinations dest) { m_direction = direction; nav = dest; }
private static ArrayList GetBeacons(Mobile m, NavDestinations dest) { Map map = m.Map; ArrayList list = new ArrayList(); IPooledEnumerable eable = map.GetItemsInRange(m.Location, 256); //add each NavBeacon found add it to are list foreach ( Item n in eable ) { if(n !=null && n is NavBeacon && ((NavBeacon)n).Active && ((NavBeacon)n).GetWeight((int)dest) != -1 ) list.Add(n); } return list; }
public override void Deserialize( GenericReader reader ) { TimeSpan ts = TimeSpan.Zero; base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 3: { m_LevelScale = reader.ReadDouble(); goto case 2; } case 2: { m_LevelError = (LevelErrors)reader.ReadInt(); goto case 1; } case 1: { ts = reader.ReadDeltaTime() - DateTime.Now; goto case 0; } case 0: { // read it all back in m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt()); int a = reader.ReadInt(); SpawnLevels = new ArrayList(); // create new level array through deserialise constructors for( int i = 0 ; i < a; ++i ) SpawnLevels.Add( new ChampLevelData( reader ) ); m_Monsters = reader.ReadMobileList(); m_FreeMonsters = reader.ReadMobileList(); m_LevelCounter = reader.ReadInt(); m_Kills = reader.ReadInt(); m_ExpireTime = reader.ReadDateTime(); m_NavDest = (NavDestinations)reader.ReadInt(); // the bools m_bActive = reader.ReadBool(); m_bGraphics = reader.ReadBool(); // if graphics were on remake them thru deserialise constructor if( m_bGraphics ) m_Graphics = new ChampGraphics(this, reader); // and the restart... m_bRestart = reader.ReadBool(); m_RestartDelay = reader.ReadTimeSpan(); if( reader.ReadBool() && !m_bActive && m_bRestart ) { // in this case the champ is activley in restart mode, so create new timer //pla: 13/01/07 //changed so we don't lose time on restart if (ts == TimeSpan.Zero) DoTimer(m_RestartDelay); else DoTimer(ts); } else if( m_bActive ) { // if spawn was active then start the wheels turning... StartSlice(); } break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_CurrentAI = (AIType)reader.ReadInt(); m_DefaultAI = (AIType)reader.ReadInt(); m_iRangePerception = reader.ReadInt(); m_iRangeFight = reader.ReadInt(); m_iTeam = reader.ReadInt(); m_dActiveSpeed = reader.ReadDouble(); m_dPassiveSpeed = reader.ReadDouble(); m_dCurrentSpeed = reader.ReadDouble(); double activeSpeed = m_dActiveSpeed; double passiveSpeed = m_dPassiveSpeed; // SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed ); bool isStandardActive = false; for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i ) isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] ); bool isStandardPassive = false; for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i ) isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] ); if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed ) m_dCurrentSpeed = activeSpeed; else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed ) m_dCurrentSpeed = passiveSpeed; if ( isStandardActive ) m_dActiveSpeed = activeSpeed; if ( isStandardPassive ) m_dPassiveSpeed = passiveSpeed; if ( m_iRangePerception == OldRangePerception ) m_iRangePerception = DefaultRangePerception; m_pHome.X = reader.ReadInt(); m_pHome.Y = reader.ReadInt(); m_pHome.Z = reader.ReadInt(); if ( version >= 1 ) { m_iRangeHome = reader.ReadInt(); int i, iCount; iCount = reader.ReadInt(); for ( i=0; i< iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType( str ); if ( type != null ) { m_arSpellAttack.Add( type ); } } iCount = reader.ReadInt(); for ( i=0; i< iCount; i++ ) { string str = reader.ReadString(); Type type = Type.GetType( str ); if ( type != null ) { m_arSpellDefense.Add( type ); } } } else { m_iRangeHome = 0; } if ( version >= 2 ) { m_FightMode = ( FightMode )reader.ReadInt(); m_bControled = reader.ReadBool(); m_ControlMaster = reader.ReadMobile(); m_ControlTarget = reader.ReadMobile(); m_ControlDest = reader.ReadPoint3D(); m_ControlOrder = (OrderType) reader.ReadInt(); m_dMinTameSkill = reader.ReadDouble(); if ( version < 9 ) reader.ReadDouble(); m_bTamable = reader.ReadBool(); m_bSummoned = reader.ReadBool(); if ( m_bSummoned ) { m_SummonEnd = reader.ReadDeltaTime(); new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start(); } m_iControlSlots = reader.ReadInt(); } else { m_FightMode = FightMode.All | FightMode.Closest; m_bControled = false; m_ControlMaster = null; m_ControlTarget = null; m_ControlOrder = OrderType.None; } if ( version >= 3 ) // loyalty redo { m_Loyalty = (PetLoyalty)reader.ReadInt(); if (version < 23) m_Loyalty = (PetLoyalty)((int)m_Loyalty * 10); } else m_Loyalty = PetLoyalty.WonderfullyHappy; if ( version >= 4 ) m_CurrentWayPoint = reader.ReadItem() as WayPoint; if ( version >= 5 ) m_SummonMaster = reader.ReadMobile(); if ( version >= 6 ) { m_HitsMax = reader.ReadInt(); m_StamMax = reader.ReadInt(); m_ManaMax = reader.ReadInt(); m_DamageMin = reader.ReadInt(); m_DamageMax = reader.ReadInt(); } if ( version >= 7 && version < 18) // Adam: eliminate crazy resistances ver. 18 { int dummy; dummy = reader.ReadInt(); // PhysicalResistance dummy = reader.ReadInt(); // PhysicalDamage dummy = reader.ReadInt(); // FireResistance dummy = reader.ReadInt(); // FireDamage dummy = reader.ReadInt(); // ColdResistance dummy = reader.ReadInt(); // ColdDamage dummy = reader.ReadInt(); // PoisonResistance dummy = reader.ReadInt(); // PoisonDamage dummy = reader.ReadInt(); // EnergyResistance dummy = reader.ReadInt(); // EnergyDamage } //if ( version >= 7 && version >= 18) // Adam: eliminate crazy resistances ver. 18 //{ // m_PhysicalResistance = reader.ReadInt(); // m_PhysicalDamage = reader.ReadInt(); //} if ( version >= 8 ) m_Owners = reader.ReadMobileList(); else m_Owners = new ArrayList(); if ( version >= 10 ) { m_IsDeadPet = reader.ReadBool(); m_IsBonded = reader.ReadBool(); m_BondingBegin = reader.ReadDateTime(); m_OwnerAbandonTime = reader.ReadDateTime(); } if ( version >= 11 ) m_HasGeneratedLoot = reader.ReadBool(); else m_HasGeneratedLoot = true; if( version >= 12 ) { m_StatLossTime = reader.ReadDateTime(); } if( version >= 13 ) //Pigpen - Addition for IOB Sytem { m_IOBAlignment = (IOBAlignment)reader.ReadInt(); } if( version >= 14 ) //Pix: IOBLeader/IOBFollower { m_IOBFollower = reader.ReadBool(); m_IOBLeader = reader.ReadMobile(); } if( version >= 15 ) //Pix: Spawner { m_Spawner = (Spawner)reader.ReadItem(); } if( version >= 16 ) //Pix: Lifespan { m_lifespan = reader.ReadDeltaTime(); } if( version >= 17 && version < 30 ) //Kit: preferred target ai { // eliminated in version 30 //m_preferred = reader.ReadBool(); //m_preferredTargetType = reader.ReadMobile(); //Sortby = (SortTypes)reader.ReadInt(); reader.ReadBool(); reader.ReadMobile(); reader.ReadInt(); } if( version >= 18 ) //Adam: eliminate stupid resistances { // see above - version 7 } if( version >= 19 ) //Kit: NavStar { Destination = reader.ReadPoint3D(); dest = (NavDestinations)reader.ReadInt(); Nav = (NavBeacon)reader.ReadItem(); } if( version >= 20 ) //Adam: convert BardImmune from an override to a property { m_bBardImmune = reader.ReadBool(); } if(version >= 21 ) { loyaltyfeed = reader.ReadDateTime(); } if(version >= 22) { m_Flags = (CreatureFlags)reader.ReadInt(); } if (version >= 24) { m_ControlSlotModifier = reader.ReadDouble(); m_Patience = reader.ReadInt(); m_Wisdom = reader.ReadInt(); m_Temper = reader.ReadInt(); m_MaxLoyalty = reader.ReadInt(); } if (version >= 25) { m_HitsRegenGene = reader.ReadDouble(); m_ManaRegenGene = reader.ReadDouble(); m_StamRegenGene = reader.ReadDouble(); } // note the LESS THAN symbol instead of GTE // this is an example of run-once deserialization code - every old critter will run this once. if (version < 26) InitializeGenes(); // version 27 if (version >= 27) m_LifespanMinutes = reader.ReadInt(); // we need to reset this because reading the Flags will have turned it off // the flags value will obnly be valid when version >= 28 if (version < 28) IsScaredOfScaryThings = true; /* versions < 29 get their FightMode upgraded to the new [Flags] version public enum FightMode { None, // Never focus on others Aggressor, // Only attack Aggressors Strongest, // Attack the strongest Weakest, // Attack the weakest Closest, // Attack the closest Evil, // Only attack aggressor -or- negative karma Criminal, // Attack the criminals Player } */ if (version < 29) { switch ((int)m_FightMode) { // now outdated values case 0: m_FightMode = (FightMode)0x00; break; /*None*/ case 1: m_FightMode = (FightMode)0x01; break; /*Aggressor*/ case 2: m_FightMode = (FightMode)0x02; break; /*Strongest*/ case 3: m_FightMode = (FightMode)0x04; break; /*Weakest*/ case 4: m_FightMode = (FightMode)0x08; break; /*Closest*/ case 5: m_FightMode = (FightMode)0x10; break; /*Evil*/ case 6: m_FightMode = (FightMode)0x20; break; /*Criminal*/ case 7: m_FightMode = (FightMode)0x40; break; /*Player*/ } } /* versions < 30 get their FightMode upgraded to the new [Flags] version public enum FightMode { None = 0x00, // Never focus on others Aggressor = 0x01, // Only attack Aggressors Strongest = 0x02, // Attack the strongest Weakest = 0x04, // Attack the weakest Closest = 0x08, // Attack the closest Evil = 0x10, // Only attack aggressor -or- negative karma Criminal = 0x20, // Attack the criminals Player = 0x40 // Attack Players (Vampires for feeding on blood) } */ if (version < 30) { switch ((int)m_FightMode) { case 0x00 /*None*/ : m_FightMode = FightMode.None; break; case 0x01 /*Aggressor*/ : m_FightMode = FightMode.Aggressor; break; case 0x02 /*Strongest*/ : m_FightMode = FightMode.All | FightMode.Strongest; break; case 0x04 /*Weakest*/ : m_FightMode = FightMode.All | FightMode.Weakest; break; case 0x08 /*Closest*/ : m_FightMode = FightMode.All | FightMode.Closest; break; case 0x10 /*Evil*/ : m_FightMode = FightMode.Aggressor | FightMode.Evil; break; case 0x20 /*Criminal*/ : m_FightMode = FightMode.Aggressor | FightMode.Criminal; break; case 0x40 /*Player*/ : m_FightMode = FightMode.All | FightMode.Closest; break; } } // new Fight Style for enhanced AI if (version >= 31) m_FightStyle = (FightStyle)reader.ReadInt(); // version 32, read in the AI data, but we must construct the AI object first ChangeAIType(m_CurrentAI); if (version >= 32) { if (AIObject != null) AIObject.Deserialize(reader); } if (version >= 33) { m_ConstantFocus = reader.ReadMobile(); } // ------------------------------- // After all the reading is done // ------------------------------- RefreshLifespan(); CheckStatTimers(); AddFollowers(); }
public static void AddRequest(Mobile m, NavDestinations nav) { NavList n = new NavList(m, nav); Navs.Add(n); }
public NavList(Mobile m, NavDestinations dest) { requester = m; Nav = dest; }
public Beacon_Sort(SortDirection direction, NavDestinations dest) { m_direction = direction; nav = dest; }
private bool SetNavMenu() { List <MenuItem> output = new(); Type type = typeof(Terminal); PropertyInfo[] terminalProps = type.GetProperties() .Where(p => p.PropertyType.GetInterfaces().Contains(typeof(INavegable))) .ToArray(); int i = 0; foreach (PropertyInfo p in terminalProps) { LandingPageAttribute landingPage = (LandingPageAttribute)p.GetCustomAttributes(typeof(LandingPageAttribute)).FirstOrDefault(); if (landingPage.IsEnabled) { ButtonSettingsAttribute buttonSetting = (ButtonSettingsAttribute)p.GetCustomAttributes(typeof(ButtonSettingsAttribute)).FirstOrDefault(); MenuItem item = new(i, landingPage.Display, landingPage.IsSelected); item.SetContet($"Views/{landingPage.Page}.xaml"); item.TextColor = new SolidColorBrush(buttonSetting.TextColor); byte[] bgcColorChannels = buttonSetting.BackgroundColor.ToChannelsBytes(); HSBColor middleColor = HSBColor.FromARGB(bgcColorChannels); middleColor.Desaturate(56); item.BackgroundColor = new LinearGradientBrush( new GradientStopCollection(new List <GradientStop> { new GradientStop(buttonSetting.BackgroundColor, 0.5), new GradientStop(middleColor.ToARGB().ToMediaColor(), 0.75), new GradientStop(buttonSetting.BackgroundColor, 1) }), new Point(0, 0), new Point(0, 1) ); output.Add(item); i++; } } output.Reverse(); NavDestinations = output.ToObservableCollection(); if (NavDestinations.Count > 0) { Destination = NavDestinations.FirstOrDefault(m => m.DefaultSelected); if (Destination == null) { Destination = NavDestinations[0]; } } if (Destination != null) { return(true); } return(false); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 11: { m_LootPack = reader.ReadItem(); goto case 10; } case 10: { m_DynamicCopy = reader.ReadBool(); goto case 9; } case 9: { m_TemplateMobile = reader.ReadMobile(); m_TemplateItem = reader.ReadItem(); m_TemplateEnabled = reader.ReadBool(); goto case 8; } case 8: { m_MobVendorInvul = (BOOL)reader.ReadInt(); goto case 7; } case 7: { int dummy = 0; bool b = reader.ReadBool(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); dummy = reader.ReadInt(); goto case 6; } case 6: { int dummy = 0; string s = reader.ReadString(); dummy = reader.ReadInt(); goto case 5; } case 5: { m_NavDest = (NavDestinations)reader.ReadInt(); goto case 4; } case 4: { m_MobDirection = (Direction)reader.ReadInt(); goto case 3; } case 3: { // obsolete: m_FreezeDecay bool dmy = reader.ReadBool(); goto case 2; } case 2: { m_WayPoint = reader.ReadItem() as WayPoint; goto case 1; } case 1: { m_Group = reader.ReadBool(); goto case 0; } case 0: { m_MinDelay = reader.ReadTimeSpan(); m_MaxDelay = reader.ReadTimeSpan(); m_Count = reader.ReadInt(); m_Team = reader.ReadInt(); m_HomeRange = reader.ReadInt(); m_Running = reader.ReadBool(); TimeSpan ts = TimeSpan.Zero; if ( m_Running ) ts = reader.ReadDeltaTime() - DateTime.Now; int size = reader.ReadInt(); m_CreaturesName = new ArrayList( size ); for ( int i = 0; i < size; ++i ) { string typeName = reader.ReadString(); m_CreaturesName.Add( typeName ); if ( SpawnerType.GetType( typeName ) == null ) { if ( m_WarnTimer == null ) m_WarnTimer = new WarnTimer(); m_WarnTimer.Add( Location, Map, typeName ); } } int count = reader.ReadInt(); m_Creatures = new ArrayList( count ); for ( int i = 0; i < count; ++i ) { IEntity e = World.FindEntity( reader.ReadInt() ); if ( e != null ) m_Creatures.Add( e ); } if ( m_Running ) DoTimer( ts ); break; } } }