Example #1
0
        public static CellularAutomataInitializationData Load(string file, CellularAutomataStateLoadingParameters loadingParameters)
        {
            INIData           iniData     = INIReader.Read(file);
            int               seed        = iniData.GetInt("Seed", "Initialization");
            bool              isTorus     = iniData.GetBool("IsTorus", "Initialization");
            string            nbhMode_raw = iniData.GetString("NeighbourhoodMode", "Initialization");
            NeighbourhoodMode nbhMode     = (NeighbourhoodMode)Enum.Parse(typeof(NeighbourhoodMode), nbhMode_raw);
            bool              hasData     = iniData.GetBool("HasData", "Initialization");
            int               cellCount   = iniData.GetInt("CellCount", "Initialization");

            if (!hasData)
            {
                return(new CellularAutomataInitializationData(seed, cellCount, isTorus, nbhMode));
            }

            (long state, float stateValue)[,] cellData = new(long state, float stateValue)[cellCount, cellCount];
Example #2
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;
                }
            });
        }