diff --git a/.gitignore b/.gitignore
index 4172c07..28d9e23 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules/
.mcattributes
package-lock.json
+dist/
\ No newline at end of file
diff --git a/assets/adv_computer.png b/assets/adv_computer.png
new file mode 100644
index 0000000..19ae720
Binary files /dev/null and b/assets/adv_computer.png differ
diff --git a/assets/adv_pocket_computer.png b/assets/adv_pocket_computer.png
new file mode 100644
index 0000000..743f5c0
Binary files /dev/null and b/assets/adv_pocket_computer.png differ
diff --git a/assets/adv_turtle.png b/assets/adv_turtle.png
new file mode 100644
index 0000000..e488e0f
Binary files /dev/null and b/assets/adv_turtle.png differ
diff --git a/assets/basic_computer.png b/assets/basic_computer.png
new file mode 100644
index 0000000..2f45e0e
Binary files /dev/null and b/assets/basic_computer.png differ
diff --git a/assets/command_computer.png b/assets/command_computer.png
new file mode 100644
index 0000000..0b00de6
Binary files /dev/null and b/assets/command_computer.png differ
diff --git a/assets/library.png b/assets/library.png
new file mode 100644
index 0000000..1d70e27
Binary files /dev/null and b/assets/library.png differ
diff --git a/assets/network-require.png b/assets/network-require.png
new file mode 100644
index 0000000..3ffe356
Binary files /dev/null and b/assets/network-require.png differ
diff --git a/assets/organization-logo.png b/assets/organization-logo.png
deleted file mode 100644
index 6d52394..0000000
Binary files a/assets/organization-logo.png and /dev/null differ
diff --git a/assets/peripheral.png b/assets/peripheral.png
new file mode 100644
index 0000000..826f724
Binary files /dev/null and b/assets/peripheral.png differ
diff --git a/assets/pocket_computer.png b/assets/pocket_computer.png
new file mode 100644
index 0000000..06d5ff8
Binary files /dev/null and b/assets/pocket_computer.png differ
diff --git a/assets/turtle.png b/assets/turtle.png
new file mode 100644
index 0000000..a3cfb66
Binary files /dev/null and b/assets/turtle.png differ
diff --git a/blocks/IDE/index.json b/blocks/IDE/index.json
index 744bbbe..6e73aec 100644
--- a/blocks/IDE/index.json
+++ b/blocks/IDE/index.json
@@ -7,9 +7,16 @@
"keyword": "test",
"license": "GPL-3.0-or-later",
"peripherals": false,
- "library": false,
- "turtle": false,
- "pocket": false,
+ "library": true,
"require_network": false,
- "dependencies": {}
+ "dependencies": {},
+ "design_for_computer": {
+ "basic": true,
+ "adv": true,
+ "command": true,
+ "pocket": true,
+ "advpocket": true,
+ "turtle": true,
+ "advturtle": true
+ }
}
\ No newline at end of file
diff --git a/blocks/Template/index.json b/blocks/Template/index.json
index c23bd58..e0e7681 100644
--- a/blocks/Template/index.json
+++ b/blocks/Template/index.json
@@ -8,8 +8,15 @@
"license": "GPL-3.0-or-later",
"peripherals": false,
"library": false,
- "turtle": false,
- "pocket": false,
"require_network": false,
- "dependencies": {}
+ "dependencies": {},
+ "design_for_computer": {
+ "basic": false,
+ "adv": false,
+ "command": false,
+ "pocket": false,
+ "advpocket": false,
+ "turtle": false,
+ "advturtle": false
+ }
}
diff --git a/package.json b/package.json
index 689272b..5873519 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,11 @@
{
"name": "ccide",
- "version": "1.0.2",
+ "version": "1.1",
"description": "ComputerCraft mod virtual lua IDE",
"main": "index.js",
"scripts": {
"dev": "electron .",
- "nodedev": "node ."
+ "build": "electron-packager . ccIDE --platform=win32 --arch=x64 --icon=assets/ccIDEIcon.ico --out=dist --overwrite"
},
"author": "DPSoftware Foundation",
"license": "GPL-3.0-or-later",
diff --git a/src/blocksmanager.js b/src/blocksmanager.js
index 62af5ea..99d403b 100644
--- a/src/blocksmanager.js
+++ b/src/blocksmanager.js
@@ -4,8 +4,25 @@ const { DOMParser, XMLSerializer } = require('xmldom');
const peripheralsfolder = path.join(__dirname, "../blocks");
+const fallbackImagePath = path.join(__dirname, '..', 'assets', 'noimagefallback.png'); // Path to fallback image
+
let registedblock = {}
+const defineicon = {
+ computer: {
+ basic: path.join(__dirname, '..', 'assets', 'basic_computer.png'),
+ adv: path.join(__dirname, '..', 'assets', 'adv_computer.png'),
+ command: path.join(__dirname, '..', 'assets', 'command_computer.png'),
+ pocket: path.join(__dirname, '..', 'assets', 'pocket_computer.png'),
+ advpocket: path.join(__dirname, '..', 'assets', 'adv_pocket_computer.png'),
+ turtle: path.join(__dirname, '..', 'assets', 'turtle.png'),
+ advturtle: path.join(__dirname, '..', 'assets', 'adv_turtle.png')
+ },
+ peripheral: path.join(__dirname, '..', 'assets', 'peripheral.png'),
+ library: path.join(__dirname, '..', 'assets', 'library.png'),
+ networkreq: path.join(__dirname, '..', 'assets', 'network-require.png')
+}
+
function mergeXml(xml1, xml2) {
const parser = new DOMParser();
const serializer = new XMLSerializer();
@@ -82,7 +99,31 @@ function extractFolderName(path) {
return folderName;
}
+function fileExists(filePath) {
+ try {
+ return fs.existsSync(filePath);
+ } catch (err) {
+ return false;
+ }
+}
+
+function addimageiconinfo(div, src, tiptool) {
+ const img = document.createElement('img');
+ img.src = src
+ img.classList.add("libimageicon");
+ img.setAttribute('data-bs-toggle', "tooltip");
+ img.setAttribute('data-bs-placement', "bottom");
+ img.setAttribute('data-bs-title', tiptool);
+ div.appendChild(img);
+ console.log(`added image ${img}`);
+}
+
function scanindex() {
+ let foundedpackages = 0;
+ document.getElementById('statusMessage').textContent = "Scanning Packages...";
+ // clear all item in libcontainer
+ document.getElementById('libcontainer').innerHTML = "";
+
const files = fs.readdirSync(peripheralsfolder);
// Iterate through files and directories
@@ -101,18 +142,96 @@ function scanindex() {
const jsonData = JSON.parse(content);
blockfoldername = extractFolderName(filePath);
- registedblock[blockfoldername] = {
- infomation: jsonData,
- image: null
- };
- console.log(`registered ${blockfoldername} blocks`)
+ registedblock[blockfoldername] = jsonData;
+ foundedpackages++;
+
+ // create item in list
+ const imagePath = path.join(filePath, "icon.png");
+
+ const libraryItem = document.createElement('div');
+ libraryItem.classList.add('library-item', 'overflow-auto', 'library-container');
+ libraryItem.setAttribute('data-libraryfolder', blockfoldername);
+
+ // add image
+ const img = document.createElement('img');
+ img.classList.add('libimage');
+ if (fileExists(imagePath)) {
+ img.src = imagePath;
+ } else {
+ img.src = fallbackImagePath;
+ }
+ libraryItem.appendChild(img);
+
+ // Create the library details container
+ const libraryDetails = document.createElement('div');
+ libraryDetails.classList.add('library-details');
+
+ // Create the title element
+ const title = document.createElement('h3');
+ title.textContent = jsonData.name + ` [v${jsonData.version} by ${jsonData.author}]`;
+ libraryDetails.appendChild(title);
+
+ // Create the description element
+ const description = document.createElement('p');
+ description.innerHTML = jsonData.description;
+ libraryDetails.appendChild(description);
+
+ console.log(jsonData)
+ if (jsonData.design_for_computer.basic) {
+ addimageiconinfo(libraryDetails, defineicon.computer.basic, "Basic Computer Supported");
+ }
+ if (jsonData.design_for_computer.adv) {
+ addimageiconinfo(libraryDetails, defineicon.computer.adv, "Advanced Computer Supported");
+ }
+ if (jsonData.design_for_computer.command) {
+ addimageiconinfo(libraryDetails, defineicon.computer.command, "Command Computer Supported");
+ }
+ if (jsonData.design_for_computer.pocket) {
+ addimageiconinfo(libraryDetails, defineicon.computer.pocket, "Pocket Computer Supported");
+ }
+ if (jsonData.design_for_computer.advpocket) {
+ addimageiconinfo(libraryDetails, defineicon.computer.advpocket, "Advanced Pocket Computer Supported");
+ }
+ if (jsonData.design_for_computer.turtle) {
+ addimageiconinfo(libraryDetails, defineicon.computer.turtle, "Turtle Supported");
+ }
+ if (jsonData.design_for_computer.advturtle) {
+ addimageiconinfo(libraryDetails, defineicon.computer.advturtle, "Advanced Turtle Supported");
+ }
+
+ // check computer type support
+ if (jsonData.peripherals) {
+ addimageiconinfo(libraryDetails, defineicon.peripheral, "Peripheral");
+ }
+ if (jsonData.library) {
+ addimageiconinfo(libraryDetails, defineicon.library, "Library");
+ }
+ if (jsonData.require_network) {
+ addimageiconinfo(libraryDetails, defineicon.networkreq, "Require Network");
+ }
+
+ libraryItem.appendChild(libraryDetails);
+ document.getElementById('libcontainer').appendChild(libraryItem);
+ console.log(`registered ${blockfoldername} blocks and added to packages managers`)
}
})
}
});
+
+ document.querySelectorAll('.library-item').forEach(item => {
+ item.addEventListener('click', () => {
+ item.classList.toggle('selected');
+ });
+ });
+
+ document.getElementById('statusMessage').textContent = `Founded ${foundedpackages} Packages`;
+ setTimeout(() => {
+ document.getElementById('statusMessage').textContent = `Ready`;
+ }, 1000);
}
+
module.exports = {
loadperipheral,
scanindex
diff --git a/src/index.html b/src/index.html
index c9c53a1..1ad9467 100644
--- a/src/index.html
+++ b/src/index.html
@@ -7,6 +7,7 @@
@@ -17,12 +18,9 @@
-