diff --git a/src/app/components/food-pantry/food-pantry.component.html b/src/app/components/interaction-menus/food-pantry/food-pantry.component.html
similarity index 100%
rename from src/app/components/food-pantry/food-pantry.component.html
rename to src/app/components/interaction-menus/food-pantry/food-pantry.component.html
diff --git a/src/app/components/food-pantry/food-pantry.component.spec.ts b/src/app/components/interaction-menus/food-pantry/food-pantry.component.spec.ts
similarity index 100%
rename from src/app/components/food-pantry/food-pantry.component.spec.ts
rename to src/app/components/interaction-menus/food-pantry/food-pantry.component.spec.ts
diff --git a/src/app/components/food-pantry/food-pantry.component.ts b/src/app/components/interaction-menus/food-pantry/food-pantry.component.ts
similarity index 72%
rename from src/app/components/food-pantry/food-pantry.component.ts
rename to src/app/components/interaction-menus/food-pantry/food-pantry.component.ts
index 64d122e..9f1491a 100644
--- a/src/app/components/food-pantry/food-pantry.component.ts
+++ b/src/app/components/interaction-menus/food-pantry/food-pantry.component.ts
@@ -1,8 +1,8 @@
import { Component, inject, input, InputSignal, output, OutputEmitterRef, Signal } from '@angular/core';
-import { ButtonComponent } from "../ui-elements/button/button.component";
-import { Food } from '../../types/food';
-import { FoodStore } from '../../api/food.store';
-import { GridComponent } from "../grid/grid.component";
+import { ButtonComponent } from "../../ui-elements/button/button.component";
+import { Food } from '../../../types/food';
+import { FoodStore } from '../../../api/food.store';
+import { GridComponent } from "../../grid/grid.component";
@Component({
selector: 'ff-food-pantry',
diff --git a/src/app/components/inventory/inventory.component.html b/src/app/components/interaction-menus/inventory/inventory.component.html
similarity index 100%
rename from src/app/components/inventory/inventory.component.html
rename to src/app/components/interaction-menus/inventory/inventory.component.html
diff --git a/src/app/components/inventory/inventory.component.spec.ts b/src/app/components/interaction-menus/inventory/inventory.component.spec.ts
similarity index 100%
rename from src/app/components/inventory/inventory.component.spec.ts
rename to src/app/components/interaction-menus/inventory/inventory.component.spec.ts
diff --git a/src/app/components/inventory/inventory.component.ts b/src/app/components/interaction-menus/inventory/inventory.component.ts
similarity index 85%
rename from src/app/components/inventory/inventory.component.ts
rename to src/app/components/interaction-menus/inventory/inventory.component.ts
index 667636f..cd51d27 100644
--- a/src/app/components/inventory/inventory.component.ts
+++ b/src/app/components/interaction-menus/inventory/inventory.component.ts
@@ -1,5 +1,5 @@
import { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core';
-import { ButtonComponent } from "../ui-elements/button/button.component";
+import { ButtonComponent } from "../../ui-elements/button/button.component";
@Component({
selector: 'ff-inventory',
diff --git a/src/app/components/interaction-menus/visitor-list/visitor-list.component.html b/src/app/components/interaction-menus/visitor-list/visitor-list.component.html
new file mode 100644
index 0000000..0f30ebd
--- /dev/null
+++ b/src/app/components/interaction-menus/visitor-list/visitor-list.component.html
@@ -0,0 +1,14 @@
+@if (isVisible()) {
+
+
+
+
visitor List works!
+
X
+
+
+
+}
diff --git a/src/app/components/interaction-menus/visitor-list/visitor-list.component.spec.ts b/src/app/components/interaction-menus/visitor-list/visitor-list.component.spec.ts
new file mode 100644
index 0000000..19a2fda
--- /dev/null
+++ b/src/app/components/interaction-menus/visitor-list/visitor-list.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { VisitorListComponent } from './visitor-list.component';
+
+describe('InventoryComponent', () => {
+ let component: VisitorListComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [VisitorListComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(VisitorListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/interaction-menus/visitor-list/visitor-list.component.ts b/src/app/components/interaction-menus/visitor-list/visitor-list.component.ts
new file mode 100644
index 0000000..2d59fff
--- /dev/null
+++ b/src/app/components/interaction-menus/visitor-list/visitor-list.component.ts
@@ -0,0 +1,17 @@
+import { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core';
+import { ButtonComponent } from "../../ui-elements/button/button.component";
+import { Chibi } from '../../../types/chibi/chibi';
+
+@Component({
+ selector: 'ff-visitor-list',
+ imports: [ButtonComponent],
+ templateUrl: './visitor-list.component.html',
+})
+export class VisitorListComponent {
+ public readonly isVisible: InputSignal = input.required();
+ public readonly host: InputSignal = input.required();
+ public readonly visitors: InputSignal = input.required();
+ public readonly onClose: OutputEmitterRef = output();
+ public readonly onItemChosen: OutputEmitterRef = output();
+
+}
diff --git a/src/app/pages/interactions/interactions.component.html b/src/app/pages/interactions/interactions.component.html
index 8770187..8f65de9 100644
--- a/src/app/pages/interactions/interactions.component.html
+++ b/src/app/pages/interactions/interactions.component.html
@@ -25,6 +25,13 @@
(onClose)="closeMenu()"
>
+
+
{{
lang.game.actions.giveItem
@@ -32,9 +39,18 @@
{{
lang.game.actions.feed
}}
- {{
- lang.game.actions.wakeUp
+ {{
+ lang.game.actions.inviteVisitor
}}
+ @if (isAwake()) {
+ {{
+ lang.game.actions.wakeUp
+ }}
+ } @else {
+ {{
+ lang.game.actions.putToSleep
+ }}
+ }
diff --git a/src/app/pages/interactions/interactions.component.ts b/src/app/pages/interactions/interactions.component.ts
index 30fabd7..047d2d2 100644
--- a/src/app/pages/interactions/interactions.component.ts
+++ b/src/app/pages/interactions/interactions.component.ts
@@ -4,8 +4,8 @@ import { ERouteKey } from '../../types/route-key';
import { Chibi, ChibiId } from '../../types/chibi/chibi';
import { InteractionCanvasComponent } from "../../components/interaction-canvas/interaction-canvas.component";
import { ChibiStore } from '../../api/chibi.store';
-import { FoodPantryComponent } from "../../components/food-pantry/food-pantry.component";
-import { InventoryComponent } from "../../components/inventory/inventory.component";
+import { FoodPantryComponent } from "../../components/interaction-menus/food-pantry/food-pantry.component";
+import { InventoryComponent } from "../../components/interaction-menus/inventory/inventory.component";
import { ButtonComponent } from "../../components/ui-elements/button/button.component";
import { EChibiInteraction } from '../../types/chibi/chibi-interaction';
import { IBrain } from '../../logic/chibi-behaviour/brain';
@@ -15,18 +15,22 @@ import { Food } from '../../types/food';
import { interval, Subscribable, Subscription } from 'rxjs';
import { RandomService } from '../../logic/random.service';
import { ChibiInteraction } from '../../logic/chibi-behaviour/brains/aperio.brain';
+import { isState, STATES } from '../../types/chibi/chibi-state';
+import { EChibiStateName } from '../../types/chibi/chibi-state-name';
+import { VisitorListComponent } from "../../components/interaction-menus/visitor-list/visitor-list.component";
enum EInteractionMenuState {
Neutral,
Pantry,
- Inventory
+ Inventory,
+ VisitorList
}
const THINKING_INTERVAL: number = 2000;
@Component({
selector: 'ff-interactions',
- imports: [HeaderComponent, InteractionCanvasComponent, FoodPantryComponent, InventoryComponent, ButtonComponent],
+ imports: [HeaderComponent, InteractionCanvasComponent, FoodPantryComponent, InventoryComponent, ButtonComponent, VisitorListComponent],
templateUrl: './interactions.component.html',
})
export class InteractionsComponent extends TranslateableComponent implements OnDestroy {
@@ -65,6 +69,10 @@ export class InteractionsComponent extends TranslateableComponent implements OnD
this.sub.unsubscribe();
}
+ public isAwake(): boolean {
+ return isState(STATES[this.chibi().state], EChibiStateName.Awake);
+ }
+
public interact(interaction: EChibiInteraction, item?: Food): void {
console.log(`${interaction} ${this.chibi().name} and item ${item}`);
this.brain.resolveInteraction({ name: interaction, payload: item } as ChibiInteraction);
@@ -78,6 +86,10 @@ export class InteractionsComponent extends TranslateableComponent implements OnD
this.interactionMenuState.set(EInteractionMenuState.Inventory);
}
+ public openVisitorList(): void {
+ this.interactionMenuState.set(EInteractionMenuState.VisitorList);
+ }
+
public closeMenu(): void {
this.interactionMenuState.set(EInteractionMenuState.Neutral);
}
diff --git a/src/app/types/translations/english.ts b/src/app/types/translations/english.ts
index d3b263b..9c8ef1e 100644
--- a/src/app/types/translations/english.ts
+++ b/src/app/types/translations/english.ts
@@ -16,8 +16,10 @@ export const ENG_TRANSLATIONS: Translation = {
inventory: {},
actions: {
wakeUp: 'Wake up!',
+ putToSleep: 'Put to Sleep',
feed: 'Feed',
- giveItem: 'Give Item'
+ giveItem: 'Give Item',
+ inviteVisitor: 'Invite Friend'
}
}
}
\ No newline at end of file
diff --git a/src/app/types/translations/translation.ts b/src/app/types/translations/translation.ts
index f0379bc..a5910e6 100644
--- a/src/app/types/translations/translation.ts
+++ b/src/app/types/translations/translation.ts
@@ -18,8 +18,10 @@ export type Translation = {
inventory: {},
actions: {
wakeUp: string;
+ putToSleep: string;
feed: string;
giveItem: string;
+ inviteVisitor: string;
}
}
}