Example #1
0
        public override void Initialize(object[] parameters)
        {
            CellularAutomataInitializationData initializationData;

            if (parameters.Length > 0 && parameters[0] is CellularAutomataInitializationData)
            {
                initializationData = parameters[0] as CellularAutomataInitializationData;
            }
            else
            {
                initializationData = new CellularAutomataInitializationData(0, 100, true, NeighbourhoodMode.Moore);
            }

            CellCount         = initializationData.CellCount;
            IsTorus           = initializationData.IsTorus;
            NeighbourhoodMode = initializationData.NeighbourhoodMode;
            Seed           = initializationData.Seed == 0 ? new Random().Next() : initializationData.Seed;
            this.random    = new Random(Seed);
            needGeneration = !initializationData.IsReadOnly();

            sprite = GameObject.GetComponent <Sprite>();
            sprite.SetTexture(GraphicsHandler.CreateDefaultTexture(CellCount, CellCount, Color.WHITE));
            this.dataImage1 = new Bitmap(CellCount, CellCount);
            this.dataImage2 = new Bitmap(CellCount, CellCount);

            isPaused = true;

            this.grid = new CellularAutomataCell[CellCount, CellCount];
            InitializeGrid(initializationData.CellData);

            InputHandler.AddKeyUpEventHandler((key, modifiers) => {
                if (key == ExitKey)
                {
                    ModBase.Instance.Shutdown();
                }
                else if (key == PauseKey)
                {
                    isPaused = !isPaused;
                }
            });
        }