Domarius

Haxe, verbose, linux paths

Sep 5th, 2021
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 46.18 KB | None | 0 0
  1. Haxe language server started
  2. Haxe Path: /home/domarius/My Files/Game Development/Savage Steel/work/Game/Kha/Tools/haxe/haxe-linux64
  3. Using --server-connect
  4. Haxe connected!
  5. Processing Arguments [--display,{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"supportsResolve":true,"exclude":["zpp_nape"],"maxCompletionItems":1000}}]
  6. Completion Response =
  7. {"jsonrpc":"2.0","id":0,"result":{"result":{"methods":["display/definition","server/contexts","server/moduleCreated","server/invalidate","server/module","server/files","initialize","display/completion","typer/compiledTypes","display/references","server/modules","server/memory/context","display/completionItem/resolve","display/typeDefinition","server/memory","display/implementation","display/hover","display/package","display/signatureHelp","server/memory/module","server/readClassPaths","server/configure"],"haxeVersion":{"major":4,"minor":2,"patch":1,"pre":null,"build":"816d90a"},"protocolVersion":{"major":0,"minor":5,"patch":0}},"timestamp":1630828867.767025}}
  8. Stats = 0 files, 0 classes, 0 methods, 0 macros
  9. Time spent : 0.000s
  10. Processing Arguments [--display,{"jsonrpc":"2.0","id":1,"method":"server/configure","params":{"noModuleChecks":true,"print":{"completion":false,"reusing":false},"legacyCompletion":false}}]
  11. Stats = 0 files, 0 classes, 0 methods, 0 macros
  12. Time spent : 0.000s
  13. Listening on port 6000
  14. Haxe Path: /home/domarius/My Files/Game Development/Savage Steel/work/Game/Kha/Tools/haxe/haxe-linux64
  15. Using --server-connect
  16. Processing Arguments [--no-output,--each,--no-output,--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game/build,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Sources,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Backends/HTML5,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources,-D,hxcpp_smart_strings,-D,sys_g1,-D,sys_g2,-D,sys_g3,-D,sys_a1,-D,sys_a2,-D,kha_js,-D,kha_g1,-D,kha_g2,-D,kha_g3,-D,kha_a1,-D,kha_a2,-D,canvas_id=khanvas,-D,script_name=kha,-D,sys_g4,-D,kha_g4,-D,kha_webgl,-D,sys_debug-html5,-D,kha_debug-html5,-D,kha_debug-html5_js,-D,sys_html5,-D,kha_html5,-D,kha_html5_js,-D,sys_debug_html5,-D,kha_debug_html5,-D,kha,-D,kha_version=1810,-D,kha_project_name=PixelTest,-js,debug-html5/kha.js,-debug,-main,Main]
  17. Defines canvas_id=khanvas,dce=std,debug=1,haxe3=1,haxe4=1,haxe=4.2.1,haxe_ver=4.201,hxcpp_smart_strings=1,js-es5=1,js=1,js_es5=1,js_es=5,kha=1,kha_a1=1,kha_a2=1,kha_debug-html5=1,kha_debug-html5_js=1,kha_debug_html5=1,kha_debug_html5_js=1,kha_g1=1,kha_g2=1,kha_g3=1,kha_g4=1,kha_html5=1,kha_html5_js=1,kha_js=1,kha_project_name=PixelTest,kha_version=1810,kha_webgl=1,script_name=kha,source-header=Generated by Haxe 4.2.1+816d90a,sys_a1=1,sys_a2=1,sys_debug-html5=1,sys_debug_html5=1,sys_g1=1,sys_g2=1,sys_g3=1,sys_g4=1,sys_html5=1,target.name=js,target.unicode=true,target.utf16=true,true=1,utf16=1
  18. Using signature 37a3f9c28ada1511920619586cba582c
  19. Display position: ?: -1--1
  20. Haxe connected!
  21. Processing Arguments [--display,{"jsonrpc":"2.0","id":2,"method":"initialize","params":{"supportsResolve":true,"exclude":["zpp_nape"],"maxCompletionItems":1000}}]
  22. Completion Response =
  23. {"jsonrpc":"2.0","id":2,"result":{"result":{"methods":["display/definition","server/contexts","server/moduleCreated","server/invalidate","server/module","server/files","initialize","display/completion","typer/compiledTypes","display/references","server/modules","server/memory/context","display/completionItem/resolve","display/typeDefinition","server/memory","display/implementation","display/hover","display/package","display/signatureHelp","server/memory/module","server/readClassPaths","server/configure"],"haxeVersion":{"major":4,"minor":2,"patch":1,"pre":null,"build":"816d90a"},"protocolVersion":{"major":0,"minor":5,"patch":0}},"timestamp":1630828867.86773}}
  24. Stats = 0 files, 0 classes, 0 methods, 0 macros
  25. Time spent : 0.000s
  26. Processing Arguments [--display,{"jsonrpc":"2.0","id":3,"method":"server/configure","params":{"noModuleChecks":true,"print":{"completion":false,"reusing":false},"legacyCompletion":false}}]
  27. Stats = 0 files, 0 classes, 0 methods, 0 macros
  28. Time spent : 0.000s
  29. Processing Arguments [--no-output,--each,--no-output,--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game/build,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Sources,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Backends/HTML5,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources,-D,hxcpp_smart_strings,-D,sys_g1,-D,sys_g2,-D,sys_g3,-D,sys_a1,-D,sys_a2,-D,kha_js,-D,kha_g1,-D,kha_g2,-D,kha_g3,-D,kha_a1,-D,kha_a2,-D,canvas_id=khanvas,-D,script_name=kha,-D,sys_g4,-D,kha_g4,-D,kha_webgl,-D,sys_debug-html5,-D,kha_debug-html5,-D,kha_debug-html5_js,-D,sys_html5,-D,kha_html5,-D,kha_html5_js,-D,sys_debug_html5,-D,kha_debug_html5,-D,kha,-D,kha_version=1810,-D,kha_project_name=PixelTest,-js,debug-html5/kha.js,-debug,-main,Main]
  30. Defines canvas_id=khanvas,dce=std,debug=1,haxe3=1,haxe4=1,haxe=4.2.1,haxe_ver=4.201,hxcpp_smart_strings=1,js-es5=1,js=1,js_es5=1,js_es=5,kha=1,kha_a1=1,kha_a2=1,kha_debug-html5=1,kha_debug-html5_js=1,kha_debug_html5=1,kha_debug_html5_js=1,kha_g1=1,kha_g2=1,kha_g3=1,kha_g4=1,kha_html5=1,kha_html5_js=1,kha_js=1,kha_project_name=PixelTest,kha_version=1810,kha_webgl=1,script_name=kha,source-header=Generated by Haxe 4.2.1+816d90a,sys_a1=1,sys_a2=1,sys_debug-html5=1,sys_debug_html5=1,sys_g1=1,sys_g2=1,sys_g3=1,sys_g4=1,sys_html5=1,target.name=js,target.unicode=true,target.utf16=true,true=1,utf16=1
  31. Using signature 37a3f9c28ada1511920619586cba582c
  32. Display position: ?: -1--1
  33. > /mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx:100: characters 9-22 : Unknown identifier : findNewTarget
  34. > /mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx:106: characters 21-25 : Cannot access this from a static function
  35. > /mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx:112: characters 16-22 : Cannot access target in static function
  36. Stats = 1003 files, 977 classes, 4053 methods, 27 macros
  37. Time spent : 1.300s
  38. Failed - try fixing the error(s) and restarting the language server:
  39.  
  40. /mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx:100: characters 9-22 : Unknown identifier : findNewTarget
  41. /mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx:106: characters 21-25 : Cannot access this from a static function
  42. /mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx:112: characters 16-22 : Cannot access target in static function
  43. Processing Arguments [--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game,-D,display-details,--no-output,--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game/build,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Sources,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Backends/HTML5,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources,-D,hxcpp_smart_strings,-D,sys_g1,-D,sys_g2,-D,sys_g3,-D,sys_a1,-D,sys_a2,-D,kha_js,-D,kha_g1,-D,kha_g2,-D,kha_g3,-D,kha_a1,-D,kha_a2,-D,canvas_id=khanvas,-D,script_name=kha,-D,sys_g4,-D,kha_g4,-D,kha_webgl,-D,sys_debug-html5,-D,kha_debug-html5,-D,kha_debug-html5_js,-D,sys_html5,-D,kha_html5,-D,kha_html5_js,-D,sys_debug_html5,-D,kha_debug_html5,-D,kha,-D,kha_version=1810,-D,kha_project_name=PixelTest,-js,debug-html5/kha.js,-debug,-main,Main,--display,/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx@0@diagnostics]
  44. Defines canvas_id=khanvas,dce=std,debug=1,display-details=1,display_details=1,haxe3=1,haxe4=1,haxe=4.2.1,haxe_ver=4.201,hxcpp_smart_strings=1,js-es5=1,js=1,js_es5=1,js_es=5,kha=1,kha_a1=1,kha_a2=1,kha_debug-html5=1,kha_debug-html5_js=1,kha_debug_html5=1,kha_debug_html5_js=1,kha_g1=1,kha_g2=1,kha_g3=1,kha_g4=1,kha_html5=1,kha_html5_js=1,kha_js=1,kha_project_name=PixelTest,kha_version=1810,kha_webgl=1,script_name=kha,source-header=Generated by Haxe 4.2.1+816d90a,sys_a1=1,sys_a2=1,sys_debug-html5=1,sys_debug_html5=1,sys_g1=1,sys_g2=1,sys_g3=1,sys_g4=1,sys_html5=1,target.name=js,target.unicode=true,target.utf16=true,true=1,utf16=1
  45. Using signature 37a3f9c28ada1511920619586cba582c
  46. Display position: /home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx: 0-0
  47. Stats = 601 files, 977 classes, 4053 methods, 27 macros
  48. Time spent : 0.764s
  49. Processing Arguments [--display,{"jsonrpc":"2.0","id":4,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  50. Stats = 0 files, 0 classes, 0 methods, 0 macros
  51. Time spent : 0.000s
  52. Processing Arguments [--display,{"jsonrpc":"2.0","id":5,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  53. Stats = 0 files, 0 classes, 0 methods, 0 macros
  54. Time spent : 0.000s
  55. Processing Arguments [--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game,-D,display-details,--no-output,--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game/build,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Sources,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Backends/HTML5,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources,-D,hxcpp_smart_strings,-D,sys_g1,-D,sys_g2,-D,sys_g3,-D,sys_a1,-D,sys_a2,-D,kha_js,-D,kha_g1,-D,kha_g2,-D,kha_g3,-D,kha_a1,-D,kha_a2,-D,canvas_id=khanvas,-D,script_name=kha,-D,sys_g4,-D,kha_g4,-D,kha_webgl,-D,sys_debug-html5,-D,kha_debug-html5,-D,kha_debug-html5_js,-D,sys_html5,-D,kha_html5,-D,kha_html5_js,-D,sys_debug_html5,-D,kha_debug_html5,-D,kha,-D,kha_version=1810,-D,kha_project_name=PixelTest,-js,debug-html5/kha.js,-debug,-main,Main,--display,{"jsonrpc":"2.0","id":6,"method":"display/completion","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx","contents":"package;\nimport kha.Image;\nimport kha.Assets;\nimport kha.Color;\nusing controllers.CharacterController;\nusing pixelengine.PixelGraphics;\nusing Character.CharacterState;\n\nenum EnemyState{\n IDLE;\n FLANK;\n NAVIGATE;\n CLOSE_IN;\n NAVIGATE_WAIT; //Extra state when changing from CLOSE_IN to NAVIGATE, to delay their reaction time when chasing you after you try and escape. Without it, it almost seems pre-emptive.\n}\nenum AI_TILES{\n NONE;\n JUMP_LEFT;\n JUMP_UP;\n JUMP_RIGHT;\n}\n\nclass Enemy extends Character{\n var attack_zone:HitBox;\n var lunge_attack_zone:HitBox;\n var turn_at_edge:Bool;\n var enemy_state:EnemyState = IDLE;\n var attack_cooldown:util.Timer;\n var jump_cooldown:util.Timer;\n var react_cooldown:util.Timer;\n var target:Character = null;\n var jump_force_x:Float;\n var id:Int;\n\n var flank_left:Bool = true;//Otherwise, flank right.\n\n public function new (id:Int, type:String, init_x:Int = 0, init_y:Int = 0){\n this.id = id;\n super(type, type+id, new CharacterController(), init_x, init_y);\n setCharacter(type);\n }\n\n\tpublic override function reset(){\n\t\tsuper.reset();\n\t\tsetCharacter(type);\n\t}\n\n public function setCharacter(name:String){\n\t\thitbox.setSize(20,40);\n\t\thitbox.setOffset(-10,-40);\n attack_cooldown = new util.Timer(2);\n jump_cooldown = new util.Timer(2);\n react_cooldown = new util.Timer(0.25);\n\t\t//character.sprite.setPaletteIndex(0);\n walk_speed = 1;\n attack_zone = new HitBox(0,0,20,40,10,-41);\n lunge_attack_zone = new HitBox(0,0,10,40,50,-41);\n air_decelleration = 1; //None\n gravity = 0.07;\n jump_force = 2.7;\n jump_force_x = 1.4;\n walkLeft();\n health = 3;\n enemy_state = IDLE;\n\n //Things to put into settings\n //Default settings\n shoot_frame = -1;\n shoot_source = PixelTest.enemy_projectile_pool;\n t\n switch(name){\n case \"Zombie\":\n walk_speed = 0.1;\n //anim_movement = [2,1,8,1,0,2,1,5,0];\n case \"Imp\":\n //anim_movement = [9,8,9,9];\n walk_speed = 1.5;\n lunge_attack_zone.set(0,0,20,40,50,-41);\n case \"Harpie\":\n flying = true;\n swoop_attack = true;\n attack_zone.set(0,0,20,20,20,10);\n hitbox.setSize(30,40);\n gravity = 0.07;\n case \"Worm\":\n hitbox.setSize(23,28);\n hitbox.setOffset(-10,-28);\n walk_speed = 0.20;\n attack_zone.set(0,0,100,30,10,-28);\n shoot_frame = 11;\n shoot_vel_x = 2;\n shoot_offset_x = 15;\n shoot_offset_y = -20;\n shoot_type = \"Fireball\";\n shoot_death = \"Fireball explosion\";\n turn_at_edge = true;\n //anim_movement = [0,0,0,0,0,3,1,0,1];\n case \"Demon\":\n walk_speed = 2;\n }\n findNewTarget();\n }\n\n public static function retargetImps(){\n //Let Imps pick their nearest target\n for (c in PixelTest.enemies.array){\n if(c == this)\n continue;\n if(c.type != \"Imp\")\n continue;\n var e = cast (c, Enemy);\n e.pickTarget();\n if(target!=null)\n e.changeEnemyState(NAVIGATE);\n }\n\n //Find a partner to flank.\n // for (c in PixelTest.enemies.array){\n // if(c == this)\n // continue;\n // var e = cast (c, Enemy);\n // if(e.target == target){\n // e.changeEnemyState(FLANK);\n // break;\n // }\n // }\n }\n\n public override function updateFirst(){\n super.updateFirst();\n attack_cooldown.Update(PixelTest.TIME_SLICE);\n jump_cooldown.Update(PixelTest.TIME_SLICE);\n react_cooldown.Update(PixelTest.TIME_SLICE);\n // trace(name+\" update react_cooldown: \"+react_cooldown.GetPercentage());\n }\n\n private override function updateNoControl(){\n if(type == \"Imp\"){\n //Jump back after attack\n if(on_ground && getState() == CharacterState.ATTACK && animator.isDone() && animator.getAnimName() == \"attack\"){\n jumpFixedVelocity(2 * (sprite.flip_x *-1),-0.5);\n }\n }\n super.updateNoControl();\n }\n\n private override function updateControl(){\n super.updateControl();\n //If character has control, do stuff like try to walk around and attack\n switch(enemy_state){\n case IDLE:\n case FLANK:\n doFlank();\n case NAVIGATE:\n doNavigate();\n determineNavigateState();\n case CLOSE_IN:\n doCloseIn();\n determineNavigateState();\n case NAVIGATE_WAIT:\n // trace(name+\" react_cooldown: \"+react_cooldown.GetPercentage());\n if(react_cooldown.Expired())\n changeEnemyState(NAVIGATE);\n } \n //Attack if in range\n var target:Character = PixelTest.players.getOverlapping(attack_zone);\n if(attack_cooldown.Expired() && target != null){\n attack();\n attack_cooldown.Restart();\n }\n\n if(type == \"Imp\"){\n if(on_ground){\n //Jump back if overlapping player\n if(PixelTest.players.getOverlapping(hitbox) != null)\n jumpFixedVelocity(0.75 * (sprite.flip_x *-1),-0.5);\n\n //Jump back if overlapping other imp\n var other_imp = PixelTest.enemies.getOverlappingCharacter(this, \"Imp\");\n if(other_imp != null && other_imp.getState() == CharacterState.ATTACK)\n jumpFixedVelocity(1.5 * (sprite.flip_x *-1),-0.5);\n \n //Lunge to attack\n var target:Character = PixelTest.players.getOverlapping(lunge_attack_zone);\n if(attack_cooldown.Expired() && target != null && PixelTest.players.getOverlapping(attack_zone) == null){//Only do a lunge attack if player is not close enough for a normal attack.\n trace(\"lunge!\");\n jumpFixedVelocity(2 * (sprite.flip_x),-1);\n }\n }\n }\n // trace(\"Enemy position and velocity before collision: sprite.y: \"+sprite.y+\", vel_y: \"+vel_y+\", tile_y: \"+tile_y);\n }\n\n private override function updateLast(){\n super.updateLast();\n //Bounce at edge of screen behaviour\n if(sprite.x > PixelTest.screen_width-8){ //magic number: Rough width of character\n walkLeft();\n }\n if(sprite.x < 0 +8){ //magic number: Rough width of character\n walkRight();\n }\n\n //Turn around at walls\n if(PixelTest.level.getTileTypePx(Std.int(sprite.x + (8*sprite.flip_x)), Std.int(sprite.y)) == LevelTileset.TileType.SOLID){\n if(controller.getButton(RIGHT))\n walkLeft();\n else\n walkRight();\n }\n\n attack_zone.setPos(sprite.x, sprite.y);\n lunge_attack_zone.setPos(sprite.x, sprite.y);\n // trace(\"Enemy position and velocity AFTER collision: sprite.y: \"+sprite.y+\", vel_y: \"+vel_y+\", tile_y: \"+tile_y);\n }\n\n private function determineNavigateState(){\n if(target == null){\n enemy_state = IDLE;\n return;\n }\n\n if(swoop_attack){\n if(sprite.y >= target.sprite.y-65 && sprite.y <= target.sprite.y-64){\n vel_y=0;\n changeEnemyState(CLOSE_IN);\n }else{\n changeEnemyState(NAVIGATE);\n }\n }else{\n if(on_ground){ //Don't change states mid-jump, jumps are important to complete in their entirety to get to the next platform, to then make a decision on what to do.\n if(sprite.y >= target.sprite.y-8 && sprite.y <= target.sprite.y+8){\n changeEnemyState(CLOSE_IN);\n }else{\n changeEnemyState(NAVIGATE);\n }\n }\n }\n } \n\n private function changeEnemyState(new_state:EnemyState){\n if(enemy_state == new_state)\n return;\n if(enemy_state == CLOSE_IN && new_state == NAVIGATE)\n new_state = NAVIGATE_WAIT;\n trace(\"Enemy \"+name+\" changing enemy state to \"+new_state);\n // if(new_state == EnemyState.NAVIGATE){\n // if(id%2 == 0)\n // walkLeft();\n // else\n // walkRight();\n // }\n switch(new_state){\n case IDLE:\n case FLANK:\n flank_left = target.sprite.x < this.sprite.x;\n case NAVIGATE:\n case CLOSE_IN:\n case NAVIGATE_WAIT:\n react_cooldown.Restart();\n stop();\n }\n enemy_state = new_state;\n }\n\n private function doNavigate(){\n if(turn_at_edge && on_ground){\n //See if we need to fall off\n foot_tile = PixelTest.level.getTileTypePx(Std.int(sprite.x + (8*sprite.flip_x)), Std.int(sprite.y+1)); //Magic number: rough width of character\n if(on_ground && foot_tile == LevelTileset.TileType.AIR){\n if(controller.getButton(RIGHT))\n walkLeft();\n else\n walkRight();\n }\n }\n\n //If you have a swoop ability, you need to get up high\n if(swoop_attack)\n doNavigateSwoop();\n else\n doNavigateWalk();\n }\n\n private function doNavigateSwoop(){\n if(sprite.y > target.sprite.y-64)\n vel_y=-0.5;\n else\n vel_y=1;\n }\n\n private function doNavigateWalk(){\n if(on_ground){\n if(isWalkingLeft())\n walkLeft();\n else\n walkRight();\n if(sprite.y > target.sprite.y){\n var ai_tile:Int = PixelTest.level.getAiMap(tile_x,tile_y);\n switch(ai_tile){\n case 1:\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 2:\n jumpFixedVelocity(0,-jump_force);\n case 3:\n jumpFixedVelocity(jump_force_x,-jump_force);\n case 4:\n if(isWalkingLeft())\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 5:\n if(isWalkingRight())\n jumpFixedVelocity(jump_force_x,-jump_force);\n }\n }else{\n if(foot_tile == LevelTileset.TileType.PLATFORM){\n controller.setAndAutoRelease(DROP, 0.1);\n // trace(\"Dropping\");\n }\n }\n }\n }\n\n private function doFlank(){\n if(on_ground){\n if(flank_left){\n walkLeft();\n if(sprite.x < 32)\n changeEnemyState(NAVIGATE);\n }else{\n walkRight();\n if(sprite.x > PixelTest.screen_width-32)\n changeEnemyState(NAVIGATE);\n }\n \n if(sprite.y < target.sprite.y){\n var ai_tile:Int = PixelTest.level.getAiMap(tile_x,tile_y);\n switch(ai_tile){\n case 1:\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 2:\n jumpFixedVelocity(0,-jump_force);\n case 3:\n jumpFixedVelocity(jump_force_x,-jump_force);\n case 4:\n if(isWalkingLeft())\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 5:\n if(isWalkingRight())\n jumpFixedVelocity(jump_force_x,-jump_force);\n }\n }else{\n if(foot_tile == LevelTileset.TileType.PLATFORM){\n controller.setAndAutoRelease(DROP, 0.1);\n // trace(\"Dropping\");\n }\n }\n }\n }\n\n private function doCloseIn(){\n //Try not to overlap other enemies\n // for (enemy in PixelTest.enemies.array){\n // if(enemy == this)\n // continue;\n // if(enemy.getY() < getY()-16 || enemy.getY() > getY()) //Magic number: is rough height of character\n // continue;\n // if(controller.getButton(RIGHT) && enemy.getX() > getX() && enemy.getX() < getX()+8)//Woo magic number: rough width of character\n // walkLeft();\n // else if(controller.getButton(LEFT) && enemy.getX() < getX() && enemy.getX() > getX()-8)//Woo magic number: rough width of character\n // walkRight();\n // }\n\n if(swoop_attack){\n if(target.sprite.x > sprite.x){\n walkRight();\n }else{\n walkLeft();\n }\n }\n \n if(on_ground){\n var ai_tile:Int = PixelTest.level.getAiMap(tile_x,tile_y);\n // trace(\"ai tile: \"+ai_tile);\n if(target.sprite.x > sprite.x){\n walkRight();\n if(ai_tile == 5)\n jumpFixedVelocity(jump_force_x,-jump_force);\n }else{\n walkLeft();\n if(ai_tile == 4)\n jumpFixedVelocity(-jump_force_x,-jump_force);\n }\n }\n }\n\n private function pickTarget(){\n target = null;\n var dist:Float = 1000;\n var new_dist:Float;\n for(player in PixelTest.players.array){\n new_dist = getDistance(sprite.x, sprite.y, player.sprite.x, player.sprite.y); \n if(new_dist >= dist)\n continue;\n dist = new_dist;\n target = player;\n }\n }\n\n private function getDistance(x1:Float, y1:Float, x2:Float, y2:Float){\n return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n }\n\n public function walkLeft(){\n controller.setPressed(LEFT, true);\n controller.setPressed(RIGHT, false);\n attack_zone.flipX(true);\n lunge_attack_zone.flipX(true);\n }\n\n public function walkRight(){\n controller.setPressed(RIGHT, true);\n controller.setPressed(LEFT, false);\n attack_zone.flipX(false);\n lunge_attack_zone.flipX(false);\n }\n\n public function stop(){\n controller.setPressed(RIGHT, false);\n controller.setPressed(LEFT, false);\n }\n\n public function isWalkingLeft(){\n return sprite.getFlipX()==true;\n }\n\n public function isWalkingRight(){\n return sprite.getFlipX()==false;\n }\n\n public function jumpFixedVelocity(vx:Float, vy:Float){\n // trace(\"Jump fixed: \"+vx+\",\"+vy);\n stop();\n vel_x = vx;\n vel_y = vy;\n on_ground = false;\n animator.playAnimOnce(\"jump\");\n }\n public function stopped():Bool{\n return vel_x != 0;\n }\n\n public override function render(){\n if(Debug.enabled){\n PixelTest.native_screen.color = Color.Green;\n attack_zone.render();\n PixelTest.native_screen.color = Color.Yellow;\n lunge_attack_zone.render();\n Debug.drawPoint(Std.int(sprite.x + (8*sprite.flip_x)),Std.int(sprite.y+1));\n\n }\n super.render();\n }\n}","offset":1935,"wasAutoTriggered":false,"meta":[":deprecated"]}}]
  56. Defines canvas_id=khanvas,dce=std,debug=1,display-details=1,display=1,display_details=1,display_stdin=1,haxe3=1,haxe4=1,haxe=4.2.1,haxe_ver=4.201,hxcpp_smart_strings=1,js-es5=1,js=1,js_es5=1,js_es=5,kha=1,kha_a1=1,kha_a2=1,kha_debug-html5=1,kha_debug-html5_js=1,kha_debug_html5=1,kha_debug_html5_js=1,kha_g1=1,kha_g2=1,kha_g3=1,kha_g4=1,kha_html5=1,kha_html5_js=1,kha_js=1,kha_project_name=PixelTest,kha_version=1810,kha_webgl=1,script_name=kha,source-header=Generated by Haxe 4.2.1+816d90a,sys_a1=1,sys_a2=1,sys_debug-html5=1,sys_debug_html5=1,sys_g1=1,sys_g2=1,sys_g3=1,sys_g4=1,sys_html5=1,target.name=js,target.unicode=true,target.utf16=true,true=1,utf16=1
  57. Using signature 37a3f9c28ada1511920619586cba582c
  58. Display position: /home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx: 1935-1935
  59. Stats = 0 files, 739 classes, 509 methods, 8 macros
  60. Time spent : 0.658s
  61. Processing Arguments [--display,{"jsonrpc":"2.0","id":7,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  62. Stats = 0 files, 0 classes, 0 methods, 0 macros
  63. Time spent : 0.000s
  64. Processing Arguments [--display,{"jsonrpc":"2.0","id":8,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  65. Stats = 0 files, 0 classes, 0 methods, 0 macros
  66. Time spent : 0.000s
  67. Processing Arguments [--display,{"jsonrpc":"2.0","id":9,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  68. Stats = 0 files, 0 classes, 0 methods, 0 macros
  69. Time spent : 0.000s
  70. GC collection done in 0.07s with space_overhead = 69
  71. before: 142.4 MB
  72. after: 142.4 MB
  73. Processing Arguments [--display,{"jsonrpc":"2.0","id":10,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  74. Stats = 0 files, 0 classes, 0 methods, 0 macros
  75. Time spent : 0.000s
  76. Processing Arguments [--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game,-D,display-details,--no-output,--cwd,/home/domarius/My Files/Game Development/Savage Steel/work/Game/build,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Sources,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Kha/Backends/HTML5,-cp,/mnt/user/Users/Clint/Documents/My Files/Game Development/Savage Steel/work/Game/Sources,-D,hxcpp_smart_strings,-D,sys_g1,-D,sys_g2,-D,sys_g3,-D,sys_a1,-D,sys_a2,-D,kha_js,-D,kha_g1,-D,kha_g2,-D,kha_g3,-D,kha_a1,-D,kha_a2,-D,canvas_id=khanvas,-D,script_name=kha,-D,sys_g4,-D,kha_g4,-D,kha_webgl,-D,sys_debug-html5,-D,kha_debug-html5,-D,kha_debug-html5_js,-D,sys_html5,-D,kha_html5,-D,kha_html5_js,-D,sys_debug_html5,-D,kha_debug_html5,-D,kha,-D,kha_version=1810,-D,kha_project_name=PixelTest,-js,debug-html5/kha.js,-debug,-main,Main,--display,{"jsonrpc":"2.0","id":11,"method":"display/completion","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx","contents":"package;\nimport kha.Image;\nimport kha.Assets;\nimport kha.Color;\nusing controllers.CharacterController;\nusing pixelengine.PixelGraphics;\nusing Character.CharacterState;\n\nenum EnemyState{\n IDLE;\n FLANK;\n NAVIGATE;\n CLOSE_IN;\n NAVIGATE_WAIT; //Extra state when changing from CLOSE_IN to NAVIGATE, to delay their reaction time when chasing you after you try and escape. Without it, it almost seems pre-emptive.\n}\nenum AI_TILES{\n NONE;\n JUMP_LEFT;\n JUMP_UP;\n JUMP_RIGHT;\n}\n\nclass Enemy extends Character{\n var attack_zone:HitBox;\n var lunge_attack_zone:HitBox;\n var turn_at_edge:Bool;\n var enemy_state:EnemyState = IDLE;\n var attack_cooldown:util.Timer;\n var jump_cooldown:util.Timer;\n var react_cooldown:util.Timer;\n var target:Character = null;\n var jump_force_x:Float;\n var id:Int;\n\n var flank_left:Bool = true;//Otherwise, flank right.\n\n public function new (id:Int, type:String, init_x:Int = 0, init_y:Int = 0){\n this.id = id;\n super(type, type+id, new CharacterController(), init_x, init_y);\n setCharacter(type);\n }\n\n\tpublic override function reset(){\n\t\tsuper.reset();\n\t\tsetCharacter(type);\n\t}\n\n public function setCharacter(name:String){\n\t\thitbox.setSize(20,40);\n\t\thitbox.setOffset(-10,-40);\n attack_cooldown = new util.Timer(2);\n jump_cooldown = new util.Timer(2);\n react_cooldown = new util.Timer(0.25);\n\t\t//character.sprite.setPaletteIndex(0);\n walk_speed = 1;\n attack_zone = new HitBox(0,0,20,40,10,-41);\n lunge_attack_zone = new HitBox(0,0,10,40,50,-41);\n air_decelleration = 1; //None\n gravity = 0.07;\n jump_force = 2.7;\n jump_force_x = 1.4;\n walkLeft();\n health = 3;\n enemy_state = IDLE;\n\n //Things to put into settings\n //Default settings\n shoot_frame = -1;\n shoot_source = PixelTest.enemy_projectile_pool;\n this.\n switch(name){\n case \"Zombie\":\n walk_speed = 0.1;\n //anim_movement = [2,1,8,1,0,2,1,5,0];\n case \"Imp\":\n //anim_movement = [9,8,9,9];\n walk_speed = 1.5;\n lunge_attack_zone.set(0,0,20,40,50,-41);\n case \"Harpie\":\n flying = true;\n swoop_attack = true;\n attack_zone.set(0,0,20,20,20,10);\n hitbox.setSize(30,40);\n gravity = 0.07;\n case \"Worm\":\n hitbox.setSize(23,28);\n hitbox.setOffset(-10,-28);\n walk_speed = 0.20;\n attack_zone.set(0,0,100,30,10,-28);\n shoot_frame = 11;\n shoot_vel_x = 2;\n shoot_offset_x = 15;\n shoot_offset_y = -20;\n shoot_type = \"Fireball\";\n shoot_death = \"Fireball explosion\";\n turn_at_edge = true;\n //anim_movement = [0,0,0,0,0,3,1,0,1];\n case \"Demon\":\n walk_speed = 2;\n }\n findNewTarget();\n }\n\n public static function retargetImps(){\n //Let Imps pick their nearest target\n for (c in PixelTest.enemies.array){\n if(c == this)\n continue;\n if(c.type != \"Imp\")\n continue;\n var e = cast (c, Enemy);\n e.pickTarget();\n if(target!=null)\n e.changeEnemyState(NAVIGATE);\n }\n\n //Find a partner to flank.\n // for (c in PixelTest.enemies.array){\n // if(c == this)\n // continue;\n // var e = cast (c, Enemy);\n // if(e.target == target){\n // e.changeEnemyState(FLANK);\n // break;\n // }\n // }\n }\n\n public override function updateFirst(){\n super.updateFirst();\n attack_cooldown.Update(PixelTest.TIME_SLICE);\n jump_cooldown.Update(PixelTest.TIME_SLICE);\n react_cooldown.Update(PixelTest.TIME_SLICE);\n // trace(name+\" update react_cooldown: \"+react_cooldown.GetPercentage());\n }\n\n private override function updateNoControl(){\n if(type == \"Imp\"){\n //Jump back after attack\n if(on_ground && getState() == CharacterState.ATTACK && animator.isDone() && animator.getAnimName() == \"attack\"){\n jumpFixedVelocity(2 * (sprite.flip_x *-1),-0.5);\n }\n }\n super.updateNoControl();\n }\n\n private override function updateControl(){\n super.updateControl();\n //If character has control, do stuff like try to walk around and attack\n switch(enemy_state){\n case IDLE:\n case FLANK:\n doFlank();\n case NAVIGATE:\n doNavigate();\n determineNavigateState();\n case CLOSE_IN:\n doCloseIn();\n determineNavigateState();\n case NAVIGATE_WAIT:\n // trace(name+\" react_cooldown: \"+react_cooldown.GetPercentage());\n if(react_cooldown.Expired())\n changeEnemyState(NAVIGATE);\n } \n //Attack if in range\n var target:Character = PixelTest.players.getOverlapping(attack_zone);\n if(attack_cooldown.Expired() && target != null){\n attack();\n attack_cooldown.Restart();\n }\n\n if(type == \"Imp\"){\n if(on_ground){\n //Jump back if overlapping player\n if(PixelTest.players.getOverlapping(hitbox) != null)\n jumpFixedVelocity(0.75 * (sprite.flip_x *-1),-0.5);\n\n //Jump back if overlapping other imp\n var other_imp = PixelTest.enemies.getOverlappingCharacter(this, \"Imp\");\n if(other_imp != null && other_imp.getState() == CharacterState.ATTACK)\n jumpFixedVelocity(1.5 * (sprite.flip_x *-1),-0.5);\n \n //Lunge to attack\n var target:Character = PixelTest.players.getOverlapping(lunge_attack_zone);\n if(attack_cooldown.Expired() && target != null && PixelTest.players.getOverlapping(attack_zone) == null){//Only do a lunge attack if player is not close enough for a normal attack.\n trace(\"lunge!\");\n jumpFixedVelocity(2 * (sprite.flip_x),-1);\n }\n }\n }\n // trace(\"Enemy position and velocity before collision: sprite.y: \"+sprite.y+\", vel_y: \"+vel_y+\", tile_y: \"+tile_y);\n }\n\n private override function updateLast(){\n super.updateLast();\n //Bounce at edge of screen behaviour\n if(sprite.x > PixelTest.screen_width-8){ //magic number: Rough width of character\n walkLeft();\n }\n if(sprite.x < 0 +8){ //magic number: Rough width of character\n walkRight();\n }\n\n //Turn around at walls\n if(PixelTest.level.getTileTypePx(Std.int(sprite.x + (8*sprite.flip_x)), Std.int(sprite.y)) == LevelTileset.TileType.SOLID){\n if(controller.getButton(RIGHT))\n walkLeft();\n else\n walkRight();\n }\n\n attack_zone.setPos(sprite.x, sprite.y);\n lunge_attack_zone.setPos(sprite.x, sprite.y);\n // trace(\"Enemy position and velocity AFTER collision: sprite.y: \"+sprite.y+\", vel_y: \"+vel_y+\", tile_y: \"+tile_y);\n }\n\n private function determineNavigateState(){\n if(target == null){\n enemy_state = IDLE;\n return;\n }\n\n if(swoop_attack){\n if(sprite.y >= target.sprite.y-65 && sprite.y <= target.sprite.y-64){\n vel_y=0;\n changeEnemyState(CLOSE_IN);\n }else{\n changeEnemyState(NAVIGATE);\n }\n }else{\n if(on_ground){ //Don't change states mid-jump, jumps are important to complete in their entirety to get to the next platform, to then make a decision on what to do.\n if(sprite.y >= target.sprite.y-8 && sprite.y <= target.sprite.y+8){\n changeEnemyState(CLOSE_IN);\n }else{\n changeEnemyState(NAVIGATE);\n }\n }\n }\n } \n\n private function changeEnemyState(new_state:EnemyState){\n if(enemy_state == new_state)\n return;\n if(enemy_state == CLOSE_IN && new_state == NAVIGATE)\n new_state = NAVIGATE_WAIT;\n trace(\"Enemy \"+name+\" changing enemy state to \"+new_state);\n // if(new_state == EnemyState.NAVIGATE){\n // if(id%2 == 0)\n // walkLeft();\n // else\n // walkRight();\n // }\n switch(new_state){\n case IDLE:\n case FLANK:\n flank_left = target.sprite.x < this.sprite.x;\n case NAVIGATE:\n case CLOSE_IN:\n case NAVIGATE_WAIT:\n react_cooldown.Restart();\n stop();\n }\n enemy_state = new_state;\n }\n\n private function doNavigate(){\n if(turn_at_edge && on_ground){\n //See if we need to fall off\n foot_tile = PixelTest.level.getTileTypePx(Std.int(sprite.x + (8*sprite.flip_x)), Std.int(sprite.y+1)); //Magic number: rough width of character\n if(on_ground && foot_tile == LevelTileset.TileType.AIR){\n if(controller.getButton(RIGHT))\n walkLeft();\n else\n walkRight();\n }\n }\n\n //If you have a swoop ability, you need to get up high\n if(swoop_attack)\n doNavigateSwoop();\n else\n doNavigateWalk();\n }\n\n private function doNavigateSwoop(){\n if(sprite.y > target.sprite.y-64)\n vel_y=-0.5;\n else\n vel_y=1;\n }\n\n private function doNavigateWalk(){\n if(on_ground){\n if(isWalkingLeft())\n walkLeft();\n else\n walkRight();\n if(sprite.y > target.sprite.y){\n var ai_tile:Int = PixelTest.level.getAiMap(tile_x,tile_y);\n switch(ai_tile){\n case 1:\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 2:\n jumpFixedVelocity(0,-jump_force);\n case 3:\n jumpFixedVelocity(jump_force_x,-jump_force);\n case 4:\n if(isWalkingLeft())\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 5:\n if(isWalkingRight())\n jumpFixedVelocity(jump_force_x,-jump_force);\n }\n }else{\n if(foot_tile == LevelTileset.TileType.PLATFORM){\n controller.setAndAutoRelease(DROP, 0.1);\n // trace(\"Dropping\");\n }\n }\n }\n }\n\n private function doFlank(){\n if(on_ground){\n if(flank_left){\n walkLeft();\n if(sprite.x < 32)\n changeEnemyState(NAVIGATE);\n }else{\n walkRight();\n if(sprite.x > PixelTest.screen_width-32)\n changeEnemyState(NAVIGATE);\n }\n \n if(sprite.y < target.sprite.y){\n var ai_tile:Int = PixelTest.level.getAiMap(tile_x,tile_y);\n switch(ai_tile){\n case 1:\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 2:\n jumpFixedVelocity(0,-jump_force);\n case 3:\n jumpFixedVelocity(jump_force_x,-jump_force);\n case 4:\n if(isWalkingLeft())\n jumpFixedVelocity(-jump_force_x,-jump_force);\n case 5:\n if(isWalkingRight())\n jumpFixedVelocity(jump_force_x,-jump_force);\n }\n }else{\n if(foot_tile == LevelTileset.TileType.PLATFORM){\n controller.setAndAutoRelease(DROP, 0.1);\n // trace(\"Dropping\");\n }\n }\n }\n }\n\n private function doCloseIn(){\n //Try not to overlap other enemies\n // for (enemy in PixelTest.enemies.array){\n // if(enemy == this)\n // continue;\n // if(enemy.getY() < getY()-16 || enemy.getY() > getY()) //Magic number: is rough height of character\n // continue;\n // if(controller.getButton(RIGHT) && enemy.getX() > getX() && enemy.getX() < getX()+8)//Woo magic number: rough width of character\n // walkLeft();\n // else if(controller.getButton(LEFT) && enemy.getX() < getX() && enemy.getX() > getX()-8)//Woo magic number: rough width of character\n // walkRight();\n // }\n\n if(swoop_attack){\n if(target.sprite.x > sprite.x){\n walkRight();\n }else{\n walkLeft();\n }\n }\n \n if(on_ground){\n var ai_tile:Int = PixelTest.level.getAiMap(tile_x,tile_y);\n // trace(\"ai tile: \"+ai_tile);\n if(target.sprite.x > sprite.x){\n walkRight();\n if(ai_tile == 5)\n jumpFixedVelocity(jump_force_x,-jump_force);\n }else{\n walkLeft();\n if(ai_tile == 4)\n jumpFixedVelocity(-jump_force_x,-jump_force);\n }\n }\n }\n\n private function pickTarget(){\n target = null;\n var dist:Float = 1000;\n var new_dist:Float;\n for(player in PixelTest.players.array){\n new_dist = getDistance(sprite.x, sprite.y, player.sprite.x, player.sprite.y); \n if(new_dist >= dist)\n continue;\n dist = new_dist;\n target = player;\n }\n }\n\n private function getDistance(x1:Float, y1:Float, x2:Float, y2:Float){\n return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));\n }\n\n public function walkLeft(){\n controller.setPressed(LEFT, true);\n controller.setPressed(RIGHT, false);\n attack_zone.flipX(true);\n lunge_attack_zone.flipX(true);\n }\n\n public function walkRight(){\n controller.setPressed(RIGHT, true);\n controller.setPressed(LEFT, false);\n attack_zone.flipX(false);\n lunge_attack_zone.flipX(false);\n }\n\n public function stop(){\n controller.setPressed(RIGHT, false);\n controller.setPressed(LEFT, false);\n }\n\n public function isWalkingLeft(){\n return sprite.getFlipX()==true;\n }\n\n public function isWalkingRight(){\n return sprite.getFlipX()==false;\n }\n\n public function jumpFixedVelocity(vx:Float, vy:Float){\n // trace(\"Jump fixed: \"+vx+\",\"+vy);\n stop();\n vel_x = vx;\n vel_y = vy;\n on_ground = false;\n animator.playAnimOnce(\"jump\");\n }\n public function stopped():Bool{\n return vel_x != 0;\n }\n\n public override function render(){\n if(Debug.enabled){\n PixelTest.native_screen.color = Color.Green;\n attack_zone.render();\n PixelTest.native_screen.color = Color.Yellow;\n lunge_attack_zone.render();\n Debug.drawPoint(Std.int(sprite.x + (8*sprite.flip_x)),Std.int(sprite.y+1));\n\n }\n super.render();\n }\n}","offset":1939,"wasAutoTriggered":true,"meta":[":deprecated"]}}]
  77. Defines canvas_id=khanvas,dce=std,debug=1,display-details=1,display=1,display_details=1,display_stdin=1,haxe3=1,haxe4=1,haxe=4.2.1,haxe_ver=4.201,hxcpp_smart_strings=1,js-es5=1,js=1,js_es5=1,js_es=5,kha=1,kha_a1=1,kha_a2=1,kha_debug-html5=1,kha_debug-html5_js=1,kha_debug_html5=1,kha_debug_html5_js=1,kha_g1=1,kha_g2=1,kha_g3=1,kha_g4=1,kha_html5=1,kha_html5_js=1,kha_js=1,kha_project_name=PixelTest,kha_version=1810,kha_webgl=1,script_name=kha,source-header=Generated by Haxe 4.2.1+816d90a,sys_a1=1,sys_a2=1,sys_debug-html5=1,sys_debug_html5=1,sys_g1=1,sys_g2=1,sys_g3=1,sys_g4=1,sys_html5=1,target.name=js,target.unicode=true,target.utf16=true,true=1,utf16=1
  78. Using signature 37a3f9c28ada1511920619586cba582c
  79. Display position: /home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx: 1939-1939
  80. Stats = 0 files, 739 classes, 509 methods, 8 macros
  81. Time spent : 0.154s
  82. Processing Arguments [--display,{"jsonrpc":"2.0","id":12,"method":"server/invalidate","params":{"file":"/home/domarius/My Files/Game Development/Savage Steel/work/Game/Sources/Enemy.hx"}}]
  83. Stats = 0 files, 0 classes, 0 methods, 0 macros
  84. Time spent : 0.000s
  85.  
Advertisement
Add Comment
Please, Sign In to add comment