diff --git a/classesDiagram.png b/classesDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..dcda0106ac7ccafa419c4b331ec2e2cad33f1bb9 Binary files /dev/null and b/classesDiagram.png differ diff --git a/not-alone-doc/src/doc/asciidoc/_sections/diagrams/classesDiagram.puml b/not-alone-doc/src/doc/asciidoc/_sections/diagrams/classesDiagram.puml new file mode 100644 index 0000000000000000000000000000000000000000..e2256b248b7707ce50e5c718698422f775514c27 --- /dev/null +++ b/not-alone-doc/src/doc/asciidoc/_sections/diagrams/classesDiagram.puml @@ -0,0 +1,185 @@ +@startuml + +package model{ + + package interfaces{ + interface CardInterface{ + getId() : UUID + getPhase() : Phase + getDescription() : String + getTitle() : Object + } + interface PlayerInterface{ + getHand() : CardInterface[*] + getDiscards() : CardInterface[*] + getPlayedCards() : CardInterface[*] + getName() : String + getId() : UUID + } + } + package cards{ + abstract class Card{ + title : Object + description : String + id : UUID + + Card(title: Object, phase: Phase) + generateId() : UUID + toString() : String + addDescription(cardTilte: Object): String + effect(cardTitle: Object) + } + + class Lieu{ + Lieu(title: LieuTile, phase: Phase) + abriEffect() + jungleEffect() + riviereEffect() + plageEffect() + roverEffect() + maraisEffect() + antreEffect() + epaveEffect() + sourceEffect() + artifactEffect() + } + + class Survie{ + Survie(title: SurvieTitle, phase: Phase) + vortexEffect() + esquiveEffect() + riposteEffect() + volteFaceEffect() + } + + class Traque{ + Traque(title: TraqueTitle, phase:Phase) + mutationEffect() + flashBackEffect() + acharnementEffect() + champsDeForceEffect() + } + } + + package players{ + class Player{ + + id: UUID + name: String + + Player(name: String) + getId() : UUID + getName() : String + getHand() : CardInterface[*] + getDiscards() : CardInterface[*] + getPlayedCards() : CardInterface[*] + initialize() + draw(nbOfCards: Integer) + toString(): String + + } + class Creature{ + Creature(name: String) + toTraque(traqued: Tracked) + } + class Tracked{ + Tracked(name: String) + letGo() + resist() + } + class MasterPlayer{ + + } + } + + package util{ + + enum LieuTile{ + ANTRE + JUNGLE + RIVIERE + PLAGE + ROVER + MARAIS + ABRI + EPAVE + SOURCE + ARTEFACT + } + enum Phase{ + ONE + TWO + THREE + FOUR + } + enum SurvieTitle{ + RIPOSTE + VORTEX + ESQUIVE + VOLTE_FACE + } + enum TraqueTitle{ + ACHARNEMENT + CHAMPS_DE_FORCE + FLASHBACK + MUTATION + } + + } + + package pawns{ + enum PawnName{ + BALISE + ASSIMILATION + SECOURS + VOLONTE + ................. + } + class Pawn{ + Pawn(name: PawnName) + getName(): PawnName + } + + Pawn *--"has Name [1]" PawnName + } + + package tokens{ + enum TokenName{ + CIBLE + CREATURE + ARTEMIA + } + class Token{ + Token(name: TokenName) + getName(): TokenName + } + + Token *--"has Name [1]" TokenName + } + + CardInterface <|.. Card + PlayerInterface <|.. Player + + Card <|-- Lieu + Card <|-- Survie + Card <|-- Traque + + Player <|-- Creature + Player <|-- Tracked + + Player *--"hand [0..n]" CardInterface + Player *--"discards [0..n]\n" CardInterface + Player *--"playedCards [0..n]" CardInterface + Creature *-- "uses [0..n]" Lieu + Creature *-- "uses [0..n]" Traque + Card *-- "hasPhase [1]" Phase + Tracked *-- "hasCards [0..n]" Survie + + Lieu *-- "hasTitle [1] \n\n" LieuTile + Survie *-- "hasTitle [1]" SurvieTitle + Traque *-- "hasTitle [1]" TraqueTitle + + +} + +@enduml diff --git a/not-alone-server/src/main/java/fr/univnantes/alma/NotAloneApplication.java b/not-alone-server/src/main/java/fr/univnantes/alma/NotAloneApplication.java index 22776743f5042eb5a76cff94414378b0f18e7844..ea631df59b795d5692ab0eeec3e6f1b334a097ea 100644 --- a/not-alone-server/src/main/java/fr/univnantes/alma/NotAloneApplication.java +++ b/not-alone-server/src/main/java/fr/univnantes/alma/NotAloneApplication.java @@ -1,6 +1,6 @@ package fr.univnantes.alma; -//import fr.univnantes.alma.thrift.GameServerService; +import fr.univnantes.alma.thrift.GameServerService; import fr.univnantes.alma.handler.GameServiceHandler; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocolFactory; @@ -12,7 +12,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import javax.servlet.Servlet; @Configuration @EnableAutoConfiguration diff --git a/not-alone-server/src/main/java/fr/univnantes/alma/common/GameService.java b/not-alone-server/src/main/java/fr/univnantes/alma/common/GameService.java index 9d442fc4bf823c6dd044847a00731f807be12e89..ec480b90c19f1200cf727abbf189ad15c250beaf 100644 --- a/not-alone-server/src/main/java/fr/univnantes/alma/common/GameService.java +++ b/not-alone-server/src/main/java/fr/univnantes/alma/common/GameService.java @@ -1,7 +1,5 @@ package fr.univnantes.alma.common; -import fr.univnantes.alma.common.GameJoinRequest; - public interface GameService { /** diff --git a/not-alone-server/src/main/java/fr/univnantes/alma/game/InitData.java b/not-alone-server/src/main/java/fr/univnantes/alma/game/InitData.java new file mode 100644 index 0000000000000000000000000000000000000000..4c91fa4d30a6a73e40b19a011628e48f4d0580e1 --- /dev/null +++ b/not-alone-server/src/main/java/fr/univnantes/alma/game/InitData.java @@ -0,0 +1,6 @@ +package fr.univnantes.alma.game; + +public class InitData { + + +} diff --git a/not-alone-server/src/main/java/fr/univnantes/alma/handler/GameServiceHandler.java b/not-alone-server/src/main/java/fr/univnantes/alma/handler/GameServiceHandler.java index 47e60ebf1158ae8c3f6ac193e5712b9241adb9b1..07fedee0e35e031ec042d5bda0477737b0f604db 100644 --- a/not-alone-server/src/main/java/fr/univnantes/alma/handler/GameServiceHandler.java +++ b/not-alone-server/src/main/java/fr/univnantes/alma/handler/GameServiceHandler.java @@ -1,7 +1,7 @@ package fr.univnantes.alma.handler; import fr.univnantes.alma.common.GameJoinRequest; -import fr.univnantes.alma.core.InvalidOperationException; +import fr.univnantes.alma.thrift.InvalidOperationException; import fr.univnantes.alma.thrift.GameNotFound; import fr.univnantes.alma.thrift.GameServerService; import fr.univnantes.alma.thrift.JoinRequest; @@ -30,25 +30,5 @@ public class GameServiceHandler implements GameServerService.Iface { //TODO: translate JoinRequest into GameJoinRequest return service.join(gameId, new GameJoinRequest()); } - - @Override - public CrossPlatformResource get(int id) throws InvalidOperationException, TException { - return null; - } - - @Override - public List getList() throws InvalidOperationException, TException { - return null; - } - - @Override - public boolean ping() throws InvalidOperationException, TException { - return false; - } - - @Override - public void save(CrossPlatformResource resource) throws InvalidOperationException, TException { - - } } diff --git a/not-alone-server/src/main/java/fr/univnantes/alma/model/cards/Lieu.java b/not-alone-server/src/main/java/fr/univnantes/alma/model/cards/Lieu.java index c561f447b59ce9f6f8fe93a2188cb50766a4eed5..5aaaa849fd7c0efc20fdbd0442a39b51543b1456 100644 --- a/not-alone-server/src/main/java/fr/univnantes/alma/model/cards/Lieu.java +++ b/not-alone-server/src/main/java/fr/univnantes/alma/model/cards/Lieu.java @@ -12,7 +12,6 @@ public class Lieu extends Card{ public Lieu(LieuTitle title) { super(title); - this.id = this.generateId(); } diff --git a/not-alone-server/src/main/java/fr/univnantes/alma/model/players/Creature.java b/not-alone-server/src/main/java/fr/univnantes/alma/model/players/Creature.java index d601732cff1911952bc01a354ea9b574d62cce2b..12290e5996e8c89443548a7ed8a15561e7691a95 100644 --- a/not-alone-server/src/main/java/fr/univnantes/alma/model/players/Creature.java +++ b/not-alone-server/src/main/java/fr/univnantes/alma/model/players/Creature.java @@ -23,10 +23,13 @@ public class Creature extends Player{ } i++; } - if(card != null && !tracked.resist()){ - this.getHand().get(i).setPower(true); - this.assimilate(tracked); - this.getHand().remove(card); + if(card != null){ + boolean resist = tracked.resist(); + if(!resist){ + this.getHand().get(i).setPower(true); + this.assimilate(tracked); + this.getHand().remove(card); + } } } diff --git a/not-alone-server/src/test/java/fr/univnantes/alma/CardTest.java b/not-alone-server/src/test/java/fr/univnantes/alma/CardTest.java index d3089994eed4cfdbb7cf3597b988ffd04ccfb3e5..1c63cadd86b6e494d3448d0e07cfb617429a08cc 100644 --- a/not-alone-server/src/test/java/fr/univnantes/alma/CardTest.java +++ b/not-alone-server/src/test/java/fr/univnantes/alma/CardTest.java @@ -1,19 +1,14 @@ package fr.univnantes.alma; -import fr.univnantes.alma.model.cards.Lieu; -import fr.univnantes.alma.model.inerfaces.CardInterface; -import fr.univnantes.alma.model.utlis.LieuTitle; -import fr.univnantes.alma.model.utlis.Phase; + import org.junit.jupiter.api.Test; public class CardTest { @Test public void createCardTest(){ - CardInterface card = new Lieu(LieuTitle.ABRI, Phase.ONE); - System.out.println(card.toString()); - //assertEquals (card.getPhase(), Phase.ONE); + } } diff --git a/not-alone-web/package-lock.json b/not-alone-web/package-lock.json index 0166b8645afdc77eadf5881ed6b2f05ea83bb94f..474766944d38dd2dcd9cd19ebdb7e2d03c4222cd 100644 --- a/not-alone-web/package-lock.json +++ b/not-alone-web/package-lock.json @@ -2886,6 +2886,11 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bootstrap": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.3.tgz", + "integrity": "sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6875,6 +6880,11 @@ } } }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/not-alone-web/package.json b/not-alone-web/package.json index 78d9d606a6cb2a07119fc205c132837c70d99d41..121cb2af713c1454eda194f496269808db27a6cc 100644 --- a/not-alone-web/package.json +++ b/not-alone-web/package.json @@ -25,7 +25,9 @@ "@creditkarma/thrift-typescript": "^3.7.6", "@ngtools/webpack": "^10.1.3", "@types/thrift": "^0.10.10", + "bootstrap": "^4.5.3", "core-js": "^3.6.5", + "jquery": "^3.5.1", "marked": "^1.2.0", "rxjs": "~6.6.3", "thrift": "^0.13.0", diff --git a/not-alone-web/src/app/app.module.ts b/not-alone-web/src/app/app.module.ts index ef01c216963f38daf67a88b0cc7764e5304ba1de..6c8d85e769b4781080c1c46a6dae62a5c7378e80 100644 --- a/not-alone-web/src/app/app.module.ts +++ b/not-alone-web/src/app/app.module.ts @@ -5,13 +5,19 @@ import { AppComponent } from './app.component'; import { JetonsComponent } from './jetons/jetons.component'; import { PionsComponent } from './pions/pions.component'; import { PisteComponent } from './piste/piste.component'; +import { CardComponent } from './cards/card/card.component'; +import { CardsListComponent } from './cards/cards-list/cards-list.component'; +import { CardDetailComponent } from './cards/card-detail/card-detail.component'; @NgModule({ declarations: [ AppComponent, JetonsComponent, PionsComponent, - PisteComponent + PisteComponent, + CardComponent, + CardsListComponent, + CardDetailComponent ], imports: [ BrowserModule diff --git a/not-alone-web/src/app/cards/card-detail/card-detail.component.css b/not-alone-web/src/app/cards/card-detail/card-detail.component.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/not-alone-web/src/app/cards/card-detail/card-detail.component.html b/not-alone-web/src/app/cards/card-detail/card-detail.component.html new file mode 100644 index 0000000000000000000000000000000000000000..1a48da371a42b7e2da8d922df9421e200ec61f3e --- /dev/null +++ b/not-alone-web/src/app/cards/card-detail/card-detail.component.html @@ -0,0 +1 @@ +

