├── .gitattributes ├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── LICENSE ├── README.md ├── RsMapper.sln ├── RsMapper ├── App.config ├── ComponentTile.cs ├── Components.json ├── CursorControlLocate.cs ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Forms │ ├── AboutBox1.Designer.cs │ ├── AboutBox1.cs │ ├── AboutBox1.resx │ ├── CommandEnter.Designer.cs │ ├── CommandEnter.cs │ ├── CommandEnter.resx │ ├── Controls │ │ ├── DrawPanel.cs │ │ └── NNPictureBox.cs │ ├── CreateCustomMod.Designer.cs │ ├── CreateCustomMod.cs │ ├── CreateCustomMod.resx │ ├── DownloadProgress.Designer.cs │ ├── DownloadProgress.cs │ ├── DownloadProgress.resx │ ├── Modpacks.Designer.cs │ ├── Modpacks.cs │ ├── Modpacks.resx │ ├── UnsavedDialog.Designer.cs │ ├── UnsavedDialog.cs │ ├── UnsavedDialog.resx │ ├── UpdateCheck.Designer.cs │ ├── UpdateCheck.cs │ └── UpdateCheck.resx ├── Imgs │ ├── Door.png │ ├── RS_Block.png │ ├── RS_Button.png │ ├── RS_Chest.png │ ├── RS_Command.png │ ├── RS_Comparator.png │ ├── RS_DaySensor.png │ ├── RS_Dispenser.png │ ├── RS_Dropper.png │ ├── RS_GoldBlock.png │ ├── RS_Hopper.png │ ├── RS_Lamp.png │ ├── RS_Observer.png │ ├── RS_Piston.png │ ├── RS_PressurePlate.png │ ├── RS_Repeater.png │ ├── RS_SPiston.png │ ├── RS_TChest.png │ ├── RS_Target.png │ ├── RS_Torch.png │ ├── RsMapper │ │ └── icon.png │ ├── TDoor.png │ ├── TNT.png │ ├── Wires │ │ ├── RS_TDown.png │ │ ├── RS_TLeft.png │ │ ├── RS_TRight.png │ │ ├── RS_TUp.png │ │ ├── RS_WireCross.png │ │ ├── RS_WireDot.png │ │ ├── RS_WireDownLeft.png │ │ ├── RS_WireDownRight.png │ │ ├── RS_WireHoriz.png │ │ ├── RS_WireUpLeft.png │ │ ├── RS_WireUpRight.png │ │ └── RS_WireVert.png │ ├── arail.png │ ├── drail.png │ ├── lightning_rod.png │ ├── nrail_bend.png │ ├── nrail_straight.png │ ├── prail.png │ └── slime_block.png ├── PrgmSelfCheck.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── RsComponent.cs ├── RsMapper.csproj ├── icon_0uP_icon.ico ├── imgs.Designer.cs ├── imgs.resx └── packages.config └── docs ├── _config.yml └── index.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RsMapper 2 | 3 | [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/GreenJamesDev/RsMapper/issues) 4 | [![HitCount](http://hits.dwyl.com/GreenJamesDev/RsMapper.svg)](http://hits.dwyl.com/GreenJamesDev/RsMapper) 5 | 6 | An open-source redstone circuit planning and designing tool. 7 | 8 | ![](https://i.imgur.com/rNrQvSC.png) 9 | 10 | ## Features 11 | 12 | ### Custom Parts and Modpacks 13 | Custom components can be created directly from within RsMapper using the modpack creator. Modpacks can be easily installed from .rsmp Modpack files. 14 | 15 | ### Automatically Check for Updates 16 | Once installed, you'll never have to manually visit the download page again just to update the program! 17 | 18 | ### Self Repair 19 | RsMapper can redownload Components.json if it's missing. 20 | 21 | ### More on the way! 22 | Many other features are planned! 23 | 24 | ![](https://i.imgur.com/4ZdnxMI.png) 25 | -------------------------------------------------------------------------------- /RsMapper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30114.105 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RsMapper", "RsMapper\RsMapper.csproj", "{F96B009A-9D79-49C9-9F1C-4460AB2BD132}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {F96B009A-9D79-49C9-9F1C-4460AB2BD132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {F96B009A-9D79-49C9-9F1C-4460AB2BD132}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {F96B009A-9D79-49C9-9F1C-4460AB2BD132}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {F96B009A-9D79-49C9-9F1C-4460AB2BD132}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {BEA95712-90A3-4C71-A18D-9C55AAFDA68A} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /RsMapper/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RsMapper/ComponentTile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace RsMapper 9 | { 10 | class ComponentTile 11 | { 12 | public string name; 13 | public Image Image; 14 | public string info; 15 | public bool acceptsWire; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /RsMapper/Components.json: -------------------------------------------------------------------------------- 1 | { 2 | // Component Settings File 3 | // ----------------------- 4 | // name - Name of component. 5 | // type - (Input, Output, Inline, Logic, Misc) Group of the component. 6 | // image - Image representing the component in the GUI. 7 | // info - Text to be shown in a tooltip box. 8 | // acceptswire - Does redstone wire connect to this component by itself? 9 | "RsComponents": [ 10 | 11 | { 12 | 13 | "name": "Redstone Lamp", 14 | "type": "Output", 15 | "image": "\\Imgs\\RS_Lamp.png", 16 | "info": "A light-emitting block powered by redstone.", 17 | "acceptswire": "no" 18 | 19 | }, 20 | 21 | { 22 | 23 | "name": "Redstone Torch", 24 | "type": "Input", 25 | "image": "\\Imgs\\RS_Torch.png", 26 | "info": "A signal-emitting torch that can also be used for logic.", 27 | "acceptswire": "yes" 28 | 29 | }, 30 | 31 | { 32 | 33 | "name": "Redstone Block", 34 | "type": "Input", 35 | "image": "\\Imgs\\RS_Block.png", 36 | "info": "A mineral block that always emits a signal.", 37 | "acceptswire": "yes" 38 | 39 | }, 40 | 41 | { 42 | 43 | "name": "Button", 44 | "type": "Input", 45 | "image": "\\Imgs\\RS_Button.png", 46 | "info": "Emits a signal for 1.5 seconds when pressed by the player.", 47 | "acceptswire": "yes" 48 | 49 | }, 50 | 51 | { 52 | 53 | "name": "Target", 54 | "type": "Input", 55 | "image": "\\Imgs\\RS_Target.png", 56 | "info": "A block that emits a signal when hit with a projectile.", 57 | "acceptswire": "yes" 58 | 59 | }, 60 | 61 | { 62 | 63 | "name": "TNT", 64 | "type": "Output", 65 | "image": "\\Imgs\\TNT.png", 66 | "info": "Explodes when ignited or recives a redstone signal.", 67 | "acceptswire": "no" 68 | 69 | }, 70 | 71 | { 72 | 73 | "name": "Daylight Sensor", 74 | "type": "Input", 75 | "image": "\\Imgs\\RS_DaySensor.png", 76 | "info": "Emits a signal when it becomes day or night.", 77 | "acceptswire": "yes" 78 | 79 | }, 80 | 81 | { 82 | 83 | "name": "Repeater", 84 | "type": "Inline", 85 | "image": "\\Imgs\\RS_Repeater.png", 86 | "info": "Delays and strengthens signals. Prevents signals from going two ways.", 87 | "acceptswire": "yes" 88 | 89 | }, 90 | 91 | { 92 | 93 | "name": "Comparator", 94 | "type": "Logic", 95 | "image": "\\Imgs\\RS_Comparator.png", 96 | "info": "Compares the strength of signals.", 97 | "acceptswire": "yes" 98 | 99 | }, 100 | 101 | { 102 | 103 | "name": "Observer", 104 | "type": "Input", 105 | "image": "\\Imgs\\RS_Observer.png", 106 | "info": "Emits a signal when a block state changes.", 107 | "acceptswire": "yes" 108 | 109 | }, 110 | 111 | { 112 | 113 | "name": "Command Block", 114 | "type": "Logic", 115 | "image": "\\Imgs\\RS_Command.png", 116 | "info": "Executes commands entered by the player.", 117 | "acceptswire": "no" 118 | 119 | }, 120 | 121 | { 122 | 123 | "name": "Dispenser", 124 | "type": "Output", 125 | "image": "\\Imgs\\RS_Dispenser.png", 126 | "info": "Dispenses items.", 127 | "acceptswire": "no" 128 | 129 | }, 130 | 131 | { 132 | 133 | "name": "Dropper", 134 | "type": "Output", 135 | "image": "\\Imgs\\RS_Dropper.png", 136 | "info": "Drops items.", 137 | "acceptswire": "no" 138 | 139 | }, 140 | 141 | { 142 | 143 | "name": "Chest", 144 | "type": "Misc", 145 | "image": "\\Imgs\\RS_Chest.png", 146 | "info": "Holds items.", 147 | "acceptswire": "no" 148 | 149 | }, 150 | 151 | { 152 | 153 | "name": "Trapped Chest", 154 | "type": "Input", 155 | "image": "\\Imgs\\RS_TChest.png", 156 | "info": "A chest that emits a signal when its contents change.", 157 | "acceptswire": "no" 158 | 159 | }, 160 | 161 | { 162 | 163 | "name": "Pressure Plate", 164 | "type": "Input", 165 | "image": "\\Imgs\\RS_PressurePlate.png", 166 | "info": "Emits a signal when walked on.", 167 | "acceptswire": "no" 168 | 169 | }, 170 | 171 | { 172 | 173 | "name": "Gold Block", 174 | "type": "Misc", 175 | "image": "\\Imgs\\RS_GoldBlock.png", 176 | "info": "A block of nine gold ingots.", 177 | "acceptswire": "no" 178 | 179 | }, 180 | 181 | { 182 | 183 | "name": "Hopper", 184 | "type": "Misc", 185 | "image": "\\Imgs\\RS_Hopper.png", 186 | "info": "Transports items from block to block.", 187 | "acceptswire": "no" 188 | 189 | }, 190 | 191 | { 192 | 193 | "name": "Piston", 194 | "type": "Output", 195 | "image": "\\Imgs\\RS_Piston.png", 196 | "info": "Pushes blocks", 197 | "acceptswire": "no" 198 | 199 | }, 200 | 201 | { 202 | 203 | "name": "Sticky Piston", 204 | "type": "Output", 205 | "image": "\\Imgs\\RS_SPiston.png", 206 | "info": "Pushes and pulls blocks.", 207 | "acceptswire": "no" 208 | 209 | }, 210 | 211 | { 212 | 213 | "name": "Door", 214 | "type": "Output", 215 | "image": "\\Imgs\\Door.png", 216 | "info": "Used to keep mobs out of an area.", 217 | "acceptswire": "no" 218 | 219 | }, 220 | 221 | { 222 | 223 | "name": "Trap Door", 224 | "type": "Output", 225 | "image": "\\Imgs\\TDoor.png", 226 | "info": "A one block tall door.", 227 | "acceptswire": "no" 228 | 229 | }, 230 | 231 | { 232 | 233 | "name": "Lightning Rod", 234 | "type": "Input", 235 | "image": "\\Imgs\\lightning_rod.png", 236 | "info": "Emits a redstone signal when struck by lightning.", 237 | "acceptswire": "no" 238 | 239 | }, 240 | 241 | { 242 | 243 | "name": "Straight Rail", 244 | "type": "Misc", 245 | "image": "\\Imgs\\nrail_straight.png", 246 | "info": "A normal rail.", 247 | "acceptswire": "no" 248 | 249 | }, 250 | 251 | { 252 | 253 | "name": "Curved Rail", 254 | "type": "Misc", 255 | "image": "\\Imgs\\nrail_bend.png", 256 | "info": "A normal rail.", 257 | "acceptswire": "no" 258 | 259 | }, 260 | 261 | { 262 | 263 | "name": "Powered Rail", 264 | "type": "Output", 265 | "image": "\\Imgs\\prail.png", 266 | "info": "A rail that increases or decreases the speed of minecarts.", 267 | "acceptswire": "no" 268 | 269 | }, 270 | 271 | { 272 | 273 | "name": "Activator Rail", 274 | "type": "Output", 275 | "image": "\\Imgs\\arail.png", 276 | "info": "Ejects entities from minecarts, primes TNT minecarts, disables hopper minecarts, and activates command block minecarts.", 277 | "acceptswire": "no" 278 | 279 | }, 280 | 281 | { 282 | 283 | "name": "Detector Rail", 284 | "type": "Input", 285 | "image": "\\Imgs\\drail.png", 286 | "info": "Emits a signal when a minecart is on it.", 287 | "acceptswire": "no" 288 | 289 | }, 290 | 291 | { 292 | 293 | "name": "Slime Block", 294 | "type": "Misc", 295 | "image": "\\Imgs\\slime_block.png", 296 | "info": "Moves adjacent blocks when pushed or pulled by a piston.", 297 | "acceptswire": "no" 298 | 299 | } 300 | ] 301 | } 302 | -------------------------------------------------------------------------------- /RsMapper/CursorControlLocate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Drawing; 8 | using RsMapper.Forms.Controls; 9 | 10 | namespace RsMapper 11 | { 12 | class CursorControlLocate 13 | { 14 | public static Control FindControlAtPoint(Control container, Point pos) 15 | { 16 | Control child; 17 | foreach (Control c in container.Controls) 18 | { 19 | if (c.Visible && c.Bounds.Contains(pos)) 20 | { 21 | child = FindControlAtPoint(c, new Point(pos.X - c.Left, pos.Y - c.Top)); 22 | if (child == null) return c; 23 | else return child; 24 | } 25 | } 26 | return null; 27 | } 28 | 29 | public static Control FindControlAtCursor(DrawPanel dp) 30 | { 31 | Point pos = Cursor.Position; 32 | if (dp.Bounds.Contains(pos)) 33 | return FindControlAtPoint(dp, dp.PointToClient(pos)); 34 | return null; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /RsMapper/Forms/AboutBox1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RsMapper.Forms 2 | { 3 | partial class AboutBox1 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | protected override void Dispose(bool disposing) 14 | { 15 | if (disposing && (components != null)) 16 | { 17 | components.Dispose(); 18 | } 19 | base.Dispose(disposing); 20 | } 21 | 22 | #region Windows Form Designer generated code 23 | 24 | /// 25 | /// Required method for Designer support - do not modify 26 | /// the contents of this method with the code editor. 27 | /// 28 | private void InitializeComponent() 29 | { 30 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox1)); 31 | this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); 32 | this.logoPictureBox = new System.Windows.Forms.PictureBox(); 33 | this.labelProductName = new System.Windows.Forms.Label(); 34 | this.labelVersion = new System.Windows.Forms.Label(); 35 | this.labelCopyright = new System.Windows.Forms.Label(); 36 | this.labelCompanyName = new System.Windows.Forms.Label(); 37 | this.textBoxDescription = new System.Windows.Forms.TextBox(); 38 | this.okButton = new System.Windows.Forms.Button(); 39 | this.tableLayoutPanel.SuspendLayout(); 40 | ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); 41 | this.SuspendLayout(); 42 | // 43 | // tableLayoutPanel 44 | // 45 | this.tableLayoutPanel.ColumnCount = 2; 46 | this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F)); 47 | this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F)); 48 | this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0); 49 | this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0); 50 | this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1); 51 | this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2); 52 | this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3); 53 | this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4); 54 | this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5); 55 | this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; 56 | this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9); 57 | this.tableLayoutPanel.Name = "tableLayoutPanel"; 58 | this.tableLayoutPanel.RowCount = 6; 59 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); 60 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); 61 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); 62 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); 63 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); 64 | this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); 65 | this.tableLayoutPanel.Size = new System.Drawing.Size(417, 265); 66 | this.tableLayoutPanel.TabIndex = 0; 67 | // 68 | // logoPictureBox 69 | // 70 | this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; 71 | this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); 72 | this.logoPictureBox.Location = new System.Drawing.Point(3, 3); 73 | this.logoPictureBox.Name = "logoPictureBox"; 74 | this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6); 75 | this.logoPictureBox.Size = new System.Drawing.Size(131, 259); 76 | this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 77 | this.logoPictureBox.TabIndex = 12; 78 | this.logoPictureBox.TabStop = false; 79 | // 80 | // labelProductName 81 | // 82 | this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; 83 | this.labelProductName.Location = new System.Drawing.Point(143, 0); 84 | this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); 85 | this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17); 86 | this.labelProductName.Name = "labelProductName"; 87 | this.labelProductName.Size = new System.Drawing.Size(271, 17); 88 | this.labelProductName.TabIndex = 19; 89 | this.labelProductName.Text = "Product Name"; 90 | this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 91 | // 92 | // labelVersion 93 | // 94 | this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; 95 | this.labelVersion.Location = new System.Drawing.Point(143, 26); 96 | this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); 97 | this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17); 98 | this.labelVersion.Name = "labelVersion"; 99 | this.labelVersion.Size = new System.Drawing.Size(271, 17); 100 | this.labelVersion.TabIndex = 0; 101 | this.labelVersion.Text = "Version"; 102 | this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 103 | // 104 | // labelCopyright 105 | // 106 | this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill; 107 | this.labelCopyright.Location = new System.Drawing.Point(143, 52); 108 | this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); 109 | this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17); 110 | this.labelCopyright.Name = "labelCopyright"; 111 | this.labelCopyright.Size = new System.Drawing.Size(271, 17); 112 | this.labelCopyright.TabIndex = 21; 113 | this.labelCopyright.Text = "Copyright"; 114 | this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 115 | // 116 | // labelCompanyName 117 | // 118 | this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill; 119 | this.labelCompanyName.Location = new System.Drawing.Point(143, 78); 120 | this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); 121 | this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 17); 122 | this.labelCompanyName.Name = "labelCompanyName"; 123 | this.labelCompanyName.Size = new System.Drawing.Size(271, 17); 124 | this.labelCompanyName.TabIndex = 22; 125 | this.labelCompanyName.Text = "Company Name"; 126 | this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 127 | // 128 | // textBoxDescription 129 | // 130 | this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; 131 | this.textBoxDescription.Location = new System.Drawing.Point(143, 107); 132 | this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3); 133 | this.textBoxDescription.Multiline = true; 134 | this.textBoxDescription.Name = "textBoxDescription"; 135 | this.textBoxDescription.ReadOnly = true; 136 | this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; 137 | this.textBoxDescription.Size = new System.Drawing.Size(271, 126); 138 | this.textBoxDescription.TabIndex = 23; 139 | this.textBoxDescription.TabStop = false; 140 | this.textBoxDescription.Text = "Description"; 141 | // 142 | // okButton 143 | // 144 | this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 145 | this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; 146 | this.okButton.Location = new System.Drawing.Point(339, 239); 147 | this.okButton.Name = "okButton"; 148 | this.okButton.Size = new System.Drawing.Size(75, 23); 149 | this.okButton.TabIndex = 24; 150 | this.okButton.Text = "&OK"; 151 | // 152 | // AboutBox1 153 | // 154 | this.AcceptButton = this.okButton; 155 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 156 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 157 | this.ClientSize = new System.Drawing.Size(435, 283); 158 | this.Controls.Add(this.tableLayoutPanel); 159 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 160 | this.MaximizeBox = false; 161 | this.MinimizeBox = false; 162 | this.Name = "AboutBox1"; 163 | this.Padding = new System.Windows.Forms.Padding(9); 164 | this.ShowIcon = false; 165 | this.ShowInTaskbar = false; 166 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 167 | this.Text = "AboutBox1"; 168 | this.tableLayoutPanel.ResumeLayout(false); 169 | this.tableLayoutPanel.PerformLayout(); 170 | ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); 171 | this.ResumeLayout(false); 172 | 173 | } 174 | 175 | #endregion 176 | 177 | private System.Windows.Forms.TableLayoutPanel tableLayoutPanel; 178 | private System.Windows.Forms.PictureBox logoPictureBox; 179 | private System.Windows.Forms.Label labelProductName; 180 | private System.Windows.Forms.Label labelVersion; 181 | private System.Windows.Forms.Label labelCopyright; 182 | private System.Windows.Forms.Label labelCompanyName; 183 | private System.Windows.Forms.TextBox textBoxDescription; 184 | private System.Windows.Forms.Button okButton; 185 | } 186 | } 187 | -------------------------------------------------------------------------------- /RsMapper/Forms/AboutBox1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace RsMapper.Forms 11 | { 12 | partial class AboutBox1 : Form 13 | { 14 | public AboutBox1() 15 | { 16 | InitializeComponent(); 17 | this.Text = String.Format("About {0}", AssemblyTitle); 18 | this.labelProductName.Text = AssemblyProduct; 19 | this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion); 20 | this.labelCopyright.Text = AssemblyCopyright; 21 | this.labelCompanyName.Text = AssemblyCompany; 22 | this.textBoxDescription.Text = AssemblyDescription; 23 | } 24 | 25 | #region Assembly Attribute Accessors 26 | 27 | public string AssemblyTitle 28 | { 29 | get 30 | { 31 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); 32 | if (attributes.Length > 0) 33 | { 34 | AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; 35 | if (titleAttribute.Title != "") 36 | { 37 | return titleAttribute.Title; 38 | } 39 | } 40 | return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); 41 | } 42 | } 43 | 44 | public string AssemblyVersion 45 | { 46 | get 47 | { 48 | return Assembly.GetExecutingAssembly().GetName().Version.ToString(); 49 | } 50 | } 51 | 52 | public string AssemblyDescription 53 | { 54 | get 55 | { 56 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); 57 | if (attributes.Length == 0) 58 | { 59 | return ""; 60 | } 61 | return ((AssemblyDescriptionAttribute)attributes[0]).Description; 62 | } 63 | } 64 | 65 | public string AssemblyProduct 66 | { 67 | get 68 | { 69 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); 70 | if (attributes.Length == 0) 71 | { 72 | return ""; 73 | } 74 | return ((AssemblyProductAttribute)attributes[0]).Product; 75 | } 76 | } 77 | 78 | public string AssemblyCopyright 79 | { 80 | get 81 | { 82 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); 83 | if (attributes.Length == 0) 84 | { 85 | return ""; 86 | } 87 | return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; 88 | } 89 | } 90 | 91 | public string AssemblyCompany 92 | { 93 | get 94 | { 95 | object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); 96 | if (attributes.Length == 0) 97 | { 98 | return ""; 99 | } 100 | return ((AssemblyCompanyAttribute)attributes[0]).Company; 101 | } 102 | } 103 | #endregion 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /RsMapper/Forms/CommandEnter.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RsMapper.Forms 2 | { 3 | partial class CommandEnter 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.button1 = new System.Windows.Forms.Button(); 32 | this.button2 = new System.Windows.Forms.Button(); 33 | this.textBox1 = new System.Windows.Forms.TextBox(); 34 | this.label1 = new System.Windows.Forms.Label(); 35 | this.SuspendLayout(); 36 | // 37 | // button1 38 | // 39 | this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; 40 | this.button1.Location = new System.Drawing.Point(259, 72); 41 | this.button1.Name = "button1"; 42 | this.button1.Size = new System.Drawing.Size(75, 23); 43 | this.button1.TabIndex = 0; 44 | this.button1.Text = "OK"; 45 | this.button1.UseVisualStyleBackColor = true; 46 | this.button1.Click += new System.EventHandler(this.button1_Click); 47 | // 48 | // button2 49 | // 50 | this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel; 51 | this.button2.Location = new System.Drawing.Point(178, 72); 52 | this.button2.Name = "button2"; 53 | this.button2.Size = new System.Drawing.Size(75, 23); 54 | this.button2.TabIndex = 1; 55 | this.button2.Text = "Cancel"; 56 | this.button2.UseVisualStyleBackColor = true; 57 | // 58 | // textBox1 59 | // 60 | this.textBox1.Location = new System.Drawing.Point(12, 46); 61 | this.textBox1.Name = "textBox1"; 62 | this.textBox1.Size = new System.Drawing.Size(322, 20); 63 | this.textBox1.TabIndex = 2; 64 | this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); 65 | // 66 | // label1 67 | // 68 | this.label1.AutoSize = true; 69 | this.label1.Location = new System.Drawing.Point(12, 19); 70 | this.label1.Name = "label1"; 71 | this.label1.Size = new System.Drawing.Size(84, 13); 72 | this.label1.TabIndex = 3; 73 | this.label1.Text = "Enter command:"; 74 | // 75 | // CommandEnter 76 | // 77 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 78 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 79 | this.ClientSize = new System.Drawing.Size(346, 107); 80 | this.ControlBox = false; 81 | this.Controls.Add(this.label1); 82 | this.Controls.Add(this.textBox1); 83 | this.Controls.Add(this.button2); 84 | this.Controls.Add(this.button1); 85 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 86 | this.Name = "CommandEnter"; 87 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 88 | this.Text = "Enter Command"; 89 | this.ResumeLayout(false); 90 | this.PerformLayout(); 91 | 92 | } 93 | 94 | #endregion 95 | 96 | private System.Windows.Forms.Button button1; 97 | private System.Windows.Forms.Button button2; 98 | private System.Windows.Forms.TextBox textBox1; 99 | private System.Windows.Forms.Label label1; 100 | } 101 | } -------------------------------------------------------------------------------- /RsMapper/Forms/CommandEnter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace RsMapper.Forms 12 | { 13 | public partial class CommandEnter : Form 14 | { 15 | 16 | public string Command; 17 | 18 | public CommandEnter(string text) 19 | { 20 | InitializeComponent(); 21 | this.Text = text; 22 | label1.Text = text + ":"; 23 | } 24 | 25 | private void textBox1_TextChanged(object sender, EventArgs e) 26 | { 27 | 28 | } 29 | 30 | private void button1_Click(object sender, EventArgs e) 31 | { 32 | Command = textBox1.Text; 33 | this.Close(); 34 | this.Dispose(); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /RsMapper/Forms/CommandEnter.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RsMapper/Forms/Controls/DrawPanel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Drawing; 8 | using System.Runtime.CompilerServices; 9 | 10 | namespace RsMapper.Forms.Controls 11 | { 12 | public class DrawPanel : Panel 13 | { 14 | /// 15 | /// Determines whether or not to draw a grid onto the panel. 16 | /// 17 | public bool ShowGrid { get; set; } 18 | 19 | /// 20 | /// The pen color of the block grid. 21 | /// 22 | public Color GridColor { get; set; } 23 | 24 | /// 25 | /// A list of all blocks on the control. 26 | /// 27 | public ControlCollection Blocks { get; set; } 28 | 29 | public DrawPanel() 30 | { 31 | 32 | 33 | // Enable double buffering. 34 | this.DoubleBuffered = true; 35 | 36 | // Set styles. 37 | this.SetStyle(ControlStyles.UserPaint | 38 | ControlStyles.AllPaintingInWmPaint | 39 | ControlStyles.ResizeRedraw | 40 | ControlStyles.ContainerControl | 41 | ControlStyles.OptimizedDoubleBuffer | 42 | ControlStyles.SupportsTransparentBackColor 43 | , true); 44 | 45 | this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 46 | this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); 47 | this.UpdateStyles(); 48 | 49 | foreach(Control c in this.Controls) 50 | { 51 | Blocks.Add(c); 52 | } 53 | } 54 | 55 | protected override void OnPaint(PaintEventArgs e) 56 | { 57 | // Call the OnPaint method of the base class. 58 | base.OnPaint(e); 59 | 60 | 61 | if (ShowGrid == true) 62 | { 63 | // Draw a grid. 64 | Graphics g = e.Graphics; 65 | Pen pen = new Pen(GridColor); 66 | 67 | for (int y = 0; y < 100; ++y) 68 | { 69 | g.DrawLine(pen, 0, y * 50, 100 * 50, y * 50); 70 | } 71 | 72 | for (int x = 0; x < 100; ++x) 73 | { 74 | g.DrawLine(pen, x * 50, 0, x * 50, 100 * 50); 75 | } 76 | } 77 | 78 | 79 | } 80 | 81 | protected override void OnMouseDown(MouseEventArgs e) 82 | { 83 | base.OnMouseDown(e); 84 | 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /RsMapper/Forms/Controls/NNPictureBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Drawing.Drawing2D; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace RsMapper.Forms.Controls 11 | { 12 | public class NNPictureBox : PictureBox 13 | { 14 | /// 15 | /// The name of the block associated with the control. 16 | /// 17 | public string ComponentName { get; set; } 18 | 19 | /// 20 | /// Extra block info. 21 | /// 22 | public string ComponentTag { get; set; } 23 | 24 | /// 25 | /// List to add the component to after deletion 26 | /// for undoing. 27 | /// 28 | public List RedoList; 29 | 30 | /// 31 | /// Determines whether or not the user can interact with the control. 32 | /// 33 | public bool IsInteractable; 34 | 35 | public ToolStripMenuItem redoMItem; 36 | 37 | public NNPictureBox() 38 | { 39 | 40 | } 41 | 42 | protected override void OnPaint(PaintEventArgs pe) 43 | { 44 | // Use nearest neighbor when zooming and get rid of any half-pixel offset. 45 | pe.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; 46 | pe.Graphics.PixelOffsetMode = PixelOffsetMode.Half; 47 | base.OnPaint(pe); 48 | 49 | Graphics g = pe.Graphics; 50 | } 51 | 52 | protected override void OnMouseHover(EventArgs e) 53 | { 54 | base.OnMouseHover(e); 55 | if (IsInteractable == true) 56 | { 57 | ToolTip tt = new ToolTip(); 58 | 59 | tt.SetToolTip(this, ComponentName + "\n" + ComponentTag); 60 | } 61 | } 62 | 63 | protected override void OnMouseDown(MouseEventArgs e) 64 | { 65 | // Delete component. 66 | base.OnMouseDown(e); 67 | if (IsInteractable == true) 68 | { 69 | if (e.Button == MouseButtons.Middle) 70 | { 71 | DeleteComponent(); 72 | } 73 | } 74 | } 75 | 76 | /// 77 | /// Delete the component and add it to the redo list. 78 | /// 79 | void DeleteComponent() 80 | { 81 | Visible = false; 82 | RedoList.Add(this); 83 | redoMItem.Enabled = true; 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /RsMapper/Forms/CreateCustomMod.Designer.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace RsMapper.Forms 3 | { 4 | partial class CreateCustomMod 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.splitContainer1 = new System.Windows.Forms.SplitContainer(); 33 | this.listView1 = new System.Windows.Forms.ListView(); 34 | this.button1 = new System.Windows.Forms.Button(); 35 | this.groupBox2 = new System.Windows.Forms.GroupBox(); 36 | this.nnPictureBox1 = new RsMapper.Forms.Controls.NNPictureBox(); 37 | this.button2 = new System.Windows.Forms.Button(); 38 | this.button3 = new System.Windows.Forms.Button(); 39 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 40 | this.checkBox1 = new System.Windows.Forms.CheckBox(); 41 | this.comboBox1 = new System.Windows.Forms.ComboBox(); 42 | this.textBox2 = new System.Windows.Forms.TextBox(); 43 | this.textBox1 = new System.Windows.Forms.TextBox(); 44 | ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); 45 | this.splitContainer1.Panel1.SuspendLayout(); 46 | this.splitContainer1.Panel2.SuspendLayout(); 47 | this.splitContainer1.SuspendLayout(); 48 | this.groupBox2.SuspendLayout(); 49 | ((System.ComponentModel.ISupportInitialize)(this.nnPictureBox1)).BeginInit(); 50 | this.groupBox1.SuspendLayout(); 51 | this.SuspendLayout(); 52 | // 53 | // splitContainer1 54 | // 55 | this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; 56 | this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; 57 | this.splitContainer1.IsSplitterFixed = true; 58 | this.splitContainer1.Location = new System.Drawing.Point(0, 0); 59 | this.splitContainer1.Name = "splitContainer1"; 60 | // 61 | // splitContainer1.Panel1 62 | // 63 | this.splitContainer1.Panel1.Controls.Add(this.listView1); 64 | this.splitContainer1.Panel1.Controls.Add(this.button1); 65 | // 66 | // splitContainer1.Panel2 67 | // 68 | this.splitContainer1.Panel2.Controls.Add(this.groupBox2); 69 | this.splitContainer1.Panel2.Controls.Add(this.button3); 70 | this.splitContainer1.Panel2.Controls.Add(this.groupBox1); 71 | this.splitContainer1.Size = new System.Drawing.Size(428, 320); 72 | this.splitContainer1.SplitterDistance = 180; 73 | this.splitContainer1.TabIndex = 0; 74 | // 75 | // listView1 76 | // 77 | this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; 78 | this.listView1.HideSelection = false; 79 | this.listView1.Location = new System.Drawing.Point(0, 0); 80 | this.listView1.MultiSelect = false; 81 | this.listView1.Name = "listView1"; 82 | this.listView1.ShowItemToolTips = true; 83 | this.listView1.Size = new System.Drawing.Size(180, 297); 84 | this.listView1.TabIndex = 1; 85 | this.listView1.UseCompatibleStateImageBehavior = false; 86 | this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); 87 | this.listView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listView1_MouseDown); 88 | // 89 | // button1 90 | // 91 | this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; 92 | this.button1.Location = new System.Drawing.Point(0, 297); 93 | this.button1.Name = "button1"; 94 | this.button1.Size = new System.Drawing.Size(180, 23); 95 | this.button1.TabIndex = 0; 96 | this.button1.Text = "Export Modpack..."; 97 | this.button1.UseVisualStyleBackColor = true; 98 | this.button1.Click += new System.EventHandler(this.button1_Click); 99 | // 100 | // groupBox2 101 | // 102 | this.groupBox2.Controls.Add(this.nnPictureBox1); 103 | this.groupBox2.Controls.Add(this.button2); 104 | this.groupBox2.Location = new System.Drawing.Point(8, 12); 105 | this.groupBox2.Name = "groupBox2"; 106 | this.groupBox2.Size = new System.Drawing.Size(233, 131); 107 | this.groupBox2.TabIndex = 8; 108 | this.groupBox2.TabStop = false; 109 | this.groupBox2.Text = "Image"; 110 | // 111 | // nnPictureBox1 112 | // 113 | this.nnPictureBox1.BackColor = System.Drawing.Color.White; 114 | this.nnPictureBox1.ComponentName = null; 115 | this.nnPictureBox1.ComponentTag = null; 116 | this.nnPictureBox1.Location = new System.Drawing.Point(6, 16); 117 | this.nnPictureBox1.Name = "nnPictureBox1"; 118 | this.nnPictureBox1.Size = new System.Drawing.Size(100, 100); 119 | this.nnPictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 120 | this.nnPictureBox1.TabIndex = 5; 121 | this.nnPictureBox1.TabStop = false; 122 | // 123 | // button2 124 | // 125 | this.button2.Location = new System.Drawing.Point(112, 16); 126 | this.button2.Name = "button2"; 127 | this.button2.Size = new System.Drawing.Size(115, 23); 128 | this.button2.TabIndex = 1; 129 | this.button2.Text = "Choose Texture"; 130 | this.button2.UseVisualStyleBackColor = true; 131 | this.button2.Click += new System.EventHandler(this.button2_Click); 132 | // 133 | // button3 134 | // 135 | this.button3.Location = new System.Drawing.Point(3, 294); 136 | this.button3.Name = "button3"; 137 | this.button3.Size = new System.Drawing.Size(238, 23); 138 | this.button3.TabIndex = 7; 139 | this.button3.Text = "<< Add Component"; 140 | this.button3.UseVisualStyleBackColor = true; 141 | this.button3.Click += new System.EventHandler(this.button3_Click); 142 | // 143 | // groupBox1 144 | // 145 | this.groupBox1.Controls.Add(this.checkBox1); 146 | this.groupBox1.Controls.Add(this.comboBox1); 147 | this.groupBox1.Controls.Add(this.textBox2); 148 | this.groupBox1.Controls.Add(this.textBox1); 149 | this.groupBox1.Location = new System.Drawing.Point(2, 149); 150 | this.groupBox1.Name = "groupBox1"; 151 | this.groupBox1.Size = new System.Drawing.Size(239, 140); 152 | this.groupBox1.TabIndex = 0; 153 | this.groupBox1.TabStop = false; 154 | this.groupBox1.Text = "Basic Information"; 155 | // 156 | // checkBox1 157 | // 158 | this.checkBox1.AutoSize = true; 159 | this.checkBox1.Location = new System.Drawing.Point(6, 98); 160 | this.checkBox1.Name = "checkBox1"; 161 | this.checkBox1.Size = new System.Drawing.Size(193, 30); 162 | this.checkBox1.TabIndex = 6; 163 | this.checkBox1.Text = "Accepts Wire\r\n(Functionality Not Yet Implemented)"; 164 | this.checkBox1.UseVisualStyleBackColor = true; 165 | // 166 | // comboBox1 167 | // 168 | this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 169 | this.comboBox1.FormattingEnabled = true; 170 | this.comboBox1.Items.AddRange(new object[] { 171 | "Input", 172 | "Output", 173 | "Inline", 174 | "Logic", 175 | "Misc"}); 176 | this.comboBox1.Location = new System.Drawing.Point(7, 71); 177 | this.comboBox1.Name = "comboBox1"; 178 | this.comboBox1.Size = new System.Drawing.Size(226, 21); 179 | this.comboBox1.TabIndex = 4; 180 | this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); 181 | // 182 | // textBox2 183 | // 184 | this.textBox2.Location = new System.Drawing.Point(6, 45); 185 | this.textBox2.Name = "textBox2"; 186 | this.textBox2.Size = new System.Drawing.Size(226, 20); 187 | this.textBox2.TabIndex = 3; 188 | this.textBox2.Text = "Component Description"; 189 | // 190 | // textBox1 191 | // 192 | this.textBox1.Location = new System.Drawing.Point(6, 19); 193 | this.textBox1.Name = "textBox1"; 194 | this.textBox1.Size = new System.Drawing.Size(226, 20); 195 | this.textBox1.TabIndex = 2; 196 | this.textBox1.Text = "Component Name"; 197 | // 198 | // CreateCustomMod 199 | // 200 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 201 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 202 | this.ClientSize = new System.Drawing.Size(428, 320); 203 | this.Controls.Add(this.splitContainer1); 204 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 205 | this.MaximizeBox = false; 206 | this.MinimizeBox = false; 207 | this.Name = "CreateCustomMod"; 208 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 209 | this.Text = "Create a Mod"; 210 | this.Load += new System.EventHandler(this.CreateCustomMod_Load); 211 | this.splitContainer1.Panel1.ResumeLayout(false); 212 | this.splitContainer1.Panel2.ResumeLayout(false); 213 | ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); 214 | this.splitContainer1.ResumeLayout(false); 215 | this.groupBox2.ResumeLayout(false); 216 | ((System.ComponentModel.ISupportInitialize)(this.nnPictureBox1)).EndInit(); 217 | this.groupBox1.ResumeLayout(false); 218 | this.groupBox1.PerformLayout(); 219 | this.ResumeLayout(false); 220 | 221 | } 222 | 223 | #endregion 224 | 225 | private System.Windows.Forms.SplitContainer splitContainer1; 226 | private System.Windows.Forms.Button button1; 227 | private System.Windows.Forms.ListView listView1; 228 | private System.Windows.Forms.GroupBox groupBox1; 229 | private System.Windows.Forms.ComboBox comboBox1; 230 | private System.Windows.Forms.TextBox textBox2; 231 | private System.Windows.Forms.TextBox textBox1; 232 | private System.Windows.Forms.Button button2; 233 | private Controls.NNPictureBox nnPictureBox1; 234 | private System.Windows.Forms.CheckBox checkBox1; 235 | private System.Windows.Forms.Button button3; 236 | private System.Windows.Forms.GroupBox groupBox2; 237 | } 238 | } -------------------------------------------------------------------------------- /RsMapper/Forms/CreateCustomMod.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.IO; 11 | using System.IO.Compression; 12 | using Newtonsoft.Json; 13 | 14 | namespace RsMapper.Forms 15 | { 16 | public partial class CreateCustomMod : Form 17 | { 18 | 19 | Image picd1; // Image associated with component. 20 | MenuItem delMI; // Delete component menu item. 21 | 22 | 23 | 24 | public CreateCustomMod() 25 | { 26 | InitializeComponent(); 27 | } 28 | 29 | // Export all of the components into a modpack file. 30 | private void button1_Click(object sender, EventArgs e) 31 | { 32 | if (listView1.Items.Count == 0) 33 | { 34 | // If there are no components in the list view, error. 35 | MessageBox.Show("The modpack must contain at least one component.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 36 | } 37 | else 38 | { 39 | // Setup the save file dialog. 40 | SaveFileDialog saveFileDialog = new SaveFileDialog(); 41 | saveFileDialog.Title = "Export Modpack"; 42 | saveFileDialog.Filter = "RsMapper Modpacks|*.rsmp"; 43 | // If the result is ok, begin the modpack creation process. 44 | if(saveFileDialog.ShowDialog() == DialogResult.OK) 45 | { 46 | string infox; 47 | string typex; 48 | string acceptswirex; 49 | 50 | ModRootObject mro = new ModRootObject(); 51 | List data = new List(); 52 | 53 | try 54 | { 55 | Directory.CreateDirectory(saveFileDialog.FileName + "_temp\\Imgs"); 56 | foreach (ListViewItem listViewItem in listView1.Items) 57 | { 58 | Image img = listView1.LargeImageList.Images[listViewItem.Index]; 59 | img.Save(saveFileDialog.FileName + "_temp\\Imgs\\" + listViewItem.Text + ".png"); 60 | 61 | // Split the tool tip into useful information for the json file. 62 | string[] infoArray = listViewItem.ToolTipText.Split('\n'); 63 | infox = infoArray[0]; 64 | typex = infoArray[1]; 65 | acceptswirex = infoArray[2]; 66 | 67 | data.Add(new modData() 68 | { 69 | name = listViewItem.Text, 70 | type = typex, 71 | image = "\\Modpacks\\" + Path.GetFileName(saveFileDialog.FileName) + "\\Imgs\\" + listViewItem.Text + ".png", 72 | info = infox, 73 | acceptswire = acceptswirex 74 | }); 75 | 76 | } 77 | 78 | mro.RsComponents = data.ToArray(); 79 | 80 | // Create the components json for the modpack. 81 | string json = JsonConvert.SerializeObject(mro); 82 | System.IO.File.WriteAllText(saveFileDialog.FileName + "_temp\\Components.json", json); 83 | 84 | // Compress the modpack into a .rsmp file. 85 | ZipFile.CreateFromDirectory(saveFileDialog.FileName + "_temp", saveFileDialog.FileName); 86 | Directory.Delete(saveFileDialog.FileName + "_temp", true); 87 | } catch(Exception ex) 88 | { 89 | MessageBox.Show("Unable to create modpack file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 90 | } 91 | 92 | 93 | } 94 | } 95 | } 96 | 97 | private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 98 | { 99 | 100 | } 101 | 102 | // Allow the user to select an image for the component. 103 | private void button2_Click(object sender, EventArgs e) 104 | { 105 | OpenFileDialog ofd = new OpenFileDialog(); 106 | ofd.Title = "Choose Texture"; 107 | ofd.Filter = "PNG Files|*.png"; 108 | ofd.Multiselect = false; 109 | 110 | 111 | if(ofd.ShowDialog() == DialogResult.OK) 112 | { 113 | string imageFIlePath = ofd.FileName; 114 | picd1 = Image.FromFile(imageFIlePath); 115 | nnPictureBox1.Image = picd1; 116 | } 117 | } 118 | 119 | // Add the component to the components list of the modpack. 120 | private void button3_Click(object sender, EventArgs e) 121 | { 122 | // Check if all of the required fields have information. 123 | if(nnPictureBox1.Image == null || textBox1.Text == "" || textBox2.Text == "" || comboBox1.SelectedItem == null) 124 | { 125 | MessageBox.Show("One or more fields are missing information.", "Missing Info", MessageBoxButtons.OK, MessageBoxIcon.Error); 126 | // Check if there are any duplicate items in the list view. 127 | } else if (DuplicateListItem(textBox1.Text) == true) 128 | { 129 | MessageBox.Show("A component with this name already exists in the modpack.", "Duplicate", MessageBoxButtons.OK, MessageBoxIcon.Error); 130 | } else 131 | { 132 | 133 | listView1.LargeImageList.Images.Add(picd1); 134 | ListViewItem ModItem = new ListViewItem(textBox1.Text, listView1.Items.Count); 135 | ModItem.ToolTipText = textBox2.Text + "\n" + comboBox1.SelectedItem.ToString() + "\nAccepts Wire: " + checkBox1.Checked; 136 | listView1.Items.Add(ModItem); 137 | 138 | } 139 | } 140 | 141 | private void CreateCustomMod_Load(object sender, EventArgs e) 142 | { 143 | listView1.LargeImageList = new ImageList(); 144 | 145 | // Setup the right click menu for the list view. 146 | ContextMenu cm = new ContextMenu(); 147 | cm.Popup += new EventHandler(this.CmOnPopup); 148 | delMI = new MenuItem("Delete"); 149 | delMI.Click += new EventHandler(this.DeleteButton_Click); 150 | cm.MenuItems.Add(delMI); 151 | listView1.ContextMenu = cm; 152 | } 153 | 154 | private void listView1_SelectedIndexChanged(object sender, EventArgs e) 155 | { 156 | 157 | } 158 | 159 | private void listView1_MouseDown(object sender, MouseEventArgs e) 160 | { 161 | if(e.Button == MouseButtons.Right) 162 | { 163 | 164 | } 165 | } 166 | 167 | // WHen the delete context menu item is pressed. 168 | private void DeleteButton_Click(object sender, EventArgs e) 169 | { 170 | listView1.SelectedItems[0].Remove(); 171 | } 172 | 173 | // If there are no selected items, disable the delete button. 174 | private void CmOnPopup(object sender, EventArgs e) 175 | { 176 | if(listView1.SelectedItems.Count == 0) 177 | { 178 | delMI.Enabled = false; 179 | } else 180 | { 181 | delMI.Enabled = true; 182 | } 183 | } 184 | 185 | bool DuplicateListItem(string text) 186 | { 187 | bool duplicates = false; 188 | foreach(ListViewItem lvi in listView1.Items) 189 | { 190 | if(lvi.Text == text) 191 | { 192 | duplicates = true; 193 | } 194 | } 195 | return duplicates; 196 | } 197 | } 198 | 199 | public class modData 200 | { 201 | public string name { get; set; } 202 | public string type { get; set; } 203 | public string image { get; set; } 204 | public string info { get; set; } 205 | public string acceptswire { get; set; } 206 | } 207 | 208 | public class ModRootObject 209 | { 210 | [JsonProperty("RsComponents")] 211 | public modData[] RsComponents { get; set; } 212 | } 213 | } 214 | -------------------------------------------------------------------------------- /RsMapper/Forms/CreateCustomMod.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RsMapper/Forms/DownloadProgress.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RsMapper.Forms 2 | { 3 | partial class DownloadProgress 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 32 | this.button1 = new System.Windows.Forms.Button(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.SuspendLayout(); 35 | // 36 | // progressBar1 37 | // 38 | this.progressBar1.Location = new System.Drawing.Point(12, 45); 39 | this.progressBar1.Name = "progressBar1"; 40 | this.progressBar1.Size = new System.Drawing.Size(367, 23); 41 | this.progressBar1.TabIndex = 0; 42 | // 43 | // button1 44 | // 45 | this.button1.Location = new System.Drawing.Point(304, 85); 46 | this.button1.Name = "button1"; 47 | this.button1.Size = new System.Drawing.Size(75, 23); 48 | this.button1.TabIndex = 1; 49 | this.button1.Text = "Cancel"; 50 | this.button1.UseVisualStyleBackColor = true; 51 | this.button1.Click += new System.EventHandler(this.button1_Click); 52 | // 53 | // label1 54 | // 55 | this.label1.AutoSize = true; 56 | this.label1.Location = new System.Drawing.Point(12, 19); 57 | this.label1.Name = "label1"; 58 | this.label1.Size = new System.Drawing.Size(72, 13); 59 | this.label1.TabIndex = 2; 60 | this.label1.Text = "Downloading:"; 61 | // 62 | // DownloadProgress 63 | // 64 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 65 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 66 | this.ClientSize = new System.Drawing.Size(391, 120); 67 | this.Controls.Add(this.label1); 68 | this.Controls.Add(this.button1); 69 | this.Controls.Add(this.progressBar1); 70 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 71 | this.Name = "DownloadProgress"; 72 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 73 | this.Text = "Downloading..."; 74 | this.Load += new System.EventHandler(this.DownloadProgress_Load); 75 | this.ResumeLayout(false); 76 | this.PerformLayout(); 77 | 78 | } 79 | 80 | #endregion 81 | 82 | private System.Windows.Forms.ProgressBar progressBar1; 83 | private System.Windows.Forms.Button button1; 84 | private System.Windows.Forms.Label label1; 85 | } 86 | } -------------------------------------------------------------------------------- /RsMapper/Forms/DownloadProgress.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Net; 10 | using System.Windows.Forms; 11 | 12 | namespace RsMapper.Forms 13 | { 14 | public partial class DownloadProgress : Form 15 | { 16 | 17 | WebClient wc = new WebClient(); 18 | string source; 19 | string local; 20 | 21 | public DownloadProgress(string downloadSrc, string localFile) 22 | { 23 | InitializeComponent(); 24 | source = downloadSrc; 25 | local = localFile; 26 | } 27 | 28 | private void DownloadProgress_Load(object sender, EventArgs e) 29 | { 30 | try 31 | { 32 | // Reinstall the file if the user clicks yes. 33 | wc.DownloadFileAsync(new Uri(source), local); 34 | wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged); 35 | wc.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted); 36 | } 37 | catch (Exception exception) 38 | { 39 | MessageBox.Show("Unable to download file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 40 | Application.Exit(); 41 | } 42 | } 43 | 44 | private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) 45 | { 46 | wc.Dispose(); 47 | this.Close(); 48 | this.Dispose(); 49 | 50 | } 51 | 52 | private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 53 | { 54 | progressBar1.Value = e.ProgressPercentage; 55 | label1.Text = "Downloading: " + e.ProgressPercentage + "%"; 56 | } 57 | 58 | private void button1_Click(object sender, EventArgs e) 59 | { 60 | wc.CancelAsync(); 61 | Application.Exit(); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /RsMapper/Forms/DownloadProgress.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RsMapper/Forms/Modpacks.Designer.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace RsMapper.Forms 3 | { 4 | partial class Modpacks 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.listView1 = new System.Windows.Forms.ListView(); 33 | this.panel1 = new System.Windows.Forms.Panel(); 34 | this.button3 = new System.Windows.Forms.Button(); 35 | this.button2 = new System.Windows.Forms.Button(); 36 | this.button1 = new System.Windows.Forms.Button(); 37 | this.panel1.SuspendLayout(); 38 | this.SuspendLayout(); 39 | // 40 | // listView1 41 | // 42 | this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; 43 | this.listView1.HideSelection = false; 44 | this.listView1.Location = new System.Drawing.Point(0, 0); 45 | this.listView1.MultiSelect = false; 46 | this.listView1.Name = "listView1"; 47 | this.listView1.Size = new System.Drawing.Size(405, 413); 48 | this.listView1.TabIndex = 0; 49 | this.listView1.UseCompatibleStateImageBehavior = false; 50 | this.listView1.View = System.Windows.Forms.View.List; 51 | // 52 | // panel1 53 | // 54 | this.panel1.Controls.Add(this.button3); 55 | this.panel1.Controls.Add(this.button2); 56 | this.panel1.Controls.Add(this.button1); 57 | this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; 58 | this.panel1.Location = new System.Drawing.Point(0, 383); 59 | this.panel1.Name = "panel1"; 60 | this.panel1.Size = new System.Drawing.Size(405, 30); 61 | this.panel1.TabIndex = 1; 62 | // 63 | // button3 64 | // 65 | this.button3.Location = new System.Drawing.Point(84, 3); 66 | this.button3.Name = "button3"; 67 | this.button3.Size = new System.Drawing.Size(75, 23); 68 | this.button3.TabIndex = 2; 69 | this.button3.Text = "Remove"; 70 | this.button3.UseVisualStyleBackColor = true; 71 | this.button3.Click += new System.EventHandler(this.button3_Click); 72 | // 73 | // button2 74 | // 75 | this.button2.Location = new System.Drawing.Point(3, 3); 76 | this.button2.Name = "button2"; 77 | this.button2.Size = new System.Drawing.Size(75, 23); 78 | this.button2.TabIndex = 1; 79 | this.button2.Text = "Add"; 80 | this.button2.UseVisualStyleBackColor = true; 81 | this.button2.Click += new System.EventHandler(this.button2_Click); 82 | // 83 | // button1 84 | // 85 | this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; 86 | this.button1.Location = new System.Drawing.Point(327, 3); 87 | this.button1.Name = "button1"; 88 | this.button1.Size = new System.Drawing.Size(75, 23); 89 | this.button1.TabIndex = 0; 90 | this.button1.Text = "OK"; 91 | this.button1.UseVisualStyleBackColor = true; 92 | this.button1.Click += new System.EventHandler(this.button1_Click); 93 | // 94 | // Modpacks 95 | // 96 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 97 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 98 | this.ClientSize = new System.Drawing.Size(405, 413); 99 | this.Controls.Add(this.panel1); 100 | this.Controls.Add(this.listView1); 101 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 102 | this.MaximizeBox = false; 103 | this.MinimizeBox = false; 104 | this.Name = "Modpacks"; 105 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 106 | this.Text = "Modpacks"; 107 | this.Load += new System.EventHandler(this.Modpacks_Load); 108 | this.panel1.ResumeLayout(false); 109 | this.ResumeLayout(false); 110 | 111 | } 112 | 113 | #endregion 114 | 115 | private System.Windows.Forms.ListView listView1; 116 | private System.Windows.Forms.Panel panel1; 117 | private System.Windows.Forms.Button button3; 118 | private System.Windows.Forms.Button button2; 119 | private System.Windows.Forms.Button button1; 120 | } 121 | } -------------------------------------------------------------------------------- /RsMapper/Forms/Modpacks.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.IO; 11 | using System.IO.Compression; 12 | 13 | namespace RsMapper.Forms 14 | { 15 | public partial class Modpacks : Form 16 | { 17 | 18 | string AppData; 19 | 20 | 21 | public Modpacks(bool modpackOpen = false, string path = null) 22 | { 23 | InitializeComponent(); 24 | AppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\RsMapper"; 25 | 26 | 27 | } 28 | 29 | private void Modpacks_Load(object sender, EventArgs e) 30 | { 31 | LoadModList(); 32 | } 33 | 34 | // Close and dispose the form. 35 | private void button1_Click(object sender, EventArgs e) 36 | { 37 | this.Close(); 38 | this.Dispose(); 39 | } 40 | 41 | // Delete selected modpack. 42 | private void button3_Click(object sender, EventArgs e) 43 | { 44 | if(MessageBox.Show("Are you sure you want to remove this modpack? You can always reinstall it from its .rsmp file.", "Remove Modpack", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 45 | { 46 | 47 | foreach(ListViewItem lvi in listView1.SelectedItems) 48 | { 49 | Directory.Delete(lvi.Text, true); 50 | } 51 | 52 | // Reload the modpacks list. 53 | listView1.Clear(); 54 | LoadModList(); 55 | } 56 | } 57 | 58 | // Load the installed modpacks into the list view. 59 | void LoadModList() 60 | { 61 | foreach (string directory in Directory.GetDirectories(AppData + "\\Modpacks")) 62 | { 63 | listView1.Items.Add(new ListViewItem(directory)); 64 | } 65 | } 66 | 67 | // Install a modpack. 68 | private void button2_Click(object sender, EventArgs e) 69 | { 70 | OpenFileDialog ofd = new OpenFileDialog(); 71 | ofd.Title = "Select Modpack File"; 72 | ofd.Filter = "RsMapper Modpacks|*.rsmp"; 73 | if (ofd.ShowDialog() == DialogResult.OK) 74 | { 75 | try 76 | { 77 | ZipFile.ExtractToDirectory(ofd.FileName, AppData + "\\Modpacks\\" + Path.GetFileName(ofd.FileName)); 78 | } catch(Exception ex) 79 | { 80 | MessageBox.Show("Modpack installation failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 81 | } 82 | } 83 | 84 | listView1.Clear(); 85 | LoadModList(); 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /RsMapper/Forms/Modpacks.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RsMapper/Forms/UnsavedDialog.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RsMapper.Forms 2 | { 3 | partial class UnsavedDialog 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.button1 = new System.Windows.Forms.Button(); 32 | this.button2 = new System.Windows.Forms.Button(); 33 | this.button3 = new System.Windows.Forms.Button(); 34 | this.label1 = new System.Windows.Forms.Label(); 35 | this.panel1 = new System.Windows.Forms.Panel(); 36 | this.panel1.SuspendLayout(); 37 | this.SuspendLayout(); 38 | // 39 | // button1 40 | // 41 | this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; 42 | this.button1.Location = new System.Drawing.Point(331, 67); 43 | this.button1.Name = "button1"; 44 | this.button1.Size = new System.Drawing.Size(75, 23); 45 | this.button1.TabIndex = 0; 46 | this.button1.Text = "Yes"; 47 | this.button1.UseVisualStyleBackColor = true; 48 | // 49 | // button2 50 | // 51 | this.button2.DialogResult = System.Windows.Forms.DialogResult.No; 52 | this.button2.Location = new System.Drawing.Point(250, 67); 53 | this.button2.Name = "button2"; 54 | this.button2.Size = new System.Drawing.Size(75, 23); 55 | this.button2.TabIndex = 1; 56 | this.button2.Text = "No"; 57 | this.button2.UseVisualStyleBackColor = true; 58 | this.button2.Click += new System.EventHandler(this.button2_Click); 59 | // 60 | // button3 61 | // 62 | this.button3.DialogResult = System.Windows.Forms.DialogResult.Cancel; 63 | this.button3.Location = new System.Drawing.Point(154, 67); 64 | this.button3.Name = "button3"; 65 | this.button3.Size = new System.Drawing.Size(75, 23); 66 | this.button3.TabIndex = 2; 67 | this.button3.Text = "Cancel"; 68 | this.button3.UseVisualStyleBackColor = true; 69 | this.button3.Click += new System.EventHandler(this.button3_Click); 70 | // 71 | // label1 72 | // 73 | this.label1.AutoSize = true; 74 | this.label1.Location = new System.Drawing.Point(12, 19); 75 | this.label1.Name = "label1"; 76 | this.label1.Size = new System.Drawing.Size(350, 13); 77 | this.label1.TabIndex = 3; 78 | this.label1.Text = "You have unsaved changes, would you like to save them before exiting?\r\n"; 79 | // 80 | // panel1 81 | // 82 | this.panel1.BackColor = System.Drawing.Color.White; 83 | this.panel1.Controls.Add(this.label1); 84 | this.panel1.Dock = System.Windows.Forms.DockStyle.Top; 85 | this.panel1.Location = new System.Drawing.Point(0, 0); 86 | this.panel1.Name = "panel1"; 87 | this.panel1.Size = new System.Drawing.Size(418, 52); 88 | this.panel1.TabIndex = 4; 89 | // 90 | // UnsavedDialog 91 | // 92 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 93 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 94 | this.ClientSize = new System.Drawing.Size(418, 101); 95 | this.ControlBox = false; 96 | this.Controls.Add(this.panel1); 97 | this.Controls.Add(this.button3); 98 | this.Controls.Add(this.button2); 99 | this.Controls.Add(this.button1); 100 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 101 | this.Name = "UnsavedDialog"; 102 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; 103 | this.Text = "Unsaved Changes"; 104 | this.panel1.ResumeLayout(false); 105 | this.panel1.PerformLayout(); 106 | this.ResumeLayout(false); 107 | 108 | } 109 | 110 | #endregion 111 | 112 | private System.Windows.Forms.Button button1; 113 | private System.Windows.Forms.Button button2; 114 | private System.Windows.Forms.Button button3; 115 | private System.Windows.Forms.Label label1; 116 | private System.Windows.Forms.Panel panel1; 117 | } 118 | } -------------------------------------------------------------------------------- /RsMapper/Forms/UnsavedDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace RsMapper.Forms 12 | { 13 | public partial class UnsavedDialog : Form 14 | { 15 | public UnsavedDialog() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | private void button3_Click(object sender, EventArgs e) 21 | { 22 | this.Close(); 23 | } 24 | 25 | private void button2_Click(object sender, EventArgs e) 26 | { 27 | Application.Exit(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /RsMapper/Forms/UnsavedDialog.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RsMapper/Forms/UpdateCheck.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace RsMapper.Forms 2 | { 3 | partial class UpdateCheck 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.label1 = new System.Windows.Forms.Label(); 32 | this.SuspendLayout(); 33 | // 34 | // label1 35 | // 36 | this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 37 | | System.Windows.Forms.AnchorStyles.Left) 38 | | System.Windows.Forms.AnchorStyles.Right))); 39 | this.label1.AutoSize = true; 40 | this.label1.Location = new System.Drawing.Point(96, 27); 41 | this.label1.Name = "label1"; 42 | this.label1.Size = new System.Drawing.Size(117, 13); 43 | this.label1.TabIndex = 0; 44 | this.label1.Text = "Checking for updates..."; 45 | this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 46 | this.label1.UseWaitCursor = true; 47 | // 48 | // UpdateCheck 49 | // 50 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 51 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 52 | this.ClientSize = new System.Drawing.Size(299, 65); 53 | this.Controls.Add(this.label1); 54 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 55 | this.MaximizeBox = false; 56 | this.MinimizeBox = false; 57 | this.Name = "UpdateCheck"; 58 | this.ShowInTaskbar = false; 59 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 60 | this.Text = "Update Check"; 61 | this.UseWaitCursor = true; 62 | this.WindowState = System.Windows.Forms.FormWindowState.Minimized; 63 | this.Load += new System.EventHandler(this.UpdateCheck_Load); 64 | this.ResumeLayout(false); 65 | this.PerformLayout(); 66 | 67 | } 68 | 69 | #endregion 70 | 71 | private System.Windows.Forms.Label label1; 72 | } 73 | } -------------------------------------------------------------------------------- /RsMapper/Forms/UpdateCheck.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using RsMapper.Properties; 10 | using System.Windows.Forms; 11 | using System.Net; 12 | using Octokit; 13 | using System.Reflection; 14 | using System.Diagnostics; 15 | 16 | namespace RsMapper.Forms 17 | { 18 | public partial class UpdateCheck : Form 19 | { 20 | 21 | 22 | public UpdateCheck() 23 | { 24 | 25 | InitializeComponent(); 26 | 27 | } 28 | 29 | private void UpdateCheck_Load(object sender, EventArgs e) 30 | { 31 | 32 | // The the update void. 33 | CheckUpdates(); 34 | } 35 | 36 | private async void CheckUpdates() 37 | { 38 | // About box to get current version. 39 | AboutBox1 abt = new AboutBox1(); 40 | 41 | // Create a new client. 42 | var client = new GitHubClient(new ProductHeaderValue("RsMapper")); 43 | try 44 | { 45 | // Get all of the releases on the repo. 46 | var releases = await client.Repository.Release.GetAll("GreenJamesDev", "RsMapper"); 47 | var latest = releases[0]; // Get the latest release. 48 | 49 | // Compare versions. 50 | if (latest.TagName != abt.AssemblyVersion) 51 | { 52 | // Display a notification if there is an update. 53 | var notification = new NotifyIcon() 54 | { 55 | Visible = true, 56 | Icon = Resources.icon_0uP_icon, 57 | BalloonTipTitle = "RsMapper Update", 58 | BalloonTipText = "Version " + latest.TagName + " is available.", 59 | }; 60 | 61 | notification.BalloonTipClosed += (sender, args) => notification.Dispose(); 62 | notification.BalloonTipClicked += (sender, args) => Process.Start(latest.HtmlUrl); 63 | 64 | // Display for 5 seconds. 65 | notification.ShowBalloonTip(3000); 66 | } 67 | // Isn't a new update. 68 | else 69 | { 70 | this.Dispose(); 71 | } 72 | 73 | } catch (Exception e) 74 | { 75 | this.Dispose(); 76 | } 77 | 78 | 79 | } 80 | 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /RsMapper/Forms/UpdateCheck.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RsMapper/Imgs/Door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Door.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Block.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Button.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Chest.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Command.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Comparator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Comparator.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_DaySensor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_DaySensor.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Dispenser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Dispenser.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Dropper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Dropper.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_GoldBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_GoldBlock.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Hopper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Hopper.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Lamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Lamp.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Observer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Observer.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Piston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Piston.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_PressurePlate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_PressurePlate.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Repeater.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Repeater.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_SPiston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_SPiston.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_TChest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_TChest.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Target.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RS_Torch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RS_Torch.png -------------------------------------------------------------------------------- /RsMapper/Imgs/RsMapper/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/RsMapper/icon.png -------------------------------------------------------------------------------- /RsMapper/Imgs/TDoor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/TDoor.png -------------------------------------------------------------------------------- /RsMapper/Imgs/TNT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/TNT.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_TDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_TDown.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_TLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_TLeft.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_TRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_TRight.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_TUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_TUp.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireCross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireCross.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireDot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireDot.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireDownLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireDownLeft.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireDownRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireDownRight.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireHoriz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireHoriz.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireUpLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireUpLeft.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireUpRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireUpRight.png -------------------------------------------------------------------------------- /RsMapper/Imgs/Wires/RS_WireVert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/Wires/RS_WireVert.png -------------------------------------------------------------------------------- /RsMapper/Imgs/arail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/arail.png -------------------------------------------------------------------------------- /RsMapper/Imgs/drail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/drail.png -------------------------------------------------------------------------------- /RsMapper/Imgs/lightning_rod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/lightning_rod.png -------------------------------------------------------------------------------- /RsMapper/Imgs/nrail_bend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/nrail_bend.png -------------------------------------------------------------------------------- /RsMapper/Imgs/nrail_straight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/nrail_straight.png -------------------------------------------------------------------------------- /RsMapper/Imgs/prail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/prail.png -------------------------------------------------------------------------------- /RsMapper/Imgs/slime_block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/Imgs/slime_block.png -------------------------------------------------------------------------------- /RsMapper/PrgmSelfCheck.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Net; 8 | using System.Windows.Forms; 9 | using RsMapper.Forms; 10 | 11 | namespace RsMapper 12 | { 13 | public class PrgmSelfCheck 14 | { 15 | // DEPENDANCIES 16 | public static string ComponentsJson = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),"RsMapper\\Components.json"); 17 | public static string JsonNet = "Newtonsoft.Json.dll"; 18 | public static string JsonNetXml = "Newtonsoft.Json.xml"; 19 | public static string Modpacks = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\RsMapper\\Modpacks"; 20 | 21 | WebClient wc = new WebClient(); 22 | 23 | /// 24 | /// Check for any missing files that are required to start the program. 25 | /// 26 | public async void CheckAll() 27 | { 28 | 29 | // Components.json 30 | if (File.Exists(ComponentsJson) == false) 31 | { 32 | Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RsMapper")); 33 | DownloadProgress downloadProgress = new DownloadProgress("https://raw.githubusercontent.com/GreenJamesDev/RsMapper/master/RsMapper/Components.json", ComponentsJson); 34 | downloadProgress.ShowDialog(); 35 | downloadProgress.Dispose(); 36 | 37 | 38 | } 39 | 40 | // Modpacks folder. 41 | if (Directory.Exists(Modpacks) == false) 42 | { 43 | Directory.CreateDirectory(Modpacks); 44 | } 45 | } 46 | 47 | 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /RsMapper/Program.cs: -------------------------------------------------------------------------------- 1 | using RsMapper.Forms; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using System.IO; 9 | using System.IO.Compression; 10 | 11 | namespace RsMapper 12 | { 13 | static class Program 14 | { 15 | public static bool NoJson = false; 16 | public static bool CheckUpdates = true; 17 | public static string AppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\RsMapper"; 18 | 19 | /// 20 | /// The main entry point for the application. 21 | /// 22 | [STAThread] 23 | static void Main(String[] args) 24 | { 25 | Application.EnableVisualStyles(); 26 | Application.SetCompatibleTextRenderingDefault(false); 27 | 28 | 29 | if (args.Length == 0) 30 | { 31 | // Check for missing files. 32 | PrgmSelfCheck sc = new PrgmSelfCheck(); 33 | sc.CheckAll(); 34 | 35 | 36 | } 37 | else 38 | { 39 | foreach (String arg in args) 40 | { 41 | switch (arg) 42 | { 43 | 44 | // If the runtime argument --disable-json-check 45 | // is passed, tell RsMapper to ignore the 46 | // Components.json file. 47 | case "--disable-json-check": 48 | NoJson = true; 49 | break; 50 | 51 | // If the runtime argument --disable-update-check 52 | // is passed, tell RsMapper to skip running 53 | // the update checker. 54 | case "--disable-update-check": 55 | CheckUpdates = false; 56 | break; 57 | 58 | // If a proper argument isn't sent. 59 | default: 60 | 61 | // If RsMapper is used to open a modpack file. 62 | if (arg.Contains(":\\")){ 63 | 64 | try 65 | { 66 | ZipFile.ExtractToDirectory(arg, AppData + "\\Modpacks\\" + Path.GetFileName(arg)); 67 | MessageBox.Show("Modpack installed successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); 68 | } 69 | catch (Exception ex) 70 | { 71 | MessageBox.Show("Modpack installation failed or invalid command line argument.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 72 | } 73 | 74 | } 75 | 76 | // Check for missing files. 77 | PrgmSelfCheck sc = new PrgmSelfCheck(); 78 | sc.CheckAll(); 79 | break; 80 | } 81 | } 82 | 83 | } 84 | 85 | if (CheckUpdates == true) 86 | { 87 | // Create a new update thread. 88 | Thread thread = new Thread(RunUpdateCheck); 89 | thread.Start(); 90 | } 91 | 92 | // Run the main form. 93 | Application.Run(new Form1()); 94 | 95 | } 96 | 97 | public static void RunUpdateCheck() 98 | { 99 | UpdateCheck uc = new UpdateCheck(); 100 | uc.ShowDialog(); 101 | uc.Dispose(); 102 | } 103 | 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /RsMapper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("RsMapper")] 9 | [assembly: AssemblyDescription("An open source tool for drawing redstone schematics. Minecraft, redstone, and any redstone components included with this software were created by Mojang Studios. GreenJames has no association with Mojang Studios or its parent companies.")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("GreenJames")] 12 | [assembly: AssemblyProduct("RsMapper")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("f96b009a-9d79-49c9-9f1c-4460ab2bd132")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("0.4.0.0")] 36 | [assembly: AssemblyFileVersion("0.4.0.0")] 37 | -------------------------------------------------------------------------------- /RsMapper/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace RsMapper.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RsMapper.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap arail { 67 | get { 68 | object obj = ResourceManager.GetObject("arail", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Looks up a localized resource of type System.Drawing.Bitmap. 75 | /// 76 | internal static System.Drawing.Bitmap drail { 77 | get { 78 | object obj = ResourceManager.GetObject("drail", resourceCulture); 79 | return ((System.Drawing.Bitmap)(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). 85 | /// 86 | internal static System.Drawing.Icon icon_0uP_icon { 87 | get { 88 | object obj = ResourceManager.GetObject("icon_0uP_icon", resourceCulture); 89 | return ((System.Drawing.Icon)(obj)); 90 | } 91 | } 92 | 93 | /// 94 | /// Looks up a localized resource of type System.Drawing.Bitmap. 95 | /// 96 | internal static System.Drawing.Bitmap nrail_bend { 97 | get { 98 | object obj = ResourceManager.GetObject("nrail_bend", resourceCulture); 99 | return ((System.Drawing.Bitmap)(obj)); 100 | } 101 | } 102 | 103 | /// 104 | /// Looks up a localized resource of type System.Drawing.Bitmap. 105 | /// 106 | internal static System.Drawing.Bitmap nrail_straight { 107 | get { 108 | object obj = ResourceManager.GetObject("nrail_straight", resourceCulture); 109 | return ((System.Drawing.Bitmap)(obj)); 110 | } 111 | } 112 | 113 | /// 114 | /// Looks up a localized resource of type System.Drawing.Bitmap. 115 | /// 116 | internal static System.Drawing.Bitmap prail { 117 | get { 118 | object obj = ResourceManager.GetObject("prail", resourceCulture); 119 | return ((System.Drawing.Bitmap)(obj)); 120 | } 121 | } 122 | 123 | /// 124 | /// Looks up a localized resource of type System.Drawing.Bitmap. 125 | /// 126 | internal static System.Drawing.Bitmap RS_Block { 127 | get { 128 | object obj = ResourceManager.GetObject("RS_Block", resourceCulture); 129 | return ((System.Drawing.Bitmap)(obj)); 130 | } 131 | } 132 | 133 | /// 134 | /// Looks up a localized resource of type System.Drawing.Bitmap. 135 | /// 136 | internal static System.Drawing.Bitmap RS_Button { 137 | get { 138 | object obj = ResourceManager.GetObject("RS_Button", resourceCulture); 139 | return ((System.Drawing.Bitmap)(obj)); 140 | } 141 | } 142 | 143 | /// 144 | /// Looks up a localized resource of type System.Drawing.Bitmap. 145 | /// 146 | internal static System.Drawing.Bitmap RS_DaySensor { 147 | get { 148 | object obj = ResourceManager.GetObject("RS_DaySensor", resourceCulture); 149 | return ((System.Drawing.Bitmap)(obj)); 150 | } 151 | } 152 | 153 | /// 154 | /// Looks up a localized resource of type System.Drawing.Bitmap. 155 | /// 156 | internal static System.Drawing.Bitmap RS_Lamp { 157 | get { 158 | object obj = ResourceManager.GetObject("RS_Lamp", resourceCulture); 159 | return ((System.Drawing.Bitmap)(obj)); 160 | } 161 | } 162 | 163 | /// 164 | /// Looks up a localized resource of type System.Drawing.Bitmap. 165 | /// 166 | internal static System.Drawing.Bitmap RS_Target { 167 | get { 168 | object obj = ResourceManager.GetObject("RS_Target", resourceCulture); 169 | return ((System.Drawing.Bitmap)(obj)); 170 | } 171 | } 172 | 173 | /// 174 | /// Looks up a localized resource of type System.Drawing.Bitmap. 175 | /// 176 | internal static System.Drawing.Bitmap RS_Torch { 177 | get { 178 | object obj = ResourceManager.GetObject("RS_Torch", resourceCulture); 179 | return ((System.Drawing.Bitmap)(obj)); 180 | } 181 | } 182 | 183 | /// 184 | /// Looks up a localized resource of type System.Drawing.Bitmap. 185 | /// 186 | internal static System.Drawing.Bitmap RS_WireCross { 187 | get { 188 | object obj = ResourceManager.GetObject("RS_WireCross", resourceCulture); 189 | return ((System.Drawing.Bitmap)(obj)); 190 | } 191 | } 192 | 193 | /// 194 | /// Looks up a localized resource of type System.Drawing.Bitmap. 195 | /// 196 | internal static System.Drawing.Bitmap RS_WireDot { 197 | get { 198 | object obj = ResourceManager.GetObject("RS_WireDot", resourceCulture); 199 | return ((System.Drawing.Bitmap)(obj)); 200 | } 201 | } 202 | 203 | /// 204 | /// Looks up a localized resource of type System.Drawing.Bitmap. 205 | /// 206 | internal static System.Drawing.Bitmap RS_WireDownLeft { 207 | get { 208 | object obj = ResourceManager.GetObject("RS_WireDownLeft", resourceCulture); 209 | return ((System.Drawing.Bitmap)(obj)); 210 | } 211 | } 212 | 213 | /// 214 | /// Looks up a localized resource of type System.Drawing.Bitmap. 215 | /// 216 | internal static System.Drawing.Bitmap RS_WireDownRight { 217 | get { 218 | object obj = ResourceManager.GetObject("RS_WireDownRight", resourceCulture); 219 | return ((System.Drawing.Bitmap)(obj)); 220 | } 221 | } 222 | 223 | /// 224 | /// Looks up a localized resource of type System.Drawing.Bitmap. 225 | /// 226 | internal static System.Drawing.Bitmap RS_WireHoriz { 227 | get { 228 | object obj = ResourceManager.GetObject("RS_WireHoriz", resourceCulture); 229 | return ((System.Drawing.Bitmap)(obj)); 230 | } 231 | } 232 | 233 | /// 234 | /// Looks up a localized resource of type System.Drawing.Bitmap. 235 | /// 236 | internal static System.Drawing.Bitmap RS_WireUpLeft { 237 | get { 238 | object obj = ResourceManager.GetObject("RS_WireUpLeft", resourceCulture); 239 | return ((System.Drawing.Bitmap)(obj)); 240 | } 241 | } 242 | 243 | /// 244 | /// Looks up a localized resource of type System.Drawing.Bitmap. 245 | /// 246 | internal static System.Drawing.Bitmap RS_WireUpRight { 247 | get { 248 | object obj = ResourceManager.GetObject("RS_WireUpRight", resourceCulture); 249 | return ((System.Drawing.Bitmap)(obj)); 250 | } 251 | } 252 | 253 | /// 254 | /// Looks up a localized resource of type System.Drawing.Bitmap. 255 | /// 256 | internal static System.Drawing.Bitmap RS_WireVert { 257 | get { 258 | object obj = ResourceManager.GetObject("RS_WireVert", resourceCulture); 259 | return ((System.Drawing.Bitmap)(obj)); 260 | } 261 | } 262 | 263 | /// 264 | /// Looks up a localized resource of type System.Drawing.Bitmap. 265 | /// 266 | internal static System.Drawing.Bitmap slime_block { 267 | get { 268 | object obj = ResourceManager.GetObject("slime_block", resourceCulture); 269 | return ((System.Drawing.Bitmap)(obj)); 270 | } 271 | } 272 | 273 | /// 274 | /// Looks up a localized resource of type System.Drawing.Bitmap. 275 | /// 276 | internal static System.Drawing.Bitmap TNT { 277 | get { 278 | object obj = ResourceManager.GetObject("TNT", resourceCulture); 279 | return ((System.Drawing.Bitmap)(obj)); 280 | } 281 | } 282 | } 283 | } 284 | -------------------------------------------------------------------------------- /RsMapper/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Imgs\arail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | 125 | ..\Imgs\drail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 126 | 127 | 128 | ..\icon_0up_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 129 | 130 | 131 | ..\Imgs\nrail_bend.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 132 | 133 | 134 | ..\Imgs\nrail_straight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 135 | 136 | 137 | ..\Imgs\prail.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 138 | 139 | 140 | ..\Imgs\RS_Block.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 141 | 142 | 143 | ..\Imgs\RS_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 144 | 145 | 146 | ..\Imgs\RS_DaySensor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 147 | 148 | 149 | ..\Imgs\RS_Lamp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 150 | 151 | 152 | ..\Imgs\RS_Target.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 153 | 154 | 155 | ..\Imgs\RS_Torch.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 156 | 157 | 158 | ..\Imgs\Wires\RS_WireCross.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 159 | 160 | 161 | ..\Imgs\Wires\RS_WireDot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 162 | 163 | 164 | ..\Imgs\Wires\RS_WireDownLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 165 | 166 | 167 | ..\Imgs\Wires\RS_WireDownRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 168 | 169 | 170 | ..\Imgs\Wires\RS_WireHoriz.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 171 | 172 | 173 | ..\Imgs\Wires\RS_WireUpLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 174 | 175 | 176 | ..\Imgs\Wires\RS_WireUpRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 177 | 178 | 179 | ..\Imgs\Wires\RS_WireVert.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 180 | 181 | 182 | ..\Imgs\slime_block.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 183 | 184 | 185 | ..\Imgs\TNT.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 186 | 187 | -------------------------------------------------------------------------------- /RsMapper/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace RsMapper.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /RsMapper/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RsMapper/RsComponent.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace RsMapper 9 | { 10 | /// 11 | /// Represents a redstone component. 12 | /// 13 | public class RsComponent 14 | { 15 | [JsonProperty("name")] 16 | public string name { get; set; } 17 | [JsonProperty("type")] 18 | public string type { get; set; } 19 | [JsonProperty("image")] 20 | public string image { get; set; } 21 | [JsonProperty("info")] 22 | public string info { get; set; } 23 | [JsonProperty("acceptswire")] 24 | public string acceptswire { get; set; } 25 | } 26 | 27 | /// 28 | /// Represents the root level array of the JSON file. 29 | /// 30 | public class RootObject 31 | { 32 | [JsonProperty("RsComponents")] 33 | public List RsComponents { get; set; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /RsMapper/RsMapper.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {F96B009A-9D79-49C9-9F1C-4460AB2BD132} 8 | WinExe 9 | RsMapper 10 | RsMapper 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | icon_0uP_icon.ico 37 | 38 | 39 | 40 | ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll 41 | 42 | 43 | ..\packages\Octokit.0.48.0\lib\net46\Octokit.dll 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Form 65 | 66 | 67 | Form1.cs 68 | 69 | 70 | Form 71 | 72 | 73 | AboutBox1.cs 74 | 75 | 76 | Form 77 | 78 | 79 | CommandEnter.cs 80 | 81 | 82 | Component 83 | 84 | 85 | Component 86 | 87 | 88 | Form 89 | 90 | 91 | CreateCustomMod.cs 92 | 93 | 94 | Form 95 | 96 | 97 | DownloadProgress.cs 98 | 99 | 100 | Form 101 | 102 | 103 | Modpacks.cs 104 | 105 | 106 | Form 107 | 108 | 109 | UnsavedDialog.cs 110 | 111 | 112 | Form 113 | 114 | 115 | UpdateCheck.cs 116 | 117 | 118 | True 119 | True 120 | imgs.resx 121 | 122 | 123 | 124 | 125 | 126 | 127 | Form1.cs 128 | 129 | 130 | AboutBox1.cs 131 | 132 | 133 | CommandEnter.cs 134 | 135 | 136 | CreateCustomMod.cs 137 | 138 | 139 | DownloadProgress.cs 140 | 141 | 142 | Modpacks.cs 143 | 144 | 145 | UnsavedDialog.cs 146 | 147 | 148 | UpdateCheck.cs 149 | 150 | 151 | ResXFileCodeGenerator 152 | imgs.Designer.cs 153 | 154 | 155 | ResXFileCodeGenerator 156 | Resources.Designer.cs 157 | Designer 158 | 159 | 160 | True 161 | Resources.resx 162 | True 163 | 164 | 165 | 166 | 167 | SettingsSingleFileGenerator 168 | Settings.Designer.cs 169 | 170 | 171 | True 172 | Settings.settings 173 | True 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | -------------------------------------------------------------------------------- /RsMapper/icon_0uP_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GreenJamesDev/RsMapper/1e4098cd358c7eb21415a2ec0b41e57fa3b229b0/RsMapper/icon_0uP_icon.ico -------------------------------------------------------------------------------- /RsMapper/imgs.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace RsMapper { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class imgs { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal imgs() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RsMapper.imgs", typeof(imgs).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /RsMapper/imgs.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | text/microsoft-resx 91 | 92 | 93 | 1.3 94 | 95 | 96 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 97 | 98 | 99 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 100 | 101 | -------------------------------------------------------------------------------- /RsMapper/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | RsMapper is an open-source application for drawing and visualizing redstone circuitry. RsMapper has the ability to detect and use custom components, meaning that modded blocks can be represented. 4 | 5 | ***Note:*** *The current version number of RsMapper is below 1.0.0.0, meaning that it's still in pre-release phase. There may be some bugs or missing features.* 6 | 7 | ![](https://i.imgur.com/rNrQvSC.png) 8 | 9 | ## Features 10 | 11 | - Custom Component Support 12 | - Built-in Update Checker 13 | - Automatically detects and fixes missing component files. 14 | 15 | ### Future features / In progress 16 | 17 | - Built-in custom component creator. (Modpacks) 18 | - .rsch Redstone Schematic Files 19 | - Direct Minecraft Integration (Far Future) 20 | - Signal Simulation (Far Future) 21 | 22 | ## Project Links 23 | 24 | - GitHub Repository: https://github.com/GreenJamesDev/RsMapper 25 | - Documentation: https://github.com/GreenJamesDev/RsMapper/wiki 26 | - Discussion: https://github.com/GreenJamesDev/RsMapper/discussions 27 | - Issues: https://github.com/GreenJamesDev/RsMapper/issues 28 | --------------------------------------------------------------------------------