Beispiel #1
0
        public LevelModule Instantiate(GameLevelRecord record)
        {
            var module = new LevelModule();

            module.AddModule <TimeModule>();
            module.AddModule <InputModule>();
            module.AddModule <PlayerModule>()
            .SetPlayer <Player>()
            .SetValue(CharacterProperty.Speed, 1f)
            .SetValue(CharacterProperty.Life, 1)
            .SetValue(CharacterProperty.DiggingSpeed, 1f);

            module.AddModule <DiggingModule>();
            module.AddModule <TeleportModule>().Set(record.Teleports);
            module.AddModule <CellModule>().Set(record.Size, record.Cells);
            module.AddModule <GuardModule>().Set(record.Guards, record.GuardRespawn, record.GuardRespawnTime);
            module.AddModule <StateModule>();
            module.AddModule <CoinModule>().Set(record.GoldGhests);
            module.AddModule <SpellModule>()
            .Add <SpeedUpSpell>()
            .Add <SpeedDownSpell>()
            .Add <DiggingSpell>();


            return(module);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            var module = new LevelModule();

            module.AddModule <TimeModule>();
            module.AddModule <InputModule>();
            module.AddModule <PlayerModule>()
            .SetPlayer <Player>()
            .SetValue(CharacterProperty.Speed, 1f)
            .SetValue(CharacterProperty.Life, 1)
            .SetValue(CharacterProperty.DiggingSpeed, 1f);

            module.AddModule <CellModule>();
            module.AddModule <EventDispatcherModule>().EVENT += OnEvent;
            module.AddModule <GuardModule>();
            module.AddModule <StateModule>();
            module.AddModule <CoinModule>();
            module.AddModule <SpellModule>()
            .Add <SpeedUpSpell>()
            .Add <SpeedDownSpell>()
            .Add <DiggingSpell>();


            module.Initialize();

            ThreadPool.QueueUserWorkItem((s) =>
            {
                while (true)
                {
                    lock (Sync)
                    {
                        module.Tick();
                    }
                    Thread.Sleep(100);
                }
            });

            while (true)
            {
                var key = Console.ReadKey(true);
                lock (Sync)
                {
                    switch (key.Key)
                    {
                    case ConsoleKey.LeftArrow:
                        module.GetModule <InputModule>().Input(new Input {
                            Type = InputType.Move, Action = InputAction.MoveLeft
                        });
                        break;

                    case ConsoleKey.RightArrow:
                        module.GetModule <InputModule>().Input(new Input {
                            Type = InputType.Move, Action = InputAction.MoveRight
                        });
                        break;

                    case ConsoleKey.UpArrow:
                        module.GetModule <InputModule>().Input(new Input {
                            Type = InputType.Move, Action = InputAction.MoveUp
                        });
                        break;

                    case ConsoleKey.DownArrow:
                        module.GetModule <InputModule>().Input(new Input {
                            Type = InputType.Move, Action = InputAction.MoveDown
                        });
                        break;

                    case ConsoleKey.Z:
                        module.GetModule <InputModule>().Input(new Input {
                            Type = InputType.Move, Action = InputAction.DigLeft
                        });
                        break;

                    case ConsoleKey.X:
                        module.GetModule <InputModule>().Input(new Input {
                            Type = InputType.Move, Action = InputAction.DigRight
                        });
                        break;

                    case ConsoleKey.Escape:
                        var state = module.GetModule <StateModule>();
                        if (state.IsPause)
                        {
                            state.Resume();
                        }
                        else
                        {
                            state.Pause();
                        }
                        break;
                    }
                }
            }
        }