/// <summary> /// Gets the value. /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override float GetValue(IBehaviorContext context) { context.AddLogMessage($"UnitValue - {Property}"); UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { Debug.Assert(false, "Wrong Behavior Context"); return(0); } if (string.IsNullOrEmpty(Property)) { Debug.Assert(false, "Property null or empty"); return(0); } if (info == null || info.Name != Property) { info = unitType.GetRuntimeProperty(Property); if (info == null) { Debug.Assert(false, "Wrong Property Name"); return(0); } } return(Convert.ToSingle(info.GetValue(unitContext.Unit))); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.IsSleeping) { unit.WakeUpUnit(); } if (!unit.IsSleeping) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (!unitContext.Unit.CanDoNothing) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } DoNothingThisTurnTask task = new DoNothingThisTurnTask(unitContext.Unit); task.Execute(); if (task.IsTaskFinished) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.CanExplore && unit.Environment == unitContext.Unit.Owner.GameSession.Galaxy) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null || unitContext.Unit == null || unitContext.Unit.StrikeGroup == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (!unit.IsInDock) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit dockUnit = unit.GetDockUnit() as MoveableUnit; if (dockUnit != null && dockUnit.StrikeGroup == unit.StrikeGroup) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } ITradeUnit unit = unitContext.Unit as ITradeUnit; if (unit == null || !unit.HasAssignedTradeRoute) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unitContext.EnvironmentTarget == unit.TradeRoute.From.Environment) { unitContext.EnvironmentTarget = unit.TradeRoute.From; } else if (unitContext.EnvironmentTarget == unit.TradeRoute.To.Environment) { unitContext.EnvironmentTarget = unit.TradeRoute.To; } else { returnCode = BehaviorReturnCode.Failure; return(returnCode); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.IsMoving) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } IWarpMagnetUnit warpMagnet = unitContext.Unit as IWarpMagnetUnit; if (warpMagnet == null || !warpMagnet.CanUseWarpMagnet || warpMagnet.IsWarpMagnetActive) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } WarpMagnetTask task = new WarpMagnetTask(unitContext.Unit); task.Execute(); if (warpMagnet.IsWarpMagnetActive) //-V3022 { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Builder unit = unitContext.Unit as Builder; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.CanBuild) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Carrier carrier = unitContext.Unit as Carrier; if (carrier == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } List <MoveableUnit> units = carrier.Dock.UnitsInDock.ToList(); foreach (var unit in units) { LeaveDockTask task = new LeaveDockTask(unit, carrier); task.Execute(); if (!task.IsTaskFinished) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; if (unit == null || unit.Environment is Galaxy || unit.Target == null || unit.Environment != unit.Target.Environment || !unit.CanAttack || unit.Owner == unit.Target.Owner) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } context.AddLogMessage("Attacking Target - " + unit.Target.Name); AttackTask task = new AttackTask(unit); while (!task.IsTaskFinished) { task.Execute(); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit target = unit.Target as StaticUnit; if (target == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.Environment == target.Environment) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.CanMiniJump && unit.Environment != null) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null || unit.StrikeGroup == null || unit.StrikeGroup.GroupLeader == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } short q = unit.StrikeGroup.GroupLeader.Q; short r = unit.StrikeGroup.GroupLeader.R; unit.CalculatePath(unit.Environment, q, r); if (unit.SelectedPath != null) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } ResourcesExtractor unit = unitContext.Unit as ResourcesExtractor; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.IsExtracting || unit.IsSleeping) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Planet siegingPlanet = unitContext.Unit.GetOrbitingPlanet(); if (siegingPlanet == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (siegingPlanet.IsUnderSiege && siegingPlanet.Owner != unitContext.Unit.Owner) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } ColonyShip unit = unitContext.Unit as ColonyShip; if (unit == null || !unit.IsOnOrbit) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Planet planet = unitContext.EnvironmentTarget as Planet; if (planet == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } ColonizeTask task = new ColonizeTask(unit, planet); returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; if (unit == null || !unit.CanScan) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } ScanTask task = new ScanTask(unit); task.Execute(); if (task.IsTaskFinished) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null || unitContext.Unit == null || unitContext.Unit.StrikeGroup == null || unitContext.Unit.StrikeGroup.GroupLeader == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit groupLeader = unitContext.Unit.StrikeGroup.GroupLeader as MoveableUnit; if (groupLeader == null || !groupLeader.IsInDock) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; unit.Target = groupLeader.GetDockUnit() as BaseUnit; if (unit.Target == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Behavior behavior = null; if (!string.IsNullOrEmpty(BehaviorName)) { behavior = BehaviorsManager.Instance.GetBehavior(BehaviorName); if (behavior == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } } unitContext.Unit.Behavior = behavior; returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (!unitContext.Unit.CanSleep) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } SleepTask task = new SleepTask(unitContext.Unit); task.Execute(); if (unitContext.Unit.IsSleeping) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null || !unit.CanWarp) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } WarpJumpTask task = new WarpJumpTask(unit, unitContext.Unit.Owner.GameSession.Galaxy); // TODO: think about this issue while (!task.IsTaskFinished) { task.Execute(); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unitContext.EnvironmentTarget == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } int planetDistance = HexMap.Distance(unitContext.EnvironmentTarget, unitContext.Unit); if (planetDistance > unit.SensorsEnergy) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null || !unit.CanExplore) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } ExploreTask exploreTask = new ExploreTask(unit); exploreTask.Execute(); if (exploreTask.IsTaskFinished) { unit.Environment = exploreTask.ExploredEnvironment; returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null || (!unit.IsOnOrbit && !unit.IsInDock)) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } RepairOnOrbitTask task = new RepairOnOrbitTask(unitContext.Unit); task.Execute(); if (task.IsTaskFinished) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } BaseEnvironment envi = unitContext.Unit.Environment; if (envi is Galaxy || envi == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } BaseUnit warpMagnetUnit = BaseEnvironment.GetActiveWarpMagnet(envi); if (warpMagnetUnit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } unitContext.EnvironmentTarget = warpMagnetUnit; returnCode = BehaviorReturnCode.Success; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } MoveableUnit unit = unitContext.Unit as MoveableUnit; if (unit == null || !unit.IsOnOrbit) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Planet orbitingPlanet = unit.GetOrbitingPlanet(); if (orbitingPlanet != null && orbitingPlanet.Owner != null && orbitingPlanet.Owner != unit.Owner && !orbitingPlanet.IsUnderSiege) { orbitingPlanet.BeginSiege(unit.Owner); returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } StaticUnit unit = unitContext.Unit as StaticUnit; if (unit == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unit.CanAttack) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unitContext.EnvironmentTarget == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unitContext.EnvironmentTarget.Q == unitContext.Unit.Q && unitContext.EnvironmentTarget.R == unitContext.Unit.R) { returnCode = BehaviorReturnCode.Success; return(returnCode); } returnCode = BehaviorReturnCode.Failure; return(returnCode); }
/// <summary> /// Executes behavior with given context /// </summary> /// <param name="context">The context.</param> /// <returns></returns> public override BehaviorReturnCode Behave(IBehaviorContext context) { UnitBehaviorContext unitContext = context as UnitBehaviorContext; if (unitContext == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } Planet orbitingPlanet = unitContext.Unit.GetOrbitingPlanet(); if (orbitingPlanet == null) { returnCode = BehaviorReturnCode.Failure; return(returnCode); } if (unitContext.TargetPlanet == null) { unitContext.TargetPlanet = orbitingPlanet.BehaviorContext.EnvironmentTarget as Planet; orbitingPlanet.BehaviorContext.EnvironmentTarget = null; } returnCode = BehaviorReturnCode.Success; return(returnCode); }