public virtual void WorkEnds() { if (!CurrentPos.Equals(ParkingPos)) { Move(ParkingPos); } //Charge }
public virtual async Task <bool> WorkBegins() { bool b = await this.MoveAsync(CurrentPos, WorkingPos); if (CurrentPos.Equals(WorkingPos)) { this.IsWorking = true; } return(b); }
//BaseUnit = new BaseUnit(); public virtual void WorkBegins() { if (!CurrentPos.Equals(WorkingPos)) { Move(WorkingPos); } //lancer le travail // .... }
public virtual async Task <bool> WorkEndsAsync() { var result = await MoveAsync(base.CurrentPos, ParkingPos); if (CurrentPos.Equals(ParkingPos)) { IsWorking = false; OnStatusChanged(this, new StatusChangedEventArgs("JE TERMINE DE TRAVAILLER")); } return(result && !IsWorking); }
/// <summary> /// see http://www.e-naxos.com/Blog/post/De-la-bonne-utilisation-de-AsyncAwait-en-C.aspx /// </summary> /// <returns></returns> public virtual async Task <bool> WorkBeginsAsync() { var result = await MoveAsync(base.CurrentPos, WorkingPos); if (CurrentPos.Equals(WorkingPos)) { IsWorking = true; OnStatusChanged(this, new StatusChangedEventArgs("JE COMMENCE À TRAVAILLER")); } return(result && IsWorking); }
/// <summary> /// Déplacement du robot vers sa position de stationnement /// </summary> /// <returns> /// true : si la position a été atteinte /// sinon false /// </returns> public virtual async Task <bool> WorkEnds() { OnStatusChanged(new StatusChangedEventArgs("Move Parking Position => Working Position")); await Move(ParkingPos.X, ParkingPos.Y); IsWorking = false; if (CurrentPos.Equals(ParkingPos)) { OnStatusChanged(new StatusChangedEventArgs("Park Position")); return(true); } else { return(false); } }
/// <summary> /// Déplacement du robot vers sa position de travail /// </summary> /// <returns> /// true : si la position a été atteinte /// sinon false /// </returns> public virtual async Task <bool> WorkBegins() { OnStatusChanged(new StatusChangedEventArgs("Move Parking Position => Working Position")); await Move(WorkingPos.X, WorkingPos.Y); if (CurrentPos.Equals(WorkingPos)) { IsWorking = true; OnStatusChanged(new StatusChangedEventArgs("Work Position")); return(true); } else { return(false); } }
public override int GetAvailableTime(Vector2 pos) { var dist1 = Math.Abs((FixedEndPos.Y - CurrentPos.Y) * pos.X - (FixedEndPos.X - CurrentPos.X) * pos.Y + FixedEndPos.X * CurrentPos.Y - FixedEndPos.Y * CurrentPos.X) / CurrentPos.Distance(FixedEndPos); var actualDist = Math.Sqrt(CurrentPos.Distance(pos).Pow() - dist1.Pow()); var time = OwnSpellData.MissileSpeed > 0 ? (int)(actualDist / OwnSpellData.MissileSpeed * 1000) : 0; if (Missile == null) { return(Math.Max(0, OwnSpellData.Delay - (Environment.TickCount - TimeDetected))); } return(time); }
public Bullet(Logic m, Unit owner) { _logic = m; Owner = owner; Speed = owner.Gun.BulletSpeed; MoveState moveState = new MoveState(this); RespawnState respawningState = new RespawnState(this, this, moveState); ExplodeState explodeState = new ExplodeState(this, this, _logic); MovingDirection = Owner.Gun.WeaponOpinion; CurrentPos = Owner.Gun.GunPos; CurrentPos = CurrentPos.Addition(MovingDirection.Multiplication(Speed * 4)); moveState.transitions.Add(5, explodeState); State = respawningState; State.Direct = Direction.Right; }
Vector2[] GetBeginEdgePoints(Vector2[] edges) { var endEdges = edges; Vector2 direction = (FixedEndPos - FixedStartPos).To2D(); var perpVecStart = CurrentPos.To2D() + direction.Normalized().Perpendicular(); var perpVecEnd = CurrentPos.To2D() + direction.Normalized().Perpendicular() * 1500; //right side is not the same? var perpVecStart2 = CurrentPos.To2D() + direction.Normalized().Perpendicular2(); var perpVecEnd2 = CurrentPos.To2D() + direction.Normalized().Perpendicular2() * 1500; Geometry.Polygon.Line leftEdgeLine = new Geometry.Polygon.Line(FixedStartPos.To2D(), endEdges[1]); Geometry.Polygon.Line rightEdgeLine = new Geometry.Polygon.Line(FixedStartPos.To2D(), endEdges[0]); var inters = leftEdgeLine.GetIntersectionPointsWithLineSegment(perpVecStart, perpVecEnd); var inters2 = rightEdgeLine.GetIntersectionPointsWithLineSegment(perpVecStart2, perpVecEnd2); Vector2 p1 = Vector2.Zero, p2 = Vector2.Zero; if (inters.Any()) { var closestInter = inters.OrderBy(x => x.Distance(CurrentPos)).First(); p2 = closestInter; } if (inters2.Any()) { var closestInter = inters2.OrderBy(x => x.Distance(CurrentPos)).First(); p1 = closestInter; } if (!p1.IsZero && !p2.IsZero) { return new[] { p1, p2 } } ; return(new[] { CurrentPos.To2D(), CurrentPos.To2D() }); }