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];
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; } }); }