Make it so you cant shoot yourself
This commit is contained in:
@@ -3,34 +3,34 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
|
||||
// Mock Phaser
|
||||
vi.mock('phaser', () => {
|
||||
const mockGraphics = {
|
||||
setDepth: vi.fn().mockReturnThis(),
|
||||
clear: vi.fn().mockReturnThis(),
|
||||
lineStyle: vi.fn().mockReturnThis(),
|
||||
lineBetween: vi.fn().mockReturnThis(),
|
||||
};
|
||||
const mockGraphics = {
|
||||
setDepth: vi.fn().mockReturnThis(),
|
||||
clear: vi.fn().mockReturnThis(),
|
||||
lineStyle: vi.fn().mockReturnThis(),
|
||||
lineBetween: vi.fn().mockReturnThis(),
|
||||
};
|
||||
|
||||
const mockSprite = {
|
||||
setDepth: vi.fn().mockReturnThis(),
|
||||
setVisible: vi.fn().mockReturnThis(),
|
||||
setAlpha: vi.fn().mockReturnThis(),
|
||||
setPosition: vi.fn().mockReturnThis(),
|
||||
};
|
||||
const mockSprite = {
|
||||
setDepth: vi.fn().mockReturnThis(),
|
||||
setVisible: vi.fn().mockReturnThis(),
|
||||
setAlpha: vi.fn().mockReturnThis(),
|
||||
setPosition: vi.fn().mockReturnThis(),
|
||||
};
|
||||
|
||||
return {
|
||||
default: {
|
||||
GameObjects: {
|
||||
Sprite: vi.fn(() => mockSprite),
|
||||
Graphics: vi.fn(() => mockGraphics),
|
||||
},
|
||||
Scene: class {
|
||||
add = {
|
||||
graphics: vi.fn(() => mockGraphics),
|
||||
sprite: vi.fn(() => mockSprite),
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
return {
|
||||
default: {
|
||||
GameObjects: {
|
||||
Sprite: vi.fn(() => mockSprite),
|
||||
Graphics: vi.fn(() => mockGraphics),
|
||||
},
|
||||
Scene: class {
|
||||
add = {
|
||||
graphics: vi.fn(() => mockGraphics),
|
||||
sprite: vi.fn(() => mockSprite),
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
// Mock CombatLogic
|
||||
@@ -53,7 +53,7 @@ describe('TargetingSystem', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
|
||||
|
||||
mockGraphics = {
|
||||
setDepth: vi.fn().mockReturnThis(),
|
||||
clear: vi.fn().mockReturnThis(),
|
||||
@@ -77,7 +77,7 @@ describe('TargetingSystem', () => {
|
||||
|
||||
targetingSystem = new TargetingSystem(mockScene);
|
||||
mockWorld = { width: 10, height: 10 };
|
||||
|
||||
|
||||
// Default return for traceProjectile
|
||||
(traceProjectile as any).mockReturnValue({
|
||||
blockedPos: { x: 0, y: 0 },
|
||||
@@ -171,4 +171,33 @@ describe('TargetingSystem', () => {
|
||||
expect(mockGraphics.clear).toHaveBeenCalled();
|
||||
expect(mockSprite.setVisible).toHaveBeenCalledWith(false);
|
||||
});
|
||||
|
||||
it('should prevent targeting self', () => {
|
||||
const playerPos = { x: 1, y: 1 };
|
||||
|
||||
// Setup targeting
|
||||
targetingSystem.startTargeting(
|
||||
'item-1',
|
||||
playerPos,
|
||||
mockWorld,
|
||||
{ getCombatant: vi.fn().mockReturnValue({ pos: playerPos, inventory: { items: [{ id: 'item-1' }] } }) } as any,
|
||||
1 as EntityId,
|
||||
new Uint8Array(100),
|
||||
10
|
||||
);
|
||||
|
||||
// Manually set cursor to player pos (startTargeting might do it, but we ensure it)
|
||||
targetingSystem.updateCursor(playerPos, playerPos);
|
||||
|
||||
const callback = vi.fn();
|
||||
const result = targetingSystem.executeThrow(
|
||||
mockWorld,
|
||||
1 as EntityId,
|
||||
{ getCombatant: vi.fn().mockReturnValue({ pos: playerPos, inventory: { items: [{ id: 'item-1' }] } }) } as any,
|
||||
callback
|
||||
);
|
||||
|
||||
expect(result).toBe(false);
|
||||
expect(callback).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user