示例#1
0
    public void Initialize(MasterSystem masterSystem)
    {
        this.masterSystem = masterSystem;
        foreach (var cor in corridors)
        {
            Assert.IsTrue(cor is Corridor);
        }

        AssertRoomDataIsInitialized(mainRoomBlueprint);
        foreach (var room in rooms)
        {
            AssertRoomDataIsInitialized(room);
        }
        foreach (var room in level2Rooms)
        {
            AssertRoomDataIsInitialized(room);
        }
        foreach (var corridor in corridors)
        {
            AssertRoomDataIsInitialized(corridor);
        }

        mainRoom = Instantiate(mainRoomBlueprint);
        ResetState();

        masterSystem.OnSceneManagersInitialized += MasterSystemOnOnSceneManagersInitialized;
    }
示例#2
0
 public override void Init(MasterSystem masterSystem, SceneManagerData data)
 {
     base.Init(masterSystem, data);
     data.playerController.InitializeUIManager(this);
     foreach (var panel in uiPanels)
     {
         panel.Initialize(masterSystem);
     }
     ChangeInitializationState(ManagerInitializationState.COMPLETED);
 }
示例#3
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage: elbsms_console <path to rom>");
                return;
            }

            string romPath = args[0];

            var masterSystem = new MasterSystem();

            var cartridge = GameMedia.LoadFromFile(romPath, GameMediaType.Cartridge);

            masterSystem.Initialise();
            masterSystem.LoadGameMedia(cartridge);

            Console.WriteLine($"Starting: {DateTime.Now}");
            Console.WriteLine();

            ulong instructionCount = 0;

            var sw = Stopwatch.StartNew();

            try
            {
                while (true)
                {
                    instructionCount++;
                    masterSystem.SingleStep();
                }
            }
            catch (InfiniteLoopException)
            {
            }
            catch (NotImplementedException ex)
            {
                Console.WriteLine(ex.Message);
            }

            sw.Stop();

            masterSystem.Shutdown();

            var cyclesExecuted = masterSystem.Clock.Timestamp;
            var effectiveClock = cyclesExecuted / (sw.ElapsedMilliseconds / 1000.0);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine($"Finished: {DateTime.Now}");
            Console.WriteLine($"Elapsed: {sw.ElapsedMilliseconds}ms Instructions: {instructionCount:N0}, Instructions/ms: {instructionCount / (double)sw.ElapsedMilliseconds}, Effective Clock: {FormatFrequency(effectiveClock)}");
        }
    public override void Init(MasterSystem masterSystem, SceneManagerData data)
    {
        base.Init(masterSystem, data);

        CollectSceneEntities();
        foreach (var entity in entites)
        {
            if (entity == null)
            {
                Debug.LogError("[EntitySceneManager]: one of the entities is null");
                return;
            }

            InitEntity(entity);
        }

        ChangeInitializationState(ManagerInitializationState.COMPLETED);
    }
示例#5
0
    public override void Init(MasterSystem masterSystem, SceneManagerData data)
    {
        base.Init(masterSystem, data);

        projectileManager = masterSystem.TryGetManager <ProjectileManager>(SceneManagerType.Projectile);
        if (projectileManager == null)
        {
            Debug.LogError("[ItemSceneSystem]: tried to get projectileManager but it wasn't initialized");
            return;
        }

        CollectSceneItems();
        foreach (var item in items)
        {
            item.Initialize(data.player, data.playerController, projectileManager);
        }

        ChangeInitializationState(ManagerInitializationState.COMPLETED);
    }
示例#6
0
    public override void Init(MasterSystem masterSystem, SceneManagerData data)
    {
        base.Init(masterSystem, data);

        projectiles = new Dictionary <ProjectileType, GameObject>();
        for (int i = 0; i < projectileGameObjects.Length; i++)
        {
            var p = projectileGameObjects[i];
            var projectileComponent = p.GetComponent <Projectile>();
            if (projectileComponent == null)
            {
                Debug.LogError("[ProjectileManager]: projectile component not found in game object");
                ChangeInitializationState(ManagerInitializationState.FAILED);
                return;
            }

            for (int j = 0; j < projectileGameObjects.Length; j++)
            {
                if (i == j)
                {
                    continue;
                }

                var otherProjectileComponent = projectileGameObjects[j].GetComponent <Projectile>();
                if (otherProjectileComponent == null)
                {
                    continue;
                }

                if (projectileComponent.Type() == otherProjectileComponent.Type())
                {
                    Debug.LogError($"[ProjectileManager]: two projectiles with same projectile type found '{projectileComponent.Type().ToString()}' - this should not happen");
                    ChangeInitializationState(ManagerInitializationState.FAILED);
                    return;
                }
            }
            projectiles.Add(projectileComponent.Type(), p);
        }

        ChangeInitializationState(ManagerInitializationState.COMPLETED);
    }
示例#7
0
 public virtual void Init(MasterSystem masterSystem, SceneManagerData data)
 {
     initializationState = ManagerInitializationState.IN_PROGRESS;
     this.data           = data;
 }
示例#8
0
 public void Initialize(MasterSystem masterSystem) => _masterSystem = masterSystem;