bool FindNewPath(MobEntity mob) { int iLength = 12; int iPosX = mob.rnd.Next(iLength) + mob.CurrentPosX - (iLength / 2); int iPosY = mob.rnd.Next(iLength) + mob.CurrentPosY - (iLength / 2); if (iPosX < 0 || iPosY < 0) { return(false); } if (iPosX == mob.CurrentPosX && iPosY == mob.CurrentPosY) { return(false); } if (!map.IsMovable(this, iPosX, iPosY)) { return(false); } if (iPosX / 16 != Row || iPosY / 16 != Column) { return(false); } mob.EndPosX = (ushort)iPosX; mob.EndPosY = (ushort)iPosY; return(true); }
bool UpdatePosition(MobEntity mob) { ushort oldX = mob.CurrentPosX; ushort oldY = mob.CurrentPosY; var Tick = Environment.TickCount; if (mob.CurrentPosX > mob.EndPosX) { mob.CurrentPosX--; } else if (mob.CurrentPosX < mob.EndPosX) { mob.CurrentPosX++; } if (mob.CurrentPosY > mob.EndPosY) { mob.CurrentPosY--; } else if (mob.CurrentPosY < mob.EndPosY) { mob.CurrentPosY++; } mob.NextTime = Environment.TickCount + 1001; if (!IsMovable(mob.CurrentPosX, mob.CurrentPosY)) { mob.IsMoving = false; mob.NextTime = Environment.TickCount;// + new Random().Next(10) * 100 + 1000; mob.CurrentPosX = oldX; mob.CurrentPosY = oldY; mob.EndPosX = oldX; mob.EndPosY = oldY; return(false); } if (mob.CurrentPosX == mob.EndPosX && mob.CurrentPosY == mob.EndPosY) { mob.IsMoving = false; mob.NextTime = Environment.TickCount + new Random().Next(10) * 100 + 1000; return(false); } if (mob.Spawn <= Environment.TickCount && mob.CurrentHP == 0) { mob.CurrentHP = mob.MaxHP; return(false); } return(true); }
public void AddMob(MobEntity mob) { int row = mob.CurrentPosX / 16; int column = mob.CurrentPosY / 16; var cell = cells[row, column]; cell.AddMob(mob); //var i = GetShortestCellList(); //active[i].Add(cell); //cell.List = i; //cell.Activate(); }
public void AddMob(MobEntity mob) { mobs.TryAdd(mob.Id, mob); }
void SetPhaseFind(MobEntity mob) { mob.NextTime = Environment.TickCount + 1000; }