add StacksWith property
parent
cfb3af6519
commit
548e9131f2
|
@ -212,7 +212,7 @@ namespace SupaLidlGame.Characters
|
|||
|
||||
if (this.GetNode("HurtSound") is AudioStreamPlayer2D sound)
|
||||
{
|
||||
sound.Play();
|
||||
sound.PlayOnRoot();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,11 +72,6 @@ namespace SupaLidlGame.Characters
|
|||
}
|
||||
DrawLine(Vector2.Zero, vec, c);
|
||||
}
|
||||
/*
|
||||
DrawLine(Vector2.Zero, Direction * 32, new Color(0, 1, 0));
|
||||
DrawLine(Vector2.Zero, Target * 32, Colors.Blue);
|
||||
DrawLine(Vector2.Zero, _blockingDir, Colors.Red, 2);
|
||||
*/
|
||||
#endif
|
||||
|
||||
base._Draw();
|
||||
|
@ -110,7 +105,6 @@ namespace SupaLidlGame.Characters
|
|||
QueueRedraw();
|
||||
}
|
||||
|
||||
//Direction = GetDirection(Target);
|
||||
Direction = _weightDirs[_bestWeightIdx];
|
||||
}
|
||||
|
||||
|
@ -228,10 +222,6 @@ namespace SupaLidlGame.Characters
|
|||
directWeight = 1 - Mathf.Pow(Mathf.E, -(dist / PreferredDistance));
|
||||
strafeWeight = 1 - directWeight;
|
||||
|
||||
/*
|
||||
Vector2 midpoint = (strafeDir * strafeWeight)
|
||||
.Midpoint(directDir * directWeight);
|
||||
*/
|
||||
Vector2 midpoint = (directDir * directWeight)
|
||||
.Midpoint(strafeDir * strafeWeight);
|
||||
|
||||
|
@ -269,9 +259,6 @@ namespace SupaLidlGame.Characters
|
|||
{
|
||||
Vector2 position = (Vector2)result["position"];
|
||||
float hitDist = GlobalPosition.DistanceTo(position);
|
||||
//float hitDist = GlobalPosition.DistanceSquaredTo(position);
|
||||
//float rayDist = Mathf.Pow(rayLength, 2);
|
||||
//float weight = rayDist - hitDist;
|
||||
float weight = rayLength - hitDist;
|
||||
GD.Print(weight);
|
||||
rays[i] = _weightDirs[i] * weight;
|
||||
|
@ -289,8 +276,9 @@ namespace SupaLidlGame.Characters
|
|||
|
||||
protected virtual void Think()
|
||||
{
|
||||
// TODO: the entity should wander if it doesn't find a best target
|
||||
Vector2 pos = FindBestTarget().GlobalPosition;
|
||||
Target = pos - GlobalPosition;//GlobalPosition.DirectionTo(pos);
|
||||
Target = pos - GlobalPosition;
|
||||
Vector2 dir = Target;
|
||||
float dist = GlobalPosition.DistanceSquaredTo(pos);
|
||||
UpdateWeights(pos);
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace SupaLidlGame.Characters
|
|||
return;
|
||||
}
|
||||
|
||||
_sprite.Animation = value;
|
||||
_sprite.Play(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"]
|
||||
shader = ExtResource("2_ngsgt")
|
||||
shader_parameter/color = null
|
||||
shader_parameter/color = Quaternion(1, 1, 1, 1)
|
||||
shader_parameter/intensity = 0.0
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_us1ce"]
|
||||
|
@ -48,12 +48,33 @@ region = Rect2(144, 0, 24, 24)
|
|||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_2h7cf"]
|
||||
animations = [{
|
||||
"frames": [SubResource("AtlasTexture_us1ce"), SubResource("AtlasTexture_hn4kf")],
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_us1ce")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_hn4kf")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"idle",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
"frames": [SubResource("AtlasTexture_wfbeq"), SubResource("AtlasTexture_qlmwk"), SubResource("AtlasTexture_l1vgu"), SubResource("AtlasTexture_ytlaa"), SubResource("AtlasTexture_1q30d")],
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wfbeq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_qlmwk")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_l1vgu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ytlaa")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1q30d")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"move",
|
||||
"speed": 12.0
|
||||
|
@ -125,9 +146,8 @@ position_smoothing_speed = 8.0
|
|||
|
||||
[node name="Sprite" type="AnimatedSprite2D" parent="."]
|
||||
use_parent_material = true
|
||||
frames = SubResource("SpriteFrames_2h7cf")
|
||||
animation = &"move"
|
||||
playing = true
|
||||
sprite_frames = SubResource("SpriteFrames_2h7cf")
|
||||
animation = &"idle"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, 8)
|
||||
|
@ -158,6 +178,7 @@ layout_mode = 3
|
|||
anchors_preset = 0
|
||||
|
||||
[node name="State" type="Label" parent="Debug"]
|
||||
layout_mode = 0
|
||||
offset_left = -20.0
|
||||
offset_top = -60.0
|
||||
offset_right = 20.0
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
using Godot;
|
||||
|
||||
namespace SupaLidlGame
|
||||
{
|
||||
public static class AudioStreamPlayer2DExtensions
|
||||
{
|
||||
public static void PlayOn(this AudioStreamPlayer2D audio, Node parent)
|
||||
{
|
||||
var clone = audio.Duplicate() as AudioStreamPlayer2D;
|
||||
parent.AddChild(clone);
|
||||
clone.Play();
|
||||
clone.Finished += () =>
|
||||
{
|
||||
clone.QueueFree();
|
||||
};
|
||||
}
|
||||
|
||||
public static void PlayOnRoot(this AudioStreamPlayer2D audio)
|
||||
{
|
||||
var root = audio.GetTree().Root.GetChild(0);
|
||||
audio.PlayOn(root);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,11 +5,39 @@ namespace SupaLidlGame.Items
|
|||
{
|
||||
public abstract partial class Item : Node2D
|
||||
{
|
||||
[Export]
|
||||
public string ItemName { get; set; }
|
||||
|
||||
[Export]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Export]
|
||||
public int StackSize { get; set; }
|
||||
|
||||
public int Count { get; set; } = 1;
|
||||
|
||||
public Character CharacterOwner { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Determines if this item can stack with other items
|
||||
/// </summary>
|
||||
public virtual bool StacksWith(Item item)
|
||||
{
|
||||
if (ItemName != item.ItemName)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Count + item.Count <= StackSize)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// several more conditions may be added soon
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public abstract void Equip(Character character);
|
||||
|
||||
public abstract void Unequip(Character character);
|
||||
|
|
|
@ -47,6 +47,8 @@ namespace SupaLidlGame.Items
|
|||
|
||||
public Character Character { get; set; }
|
||||
|
||||
public override bool StacksWith(Item item) => false;
|
||||
|
||||
public override void Equip(Character character)
|
||||
{
|
||||
Character = character;
|
||||
|
|
|
@ -108,15 +108,6 @@ namespace SupaLidlGame.Items.Weapons
|
|||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
/*
|
||||
if (RemainingAttackTime > 0)
|
||||
{
|
||||
if ((RemainingAttackTime -= delta) <= 0)
|
||||
{
|
||||
Deattack();
|
||||
}
|
||||
}
|
||||
*/
|
||||
base._Process(delta);
|
||||
}
|
||||
|
||||
|
@ -148,7 +139,7 @@ namespace SupaLidlGame.Items.Weapons
|
|||
IsParried = true;
|
||||
AnimationPlayer.SpeedScale = 0.25f;
|
||||
Character.Stun(1.5f);
|
||||
GetNode<AudioStreamPlayer2D>("ParrySound").Play();
|
||||
GetNode<AudioStreamPlayer2D>("ParrySound").PlayOnRoot();
|
||||
}
|
||||
}
|
||||
//this.GetAncestor<TileMap>().AddChild(instance);
|
||||
|
@ -166,7 +157,6 @@ namespace SupaLidlGame.Items.Weapons
|
|||
Weapon w = hb.GetAncestor<Weapon>();
|
||||
if (w is not null)
|
||||
{
|
||||
//Vector2 a = new Vector2(2, 2) * new Vector2(5, 2);
|
||||
AttemptParry(w);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -307,6 +307,7 @@ ParryParticles = NodePath("Anchor/Sprite2D/ParryParticles")
|
|||
Damage = 20.0
|
||||
UseTime = 0.8
|
||||
Knockback = 80.0
|
||||
ItemName = "Sword"
|
||||
Description = "A basic sword."
|
||||
|
||||
[node name="Anchor" type="Node2D" parent="."]
|
||||
|
|
Loading…
Reference in New Issue