예제 #1
0
        static void Main(string[] args)
        {
            var screen = new ScreenConfig(8, 8);
            var debug  = new DebugConfig(updateTime: 0.15f, maxLogSize: 20);
            var config = ConfigurationLoader.Load(ArgumentSet.Parse(args));
            var root   = new CompositionRoot(
                screen,
                debug,
                config,
                () => new ReadConsoleReadInputSystem(),
                new Func <ISystem>[] {
                () => new ConsoleTriggerSystem(debug),
                () => new ConsoleClearSystem(),
                () => new ConsoleRenderSystem(screen),
                () => new ConsoleLogSystem()
            },
                () => new FinishFrameRealTimeSystem(),
                () => new DeviceRenderSystem(screen, new DeviceRenderConfig(172)));

            var(entities, systems) = root.Create();
            systems.Init(entities);
            systems.UpdateLoop(entities);
            Console.WriteLine($"Your score is: {entities.GetFirstComponent<ScoreState>()?.TotalScore}");
            Console.WriteLine($"Time: {entities.GetFirstComponent<TimeState>().UnscaledTotalTime:0.00}");
            if (config.IsReplayRecord)
            {
                var replay = entities.GetFirstComponent <InputRecordState>();
                replay.Save(config.NewReplayPath);
            }
        }
예제 #2
0
        void Create()
        {
            InputRecordConfig replayRecord = null;

            if (ReplayShow)
            {
                var replayAsset = Resources.Load <TextAsset>(ReplayPath);
                var lines       = replayAsset.text.Split('\n').Where(l => !string.IsNullOrWhiteSpace(l)).ToArray();
                replayRecord = new InputRecordConfig(lines);
            }
            var screen = new ScreenConfig(8, 8);
            var config = new Configuration(ReplayRecord, replayRecord, null, RandomSeed, FixedFrameTime);
            var root   = new CompositionRoot(
                screen,
                null,
                config,
                () => new ReadUnityInputSystem(new Dictionary <UnityEngine.KeyCode, KeyCode> {
                { UnityEngine.KeyCode.LeftArrow, KeyCode.LeftArrow },
                { UnityEngine.KeyCode.RightArrow, KeyCode.RightArrow },
                { UnityEngine.KeyCode.Space, KeyCode.Spacebar }
            }),
                new Func <ISystem> [0],
                () => new ReadUnityRealTimeSystem(),
                () => new UnityRenderSystem(screen, Renderer));

            (_entities, _systems) = root.Create();
        }