Browse Source

added enemies

galo 1 year ago
parent
commit
40c99e36cb
11 changed files with 91 additions and 64 deletions
  1. 1 1
      Enemy.gd
  2. 1 1
      Enemy.tscn
  3. 14 10
      Server.gd
  4. 15 1
      Server.tscn
  5. 6 1
      bullet.gd
  6. 2 0
      bullet.tscn
  7. 1 0
      damage_enemy.tscn
  8. 2 2
      main.tscn
  9. 1 0
      playerphysics.gd
  10. 1 1
      playersprite.tscn
  11. 47 47
      spawner.gd

+ 1 - 1
Enemy.gd

@@ -2,7 +2,7 @@ extends KinematicBody2D
 
 var vida = 2
 var speed = 35
-var type = 'goblin'
+var type = 1
 
 func damage(arg, id):
 	vida += arg

+ 1 - 1
Enemy.tscn

@@ -5,7 +5,7 @@
 
 [sub_resource type="RectangleShape2D" id=1]
 
-[node name="Enemy" type="KinematicBody2D"]
+[node name="Enemy" type="KinematicBody2D" groups=["enemy"]]
 collision_layer = 4
 collision_mask = 0
 script = ExtResource( 1 )

+ 14 - 10
Server.gd

@@ -110,16 +110,9 @@ func _physics_process(delta):
 		animation_datachunk[i.name] = i.animation
 	rpc_unreliable_id(0, 'player_animation', animation_datachunk)
 	
-	
-	var projectile_datachunk = PoolByteArray()
-	for i in $projectiles.get_children():
-		var pos = i.global_position
-		projectile_datachunk.append_array( return_int16(pos.x) )
-		projectile_datachunk.append_array( return_int16(pos.y) )
-		var bytetest : PoolByteArray
-		bytetest.append(i.type)
-		projectile_datachunk.append_array( bytetest )
-	rpc_unreliable_id(0, 'projectiles_sync', projectile_datachunk)
+	synnc($projectiles, 'projectiles_sync')
+	synnc($Enemies, 'enemies_position_2')
+
 #	tick += 1
 #	if fmod(tick,tickrate) == 0:
 #		var enemies_datachunk = PoolByteArray()
@@ -133,6 +126,17 @@ func _physics_process(delta):
 #				enemies_datachunk.append_array( bytetest )
 #		rpc_unreliable_id(0, 'enemies_position_2', enemies_datachunk)
 
+func synnc(arg,arg1):
+	var projectile_datachunk = PoolByteArray()
+	for i in arg.get_children():
+		var pos = i.global_position
+		projectile_datachunk.append_array( return_int16(pos.x) )
+		projectile_datachunk.append_array( return_int16(pos.y) )
+		var bytetest : PoolByteArray
+		bytetest.append(i.type)
+		projectile_datachunk.append_array( bytetest )
+	rpc_unreliable_id(0, arg1, projectile_datachunk)
+
 func return_int16(number):
 	var int16 = number + 32768
 	var bytetest : PoolByteArray

+ 15 - 1
Server.tscn

@@ -1,6 +1,8 @@
-[gd_scene load_steps=2 format=2]
+[gd_scene load_steps=4 format=2]
 
+[ext_resource path="res://Enemy.tscn" type="PackedScene" id=1]
 [ext_resource path="res://Server.gd" type="Script" id=2]
+[ext_resource path="res://spawner.gd" type="Script" id=3]
 
 [node name="Server" type="Node"]
 script = ExtResource( 2 )
@@ -12,3 +14,15 @@ tickrate = 4
 [node name="dmgbox" type="Node" parent="."]
 
 [node name="projectiles" type="Node" parent="."]
+
+[node name="Enemies" type="Node" parent="."]
+script = ExtResource( 3 )
+
+[node name="Enemy" parent="Enemies" instance=ExtResource( 1 )]
+position = Vector2( 56.6325, 302.04 )
+
+[node name="Enemy2" parent="Enemies" instance=ExtResource( 1 )]
+position = Vector2( 133.086, 298.264 )
+
+[node name="Enemy3" parent="Enemies" instance=ExtResource( 1 )]
+position = Vector2( 198.214, 300.152 )

+ 6 - 1
bullet.gd

@@ -2,13 +2,18 @@ extends KinematicBody2D
 
 var motion = Vector2.ZERO
 var type = 4
+var id = ''
 
 #func _ready():
 #	print('bullet gen...')
 
 func _physics_process(delta):
 	var collide = move_and_collide(motion*delta)
-	if collide: queue_free()
+	if collide: 
+		if collide.collider.is_in_group('enemy'):
+			collide.collider.damage(-1,id)
+			print('col enemy')
+		queue_free()
 
 func _on_Timer_timeout():
 	queue_free()

+ 2 - 0
bullet.tscn

@@ -6,6 +6,8 @@
 extents = Vector2( 3, 3 )
 
 [node name="bullet" type="KinematicBody2D"]
+collision_layer = 5
+collision_mask = 5
 script = ExtResource( 1 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]

+ 1 - 0
damage_enemy.tscn

