private void NextAct() { IScheduleable scheduleable = ScheduleManager.Get(); if (scheduleable == null) { TickAll(); AddAll(); return; } System.Console.WriteLine("{0}", (scheduleable as Actor).GetParent().NAME); if ((scheduleable as Actor).GetParent() == Player) { IsPlayerTurn = true; } else { var ai = (scheduleable as Actor).GetComponent <ConsoleScreenGameHelper.Core.Entity.Components.AI>(ComponentType.AI); ai.Act(); (scheduleable as Actor).GetParent().Update(); if ((scheduleable as Actor).Stats.Energy >= 7) { ScheduleManager.Add((scheduleable as Actor)); } else if ((scheduleable as Actor).Stats.Energy > 0) { ScheduleManager.Add((scheduleable as Actor), 5); } else { ScheduleManager.Add((scheduleable as Actor), 7); } NextAct(); } }
// Remove a specific object from the schedule. public void Remove(IScheduleable scheduleable, bool removeFromTimeline) { //Create a dummy key/value pair KeyValuePair <int, List <IScheduleable> > scheduleableListFound = new KeyValuePair <int, List <IScheduleable> >(-1, null); foreach (var scheduleablesList in SCHEDULEABLES) { //Search for a match if (scheduleablesList.Value.Contains(scheduleable)) { //Copy the matching pair over the dummy scheduleableListFound = scheduleablesList; break; } } if (scheduleableListFound.Value != null) { //Remove the scheduleable from the timeline if (removeFromTimeline) { GameController.Timeline.Remove(scheduleable); } //Remove the scheduleable from the list scheduleableListFound.Value.Remove(scheduleable); //If list is now empty, remove the list if (scheduleableListFound.Value.Count <= 0) { SCHEDULEABLES.Remove(scheduleableListFound.Key); } } }
public void Remove(IScheduleable scheduleable) { //Create a dummy key/value pair KeyValuePair <int, List <IScheduleable> > scheduleableListFound = new KeyValuePair <int, List <IScheduleable> >(-1, null); List <int> emptyKeys = new List <int>(); foreach (var scheduleablesList in SCHEDULEABLES) { //Search for a match if (scheduleablesList.Value.Contains(scheduleable)) { //Copy the matching pair over the dummy scheduleableListFound = scheduleablesList; } if (scheduleableListFound.Value != null) { //Remove the scheduleable from the list scheduleableListFound.Value.Remove(scheduleable); //If list is now empty, add the key to be removed later if (scheduleableListFound.Value.Count <= 0) { //_scheduleables.Remove( scheduleableListFound.Key ); emptyKeys.Add(scheduleableListFound.Key); } } } VisibleActors.Remove(scheduleable as Actor); //Remove empty lists foreach (int key in emptyKeys) { SCHEDULEABLES.Remove(key); } }
public void Add(int time, IScheduleable scheduleable) { int currentTime = GameController.SchedulingSystem.Time; if (scheduleable.History) { if (scheduleable is Actor) { if (VisibleActors.Contains(scheduleable as Actor)) { if (!SCHEDULEABLES.ContainsKey(time)) { SCHEDULEABLES.Add(time, new List <IScheduleable>()); } SCHEDULEABLES[time].Add(scheduleable); //Remove too old lists Cull(); } } else { if (!SCHEDULEABLES.ContainsKey(time)) { SCHEDULEABLES.Add(time, new List <IScheduleable>()); } SCHEDULEABLES[time].Add(scheduleable); } } }
public void AdvanceTime() { IScheduleable scheduleable = SchedulingSystem.Get(); if (scheduleable is Player) { IsPlayerTurn = true; } else if (scheduleable is Attack) { Attack attack = scheduleable as Attack; attack.Activate(); AdvanceTime(); } else if (scheduleable is Monster) { Monster monster = scheduleable as Monster; monster.Activate(); SchedulingSystem.Add(monster); AdvanceTime(); } else if (scheduleable is Update) { Update update = scheduleable as Update; update.Activate(); SchedulingSystem.Add(update); AdvanceTime(); } }
public void ActivateMonsters() { IScheduleable scheduleable = Game.SchedulingSystem.Get(); if (scheduleable is Player) { IsPlayerTurn = true; Game.SchedulingSystem.Add(Game.Player); } else if (scheduleable is Npc) { Npc Npc = scheduleable as Npc; if (Npc != null) { Npc.PerformAction(this); Game.SchedulingSystem.Add(Npc); } ActivateMonsters(); } else { Monster monster = scheduleable as Monster; if (monster != null) { monster.PerformAction(this); Game.SchedulingSystem.Add(monster); } ActivateMonsters(); } }
//this removes an object from the schedule //used too remove a monsters schedule after it is killed etc public void Remove(IScheduleable scheduleable) { //this represents a key in the dictionary which represents a time //we have a list of them because multiple actors can act at the same time KeyValuePair <int, List <IScheduleable> > scheduleableListFound = new KeyValuePair <int, List <IScheduleable> >(-1, null); //for each schedule in the lisr of schedules find this particular schedule foreach (var scheduleableList in _scheduleables) { if (scheduleableList.Value.Contains(scheduleable)) { scheduleableListFound = scheduleableList; break; } } //if the particular schedule is found remove it fom the list of schedules if (scheduleableListFound.Value != null) { scheduleableListFound.Value.Remove(scheduleable); if (scheduleableListFound.Value.Count <= 0) { _scheduleables.Remove(scheduleableListFound.Key); } } }
public void ActivateMonsters(int mapId, int playerId) { var player = this.mappingService.GetPlayerDtoById(playerId); var map = this.mappingService.GetDungeonDtoById(mapId); IScheduleable scheduleable = this.schedulingSystem.Get(); if (scheduleable is PlayerDTO) { this.IsPlayerTurn = true; this.schedulingSystem.Add(scheduleable); } else { var monsterDto = scheduleable as MonsterDTO; if (monsterDto != null) { var behavior = new StandardMoveAndAttack(); behavior.Act(monsterDto, map, player, this); this.schedulingSystem.Add(monsterDto); } this.ActivateMonsters(1, 1); } }
public void ActivateMonsters() { IScheduleable scheduleable = game.SchedulingSystem.Get(); if (scheduleable is Player) { IsPlayerTurn = true; game.SchedulingSystem.Add(game.Player); } else { Monster monster = scheduleable as Monster; if (monster != null) { do { monster.PerformAction(this); monster.MovesCompleted++; }while (monster.MovesCompleted < monster.Moves); monster.MovesCompleted = 0; game.SchedulingSystem.Add(monster); } ActivateMonsters(); } }
/// <summary> /// Add a new object to the schedule. Place it at the current time plus the object's Time property. /// </summary> /// <param name="scheduleable"></param> public void Add(IScheduleable scheduleable) { int key = time + scheduleable.Time; if (!scheduleables.ContainsKey(key)) { scheduleables.Add(key, new List<IScheduleable>()); } scheduleables[key].Add(scheduleable); }
// Add a new action to the schedule // Place it at the current time plus its Time property public void Add(IScheduleable scheduleable) { int key = _time + scheduleable.Time; if (!_schedule.ContainsKey(key)) { _schedule.Add(key, new List <IScheduleable>()); } _schedule[key].Add(scheduleable); }
public void Add(IScheduleable scheduleable, int extratime) { int key = time + scheduleable.Time + extratime; if (!scheduleables.ContainsKey(key)) { scheduleables.Add(key, new List <IScheduleable>()); } (scheduleables[key] as List <IScheduleable>).Add(scheduleable); }
// Add a new object to the schedule // Place it at the current time plus the object's Time property. public void Add(IScheduleable scheduleable) { int key = Time + scheduleable.Time; if (!SCHEDULEABLES.ContainsKey(key)) { SCHEDULEABLES.Add(key, new List <IScheduleable>()); } SCHEDULEABLES[key].Add(scheduleable); }
// Add a new object to the schedule. Place it at the current time plus the object's Time property. public void Add(IScheduleable actor) { int key = _time + actor.Time; if (!_scheduleables.ContainsKey(key)) { _scheduleables.Add(key, new List <IScheduleable>()); } _scheduleables[key].Add(actor); }
public Boolean Contains(IScheduleable scheduleable) { foreach (var scheduleablesList in SCHEDULEABLES) { if (scheduleablesList.Value.Contains(scheduleable)) { return(true); } } return(false); }
public void Add(IScheduleable scheduleable) { //put object in the schedule for the current time plus its speed int key = _time + scheduleable.Time; if (!_scheduleables.ContainsKey(key)) { _scheduleables.Add(key, new List <IScheduleable>()); } _scheduleables[key].Add(scheduleable); }
//this adds a new object too the schedule //we place it at the current time plus the objects time property public void Add(IScheduleable scheduleable) { //gets the key time int key = _time + scheduleable.Time; //if the list does not contain a schedule at this time create a new schedule if (!_scheduleables.ContainsKey(key)) { _scheduleables.Add(key, new List <IScheduleable>()); } //add this schedule too the list of schedules at this time _scheduleables[key].Add(scheduleable); }
public void ActivateMonsters () { IScheduleable scheduleable = game.SchedulingSystem.Get (); if (scheduleable is Player) { IsPlayerTurn = true; game.SchedulingSystem.Add (game.Player); } else { Monster monster = scheduleable as Monster; if (monster != null) { monster.PerformAction (this); game.SchedulingSystem.Add (monster); } ActivateMonsters (); } }
public void ActivateMonsters() { IScheduleable scheduleable = Game.SchedulingSystem.Get(); if (scheduleable is Player) { IsPlayerTurn = true; Game.SchedulingSystem.Add(Game.Player); } else { if (scheduleable is Monster monster) { monster.PerformAction(this); Game.SchedulingSystem.Add(monster); } ActivateMonsters(); } }
public void Remove(IScheduleable scheduleable) { DictionaryEntry scheduleableListFound = new DictionaryEntry(); foreach (DictionaryEntry scheduleableList in scheduleables) { if (((scheduleableList).Value as List <IScheduleable>).Contains(scheduleable)) { scheduleableListFound = (DictionaryEntry)scheduleableList; break; } } if (scheduleableListFound.Value != null) { (scheduleableListFound.Value as List <IScheduleable>).Remove(scheduleable); if ((scheduleableListFound.Value as List <IScheduleable>).Count <= 0) { scheduleables.Remove(scheduleableListFound.Key); } } }
/// <summary> /// Remove a specific object from the schedule. Useful for when an monster is killed to remove it before it's action comes up again. /// </summary> /// <param name="scheduleable"></param> public void Remove(IScheduleable scheduleable) { KeyValuePair <int, List <IScheduleable> > scheduleableListFound = new KeyValuePair <int, List <IScheduleable> >(-1, null); foreach (var scheduleablesList in scheduleables) { if (scheduleablesList.Value.Contains(scheduleable)) { scheduleableListFound = scheduleablesList; break; } } if (scheduleableListFound.Value != null) { scheduleableListFound.Value.Remove(scheduleable); if (scheduleableListFound.Value.Count <= 0) { scheduleables.Remove(scheduleableListFound.Key); } } }
public void ActivateMonsters() { IScheduleable scheduleable = Game.SchedulingSystem.Get(); if (scheduleable is Player) { IsPlayerTurn = true; Game.SchedulingSystem.Add(GameWorld.DungeonScreen.MapConsole.Player); } else { Monster monster = scheduleable as Monster; if (monster != null) { monster.PerformAction(); Game.SchedulingSystem.Add(monster); } ActivateMonsters(); } }
public void ActivateEnemies() { IScheduleable scheduleable = game.SchedulingSystem.Get(); if (scheduleable is Player) { IsPlayerTurn = true; game.SchedulingSystem.Add(game.Player); } else { Enemy enemy = scheduleable as Enemy; if (enemy != null) { enemy.PerformAction(this); game.SchedulingSystem.Add(enemy); } ActivateEnemies(); } }
public static void ActivateMonsters(SchedulingSystem schedule) { IScheduleable scheduleable = schedule.Get(); if (scheduleable is Player) { IsPlayerTurn = true; schedule.Add(Game.Player); } else { Monster monster = scheduleable as Monster; if (monster != null) { monster.PerformAction(); schedule.Add(monster); } ActivateMonsters(schedule); } }
/// <summary> /// Удалить объект из планировщика. Полезно в случае смерти врага, /// чтобы предотвратить запланированную последовательность действий. /// </summary> public void Remove(IScheduleable scheduleable) { KeyValuePair <int, List <IScheduleable> > schedule = new KeyValuePair <int, List <IScheduleable> >(-1, null); foreach (var _schedule in scheduleableList) { if (_schedule.Value.Contains(scheduleable)) { schedule = _schedule; break; } } if (schedule.Value != null) { schedule.Value.Remove(scheduleable); if (schedule.Value.Count <= 0) { scheduleableList.Remove(schedule.Key); } } }
//activate monsters puts monsters into a scheduled list public void ActivateMonsters() { IScheduleable scheduleable = Game.SchedulingSystem.Get(); //if the object being scheduled is a player //set player the player turn too true and add the player too the scheduling system if (scheduleable is Player) { IsPlayerTurn = true; Game.SchedulingSystem.Add(Game.player); } else { //if the object being scheduled is a monster Monster monster = scheduleable as Monster; if (monster != null) { monster.PerformAction(this); Game.SchedulingSystem.Add(monster); } ActivateMonsters(); } }
protected void AddToScheduling(IScheduleable scheduleable) { GameController.SchedulingSystem.Add(scheduleable); }