card-detail works!

diff --git a/not-alone-web/src/app/cards/card-detail/card-detail.component.spec.ts b/not-alone-web/src/app/cards/card-detail/card-detail.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c37bde449de7babd6d62da8c3ef8d1b6c713e84 --- /dev/null +++ b/not-alone-web/src/app/cards/card-detail/card-detail.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardDetailComponent } from './card-detail.component'; + +describe('CardDetailComponent', () => { + let component: CardDetailComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CardDetailComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(CardDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/not-alone-web/src/app/cards/card-detail/card-detail.component.ts b/not-alone-web/src/app/cards/card-detail/card-detail.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2cf7c7bdff372f320a074d7ad140f6205a707360 --- /dev/null +++ b/not-alone-web/src/app/cards/card-detail/card-detail.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import {Observable} from "rxjs"; +import {Card} from "../card"; + +@Component({ + selector: 'app-card-detail', + templateUrl: './card-detail.component.html', + styleUrls: ['./card-detail.component.css'] +}) +export class CardDetailComponent implements OnInit { + cards: Observable; + + constructor(private cardService: CardService, ) { } + + ngOnInit(): void { + } + +} diff --git a/not-alone-web/src/app/cards/card.service.spec.ts b/not-alone-web/src/app/cards/card.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..44b73680c1d317ce7a3c511b27c78d6f62435e0b --- /dev/null +++ b/not-alone-web/src/app/cards/card.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { CardService } from './card.service'; + +describe('CardService', () => { + let service: CardService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(CardService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/not-alone-web/src/app/cards/card.service.ts b/not-alone-web/src/app/cards/card.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f993e881c629e2ec7e23f65de3c22f715c9eb75 --- /dev/null +++ b/not-alone-web/src/app/cards/card.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {Observable} from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +export class CardService { + + private baseUrl = ""; + + + constructor(private http: HttpClient) {} + + getCard(id: number): Observable{ + return null; + } +} diff --git a/not-alone-web/src/app/cards/card.ts b/not-alone-web/src/app/cards/card.ts new file mode 100644 index 0000000000000000000000000000000000000000..d7ee6d23f64d69fecace943037fd0cf978d476b2 --- /dev/null +++ b/not-alone-web/src/app/cards/card.ts @@ -0,0 +1,6 @@ +export class Card { + id: Object; + phase: Object; + title: Object; + description: string +} diff --git a/not-alone-web/src/app/cards/card/card.component.css b/not-alone-web/src/app/cards/card/card.component.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/not-alone-web/src/app/cards/card/card.component.html b/not-alone-web/src/app/cards/card/card.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f2fda252a00e00222fcb897e4b51d94fd9a9c12c --- /dev/null +++ b/not-alone-web/src/app/cards/card/card.component.html @@ -0,0 +1 @@ +

card works!

diff --git a/not-alone-web/src/app/cards/card/card.component.spec.ts b/not-alone-web/src/app/cards/card/card.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3093fd5a30b9312cf88096bb93f28699e5be088f --- /dev/null +++ b/not-alone-web/src/app/cards/card/card.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardComponent } from './card.component'; + +describe('CardComponent', () => { + let component: CardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CardComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(CardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/not-alone-web/src/app/cards/card/card.component.ts b/not-alone-web/src/app/cards/card/card.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3948f91d076ec324a5839f899d1aa4a68b97e8da --- /dev/null +++ b/not-alone-web/src/app/cards/card/card.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-card', + templateUrl: './card.component.html', + styleUrls: ['./card.component.css'] +}) +export class CardComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/not-alone-web/src/app/cards/cards-list/cards-list.component.css b/not-alone-web/src/app/cards/cards-list/cards-list.component.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/not-alone-web/src/app/cards/cards-list/cards-list.component.html b/not-alone-web/src/app/cards/cards-list/cards-list.component.html new file mode 100644 index 0000000000000000000000000000000000000000..04d6f7e6390d08914d158ebf77d95baf7f8c052c --- /dev/null +++ b/not-alone-web/src/app/cards/cards-list/cards-list.component.html @@ -0,0 +1 @@ +

cards-list works!

diff --git a/not-alone-web/src/app/cards/cards-list/cards-list.component.spec.ts b/not-alone-web/src/app/cards/cards-list/cards-list.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..150700bba14ff3ee2e6cd7c1170ccc278e315991 --- /dev/null +++ b/not-alone-web/src/app/cards/cards-list/cards-list.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardsListComponent } from './cards-list.component'; + +describe('CardsListComponent', () => { + let component: CardsListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CardsListComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(CardsListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/not-alone-web/src/app/cards/cards-list/cards-list.component.ts b/not-alone-web/src/app/cards/cards-list/cards-list.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9cb19cf71df037d63f35edcd1a9697f18830ccf2 --- /dev/null +++ b/not-alone-web/src/app/cards/cards-list/cards-list.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; +import {Observable} from "rxjs"; +import {Card} from "../card"; +import {CardService} from "../card.service"; +import {Router} from "@angular/router"; + +@Component({ + selector: 'app-cards-list', + templateUrl: './cards-list.component.html', + styleUrls: ['./cards-list.component.css'] +}) +export class CardsListComponent implements OnInit { + + cards: Observable; + constructor(private cardService: CardService, private router: Router) { } + + ngOnInit(): void { + this.reloadData(); + } + + reloadData(){ + this.cards = null; + } + + cardDetails(id: Object){ + this.router.navigate(['details', id]); + } + +}