From a6411d43335e6c9478f3e6e0b80f3a35ef5680e0 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Mon, 29 May 2023 09:36:46 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=8D=E5=90=88=E7=90=86?= =?UTF-8?q?=E7=9A=84=E4=BD=8D=E7=BD=AE=E7=9B=B8=E5=85=B3=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/actor_follow.go | 15 ------ game/actor_move.go | 52 ------------------- game/builtin/position.go | 105 --------------------------------------- game/postion.go | 38 -------------- 4 files changed, 210 deletions(-) delete mode 100644 game/actor_follow.go delete mode 100644 game/actor_move.go delete mode 100644 game/builtin/position.go delete mode 100644 game/postion.go diff --git a/game/actor_follow.go b/game/actor_follow.go deleted file mode 100644 index 7dccfc4..0000000 --- a/game/actor_follow.go +++ /dev/null @@ -1,15 +0,0 @@ -package game - -// ActorFollow 是一个将ActorMove和Position结合的接口,表示可以跟随目标移动的游戏对象。 -// 通过实现此接口,游戏对象可以跟随指定的目标进行移动和操作。 -type ActorFollow interface { - ActorMove - // FollowTarget2D 让游戏对象跟随目标在2D平面上移动。 - // 该方法将对象的位置设置为目标的位置加上指定的偏移量,即相对移动。 - // 参数target表示要跟随的目标位置,dx、dy表示对象在X、Y轴上的偏移量。 - FollowTarget2D(target Position, dx, dy float64) - // FollowTarget3D 让游戏对象跟随目标在3D空间中移动。 - // 该方法将对象的位置设置为目标的位置加上指定的偏移量,即相对移动。 - // 参数target表示要跟随的目标位置,dx、dy、dz表示对象在X、Y、Z轴上的偏移量。 - FollowTarget3D(target Position, dx, dy, dz float64) -} diff --git a/game/actor_move.go b/game/actor_move.go deleted file mode 100644 index 7d4cb34..0000000 --- a/game/actor_move.go +++ /dev/null @@ -1,52 +0,0 @@ -package game - -// ActorMove 是一个将Actor和Position结合的接口,表示可以移动的游戏对象。 -// 通过实现此接口,游戏对象可以在游戏世界中进行移动和操作。 -type ActorMove interface { - Actor - Position - // MoveTo2D 将游戏对象移动到指定的位置。 - // 该方法将对象的位置设置为指定的坐标,即绝对移动。 - // 参数x、y分别表示对象在X、Y轴上的目标位置。 - MoveTo2D(x, y float64) - // MoveBy2D 在当前位置基础上移动游戏对象。 - // 该方法将对象的位置增加指定的偏移量,即相对移动。 - // 参数dx、dy分别表示对象在X、Y轴上的偏移量。 - MoveBy2D(dx, dy float64) - // MoveTo3D 将游戏对象移动到指定的位置。 - // 该方法将对象的位置设置为指定的坐标,即绝对移动。 - // 参数x、y和z分别表示对象在X、Y和Z轴上的目标位置。 - MoveTo3D(x, y, z float64) - // MoveBy3D 在当前位置基础上移动游戏对象。 - // 该方法将对象的位置增加指定的偏移量,即相对移动。 - // 参数dx、dy和dz分别表示对象在X、Y和Z轴上的偏移量。 - MoveBy3D(dx, dy, dz float64) - // MoveToX 将游戏对象在X轴上移动到指定位置。 - // 该方法将对象的X坐标设置为指定的位置,即绝对移动。 - // 参数x表示对象在X轴上的目标位置。 - MoveToX(x float64) - // MoveByX 在当前位置基础上移动游戏对象在X轴上的位置。 - // 该方法将对象的X坐标增加指定的偏移量,即相对移动。 - // 参数dx表示对象在X轴上的偏移量。 - MoveByX(dx float64) - // MoveToY 将游戏对象在Y轴上移动到指定位置。 - // 该方法将对象的Y坐标设置为指定的位置,即绝对移动。 - // 参数y表示对象在Y轴上的目标位置。 - MoveToY(y float64) - // MoveByY 在当前位置基础上移动游戏对象在Y轴上的位置。 - // 该方法将对象的Y坐标增加指定的偏移量,即相对移动。 - // 参数dy表示对象在Y轴上的偏移量。 - MoveByY(dy float64) - // MoveToZ 将游戏对象在Z轴上移动到指定位置。 - // 该方法将对象的Z坐标设置为指定的位置,即绝对移动。 - // 参数z表示对象在Z轴上的目标位置。 - MoveToZ(z float64) - // MoveByZ 在当前位置基础上移动游戏对象在Z轴上的位置。 - // 该方法将对象的Z坐标增加指定的偏移量,即相对移动。 - // 参数dz表示对象在Z轴上的偏移量。 - MoveByZ(dz float64) - // GetSpeed 获取对象的移动速度 - GetSpeed() float64 - // SetSpeed 设置对象的移动速度 - SetSpeed(speed float64) -} diff --git a/game/builtin/position.go b/game/builtin/position.go deleted file mode 100644 index ce64d96..0000000 --- a/game/builtin/position.go +++ /dev/null @@ -1,105 +0,0 @@ -package builtin - -import "github.com/kercylan98/minotaur/game" - -// NewPosition 创建一个新的位置对象。 -func NewPosition(x, y, z float64) *Position { - return &Position{ - x: x, - y: y, - z: z, - } -} - -// Position 是一个具有位置信息的对象。 -type Position struct { - x, y, z float64 - positionChangeEventHandles []game.PositionChangeEventHandle -} - -// GetX 返回Position对象的X坐标。 -func (slf *Position) GetX() float64 { - return slf.x -} - -// GetY 返回Position对象的Y坐标。 -func (slf *Position) GetY() float64 { - return slf.y -} - -// GetZ 返回Position对象的Z坐标。 -func (slf *Position) GetZ() float64 { - return slf.z -} - -// GetXY 返回Position对象的X和Y坐标。 -func (slf *Position) GetXY() (float64, float64) { - return slf.x, slf.y -} - -// GetXYZ 返回Position对象的X、Y和Z坐标。 -func (slf *Position) GetXYZ() (float64, float64, float64) { - return slf.x, slf.y, slf.z -} - -// SetX 设置Position对象的X坐标。 -func (slf *Position) SetX(x float64) { - old := slf.Clone() - defer slf.OnPositionChangeEvent(old, slf) - slf.x = x -} - -// SetY 设置Position对象的Y坐标。 -func (slf *Position) SetY(y float64) { - old := slf.Clone() - defer slf.OnPositionChangeEvent(old, slf) - slf.y = y -} - -// SetZ 设置Position对象的Z坐标。 -func (slf *Position) SetZ(z float64) { - old := slf.Clone() - defer slf.OnPositionChangeEvent(old, slf) - slf.z = z -} - -// SetXY 设置Position对象的X和Y坐标。 -func (slf *Position) SetXY(x, y float64) { - old := slf.Clone() - defer slf.OnPositionChangeEvent(old, slf) - slf.x = x - slf.y = y -} - -// SetXYZ 设置Position对象的X、Y和Z坐标。 -func (slf *Position) SetXYZ(x, y, z float64) { - old := slf.Clone() - defer slf.OnPositionChangeEvent(old, slf) - slf.x = x - slf.y = y - slf.z = z -} - -func (slf *Position) Clone() game.Position { - return &Position{ - x: slf.x, - y: slf.y, - z: slf.z, - } -} - -func (slf *Position) Compare(position game.Position) bool { - return slf.x == position.GetX() && slf.y == position.GetY() && slf.z == position.GetZ() -} - -func (slf *Position) RegPositionChangeEvent(handle game.PositionChangeEventHandle) { - slf.positionChangeEventHandles = append(slf.positionChangeEventHandles, handle) -} - -func (slf *Position) OnPositionChangeEvent(old, new game.Position) { - if !old.Compare(new) { - for _, handle := range slf.positionChangeEventHandles { - handle(old, new) - } - } -} diff --git a/game/postion.go b/game/postion.go deleted file mode 100644 index 4124345..0000000 --- a/game/postion.go +++ /dev/null @@ -1,38 +0,0 @@ -package game - -// Position 是一个兼容2D和3D的位置接口,用于表示游戏中对象的空间位置。 -// 该接口提供了获取和设置X、Y和Z轴坐标的方法,以便在2D和3D环境中灵活使用。 -// 通过实现此接口,游戏对象可以方便地在不同的坐标系中进行转换和操作。 -type Position interface { - // GetX 获取X轴坐标 - GetX() float64 - // GetY 获取Y轴坐标 - GetY() float64 - // GetZ 获取Z轴坐标 - GetZ() float64 - // GetXY 获取X和Y轴坐标 - GetXY() (x, y float64) - // GetXYZ 获取X、Y和Z轴坐标 - GetXYZ() (x, y, z float64) - // SetX 设置X轴坐标 - SetX(x float64) - // SetY 设置Y轴坐标 - SetY(y float64) - // SetZ 设置Z轴坐标 - SetZ(z float64) - // SetXY 设置X和Y轴坐标 - SetXY(x, y float64) - // SetXYZ 设置X、Y和Z轴坐标 - SetXYZ(x, y, z float64) - // Clone 克隆当前位置到新结构体 - Clone() Position - // Compare 比较两个坐标是否相同 - Compare(position Position) bool - // RegPositionChangeEvent 当位置发生改变时,将立即执行注册的事件处理函数 - RegPositionChangeEvent(handle PositionChangeEventHandle) - OnPositionChangeEvent(old, new Position) -} - -type ( - PositionChangeEventHandle func(old, new Position) -)