Haematite's Recent Forum Activity

  • > chunchun, hmm that's weird. You should only need to regenerate the definitions if you add new objects etc. in Construct. That looks like it might be a VSCode bug as that bit's not handled by the extension at that point

    Hello, I have the same problem on two different computers! Is there a way around this? -Use “Type”a lot. can only be “Redefined”frequently, but each 'redefinition' has to wait 30 seconds or so.~~~If there’s anything I can do, anything I missed, please contact me

    chunchun I've just been looking at this and I think VSCode isn't picking up the definition file. If you add a file called jsconfig.json into the project (in the same folder as the c3.d.ts) with the following contents:

    { }

    It should work better.

  • Felixoo no idea why, that looks like it should be working. I've recreated pretty much exactly what you've done here and it's working fine, if you want to take a look:

    edwardbonnett.com/script-test.c3p

  • So if you only have one ground object and one player object you should just be able to do this:

    	const player = runtime.objects.Player.getFirstInstance();
    	const ground = runtime.objects.Ground.getFirstInstance();
    	
    	if (player.testOverlap(ground)) {
    		console.log('Hit');
    	}
    

    If you have many ground objects and one player object you can do this:

    	const player = runtime.objects.Player.getFirstInstance();
    	const groundObjects = runtime.objects.Ground.getAllInstances();
    	// loop through every ground object and see if any of them overlap with the player
    	groundObjects.forEach((ground) => {
    		if (player.testOverlap(ground)) {
    			console.log('Hit');
    		}
    	});
    	
    

    And if you have many ground objects and many player objects you'd need to something like this:

    	const playerObjects = runtime.objects.Player.getAllInstances();
    	const groundObjects = runtime.objects.Ground.getAllInstances();
    	// loop through every player object and every ground object and see if any of them overlap with the player
    	playerObjects.forEach((player) => {
    		groundObjects.forEach((ground) => {
    			if (player.testOverlap(ground)) {
    				console.log('Hit');
    			}
    		});
    	});
    

    Hopefully that makes sense! Basically "getAllInstances" returns an array, or list, of your objects and you need to loop through each of them and test if they overlap with your player individually. "getFirstInstance" just returns one of the objects, the first one in that list - which is fine if you only have one of that particular object(such as a player object)

  • chunchun, hmm that's weird. You should only need to regenerate the definitions if you add new objects etc. in Construct. That looks like it might be a VSCode bug as that bit's not handled by the extension at that point

  • Great! Let me know if you encounter any other issues or think of any improvement!

  • chunchunPinbak Think I've just managed to sort this. I was assuming that the eventSheets and families folders existed and it was failing. If you update to the newest version of the vscode extension then it's hopefully fixed. Let me know if you're still having issues! Thanks both for testing this

    It should auto update to v1.0.6:

    But I think you can do it manually too marketplace.visualstudio.com/items

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Pinbak How strange, so there's no c3.d.ts file in the root of your project?

    Are you able to take a look in the "Log (Extension Host)" output in vscode and see if there's any errors coming up when you're generating?

    I've just retried on a few projects and it seems to be generating ok for me so I'm thinking it must be a certain object / instance variable name it's struggling with. If you're ok with sharing, a list of your object names might be useful too - in case it is that.

    Really appreciate your help on this!

  • Pinbak In order to connect to Construct you'll need to make sure you add the vscode addon to your project: construct.net/en/make-games/addons/603/vs-code-plugin

    If you just want the code autocomplete you can just ignore the code message though.

    The addon was broken (thanks to chunchun for pointing that out!) so you may need to update it to the new version. Let me know if you're still having issues though

  • Hi all, I have created a Visual Studio Code extension which can be downloaded here:

    marketplace.visualstudio.com/items

    This features auto-completion for javascript projects, as well as generating typescript definitions based on your project (so you'll get behaviors, instance variables, global variables etc. all available). This includes typescript definitions for all currently exposed scripting interfaces and I'll try and keep these up to date.

    If you install the VS Code Plugin from the addon store and add it to your construct project you can also set up easier remote debugging and auto script reloading:

    construct.net/en/make-games/addons/603/vs-code-plugin

    If anyone just wants the basic typescript definitions without your own objects etc. in it then they're available here, you might need to update the behaviors of the IWorldInstance as I currrently only inject the relevant ones to new interfaces as required as part of the extension:

    github.com/EdwardBonnett/c3-vscode-extension/blob/main/templates/c3.d.ts

    There's a lot more details on the extension page, but I've never created a VS Code extension before and I'd love any feedback / suggestions for improvements.

    Thanks!

    Tagged:

  • I've been getting annoyed with having to keep refreshing the scripts when working in an external IDE so I've made a plugin to take care of that for me. It will check every couple of seconds whether any files have changed and then re-add them to the solution if they have.

    construct.net/en/make-games/addons/600/automatic-script-reloading

    This makes use of getting the folder handler straight from the IndexedDB storage which I'm guessing isn't intended - so this may well break in the future. There's also a small possibility of file corruption; I've not encountered any issues yet, but use at your own risk and take a backup first.

    Tagged:

  • I thought that might be your answer, but thought it was worth asking the question anyway. Thanks!

  • Not sure if this is the right place to put this, but I'm curious as to whether there will ever be a move over from the CodeMirror library currently powering the script editor to the one behind VS Code, Monaco (https://microsoft.github.io/monaco-editor/).

    I find the general syntax highlighting, search, line wrapping, code completion, lack of keyboard shortcuts etc. to be quite frustrating to use in the current editor and would love to see a slightly more fleshed out one.

    I'm currently using Construct to create a game entirely with js and in comparison to other editors I use in my day job I find it very frustrating to use.

    Alternatively, some way to be able to hook into some more features with the plugins sdk so I can do this myself would be great. I'm more than happy to implement it, and have actually done this in other projects in the past.

    I'm aware that we can use external code editors when using it as a pwa, but it seems a shame to have to resort to that when this is primarily a browser based tool.

Haematite's avatar

Haematite

Member since 29 Dec, 2011

Twitter
Haematite has 1 followers

Trophy Case

  • 12-Year Club
  • Forum Contributor Made 100 posts in the forums
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

17/44
How to earn trophies