@@ -11,4 +11,5 @@ script = ExtResource( 1 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 shape = SubResource( 1 )
+
 [connection signal="body_entered" from="." to="." method="_on_damage_player_body_entered"]

+ 2 - 2
main.tscn

@@ -51,6 +51,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin1"]
 modulate = Color( 0, 0.811765, 1, 1 )
 frames = SubResource( 5 )
+frame = 2
 playing = true
 offset = Vector2( 32, 32 )
 
@@ -76,7 +77,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin3"]
 modulate = Color( 1, 0, 0, 1 )
 frames = SubResource( 5 )
-frame = 1
+frame = 2
 speed_scale = 1.2
 playing = true
 offset = Vector2( 32, 32 )
@@ -90,7 +91,6 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin4"]
 modulate = Color( 1, 0, 0.984314, 1 )
 frames = SubResource( 5 )
-frame = 2
 speed_scale = 0.9
 playing = true
 offset = Vector2( 32, 32 )

+ 1 - 0
playerphysics.gd

@@ -54,6 +54,7 @@ func _physics_process(delta):
 				var instance = bullet.instance()
 				instance.motion.x = 500 if sidebuffer else -500
 				instance.global_position = global_position
+				instance.id = name
 				get_parent().get_parent().get_node('projectiles').add_child(instance)
 				aux_bullet = waitframes_bullet
 			

+ 1 - 1
playersprite.tscn

@@ -242,7 +242,7 @@ font_data = ExtResource( 5 )
 [node name="playersprite" type="AnimatedSprite"]
 frames = SubResource( 27 )
 animation = "idle"
-frame = 3
+frame = 2
 playing = true
 offset = Vector2( 3.72692, -21.0081 )
 script = SubResource( 28 )

+ 47 - 47
spawner.gd

@@ -47,53 +47,53 @@ export var tickrate = 4
 
 var blockmapenemy = {}
 
-func _physics_process(delta):
-
-#setting tickrate, to reduce executions per second
-#	tick += 1
-#	if fmod(tick,tickrate) == 0:
-	if true:
-
-#dict of aprox positions of players
-		var blockmap = {}
-		if get_node('../players').get_child_count() == 0: return
-		for z in get_node('../players').get_children():
-			var x = int(z.global_position.x/20)
-			var y = int(z.global_position.y/20)
-			blockmap[Vector2(x,y)] = z
-
-#yes this abomination controls the enemies, ECS code looks ugly as fuck in this engine
-		for i in dict.arraytarget.size():
-
-# death checking
-			if dict.arrayvida[i] > 0 and dict.enabled[i]:
-
-#picking new targets if the last one is invalid
-				if dict.arraytarget[i] == null:
-					if get_node('../players').get_child_count() == 0: return
-					var array = get_node('../players').get_children()
-					if array.size() > 0:
-						dict.arraytarget[i] = array[randi()%array.size()]
-
-#exclusive movmenet code
-				if fmod(tick, dict.arraydirtime[i]) == 0:
-					if is_instance_valid(dict.arraytarget[i]):
-						dict.arraymotion[i] = (dict.arraytarget[i].global_position - dict.arraypos[i]).normalized() * speed
-				dict.arraypos[i] += dict.arraymotion[i]
-
-# enemy attak on players
-				var x = int(dict.arraypos[i].x/20)
-				var y = int(dict.arraypos[i].y/20)
-				if blockmap.has(Vector2(x,y)):
-					blockmap[Vector2(x,y)].damage( -enemydmg, '')
-#recycling enemies
-			elif dict.enabled[i]:
-				var rot = rand_range(-PI,PI)
-				dict.arraypos[i] = (Vector2(sin(rot), cos(rot)) * rand_range(400,800)) + Vector2(320,180)
-				dict.arrayvida[i] = 100
-				dict.arraytarget[i] = null
-				death_count(dict.attacker[i])
-				
+#func _physics_process(delta):
+#
+##setting tickrate, to reduce executions per second
+##	tick += 1
+##	if fmod(tick,tickrate) == 0:
+#	if true:
+#
+##dict of aprox positions of players
+#		var blockmap = {}
+#		if get_node('../players').get_child_count() == 0: return
+#		for z in get_node('../players').get_children():
+#			var x = int(z.global_position.x/20)
+#			var y = int(z.global_position.y/20)
+#			blockmap[Vector2(x,y)] = z
+#
+##yes this abomination controls the enemies, ECS code looks ugly as fuck in this engine
+#		for i in dict.arraytarget.size():
+#
+## death checking
+#			if dict.arrayvida[i] > 0 and dict.enabled[i]:
+#
+##picking new targets if the last one is invalid
+#				if dict.arraytarget[i] == null:
+#					if get_node('../players').get_child_count() == 0: return
+#					var array = get_node('../players').get_children()
+#					if array.size() > 0:
+#						dict.arraytarget[i] = array[randi()%array.size()]
+#
+##exclusive movmenet code
+#				if fmod(tick, dict.arraydirtime[i]) == 0:
+#					if is_instance_valid(dict.arraytarget[i]):
+#						dict.arraymotion[i] = (dict.arraytarget[i].global_position - dict.arraypos[i]).normalized() * speed
+#				dict.arraypos[i] += dict.arraymotion[i]
+#
+## enemy attak on players
+#				var x = int(dict.arraypos[i].x/20)
+#				var y = int(dict.arraypos[i].y/20)
+#				if blockmap.has(Vector2(x,y)):
+#					blockmap[Vector2(x,y)].damage( -enemydmg, '')
+##recycling enemies
+#			elif dict.enabled[i]:
+#				var rot = rand_range(-PI,PI)
+#				dict.arraypos[i] = (Vector2(sin(rot), cos(rot)) * rand_range(400,800)) + Vector2(320,180)
+#				dict.arrayvida[i] = 100
+#				dict.arraytarget[i] = null
+#				death_count(dict.attacker[i])
+#
 
 func damage_detection(arg,dmg, attacker):
 	blockmapenemy = {}