コード例 #1
0
        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();
            }
        }
コード例 #2
0
        // 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);
                }
            }
        }
コード例 #3
0
ファイル: Timeline.cs プロジェクト: Noutaja/roguelike-project
        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);
            }
        }
コード例 #4
0
ファイル: Timeline.cs プロジェクト: Noutaja/roguelike-project
        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);
                }
            }
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
        //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);
                }
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
    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();
        }
    }
コード例 #10
0
 /// <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);
 }
コード例 #11
0
        // 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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        // 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);
        }
コード例 #14
0
        // 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);
        }
コード例 #15
0
 public Boolean Contains(IScheduleable scheduleable)
 {
     foreach (var scheduleablesList in SCHEDULEABLES)
     {
         if (scheduleablesList.Value.Contains(scheduleable))
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #16
0
        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);
        }
コード例 #17
0
        //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);
        }
コード例 #18
0
		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 ();
			}
		}
コード例 #19
0
        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();
            }
        }
コード例 #20
0
        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);
                }
            }
        }
コード例 #21
0
        /// <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);
                }
            }
        }
コード例 #22
0
        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();
            }
        }
コード例 #23
0
        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();
            }
        }
コード例 #24
0
        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);
            }
        }
コード例 #25
0
        /// <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);
                }
            }
        }
コード例 #26
0
ファイル: CommandSystem.cs プロジェクト: S00185812/First_Game
        //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();
            }
        }
コード例 #27
0
 protected void AddToScheduling(IScheduleable scheduleable)
 {
     GameController.SchedulingSystem.Add(scheduleable);
 }