1+ import { FireRequest } from "../client/message/fire-request.js" ;
2+ import { MoveRequest } from "../client/message/move-request.js" ;
3+ import { TurnRequest } from "../client/message/turn-request.js" ;
4+ import { CommunicationManager } from "./communication-manager.js" ;
5+
6+ /**
7+ * Gestion des actions du bot
8+ */
9+ export class BotActions {
10+ /**
11+ * Gestion technique des appels aux serveurs
12+ * @type {CommunicationManager }
13+ * @memberof BotActions
14+ */
15+ manager ;
16+
17+ /**
18+ * Gestion technique des appels aux serveurs
19+ * @type {string }
20+ * @memberof BotActions
21+ */
22+ botId ;
23+
24+ /**
25+ *
26+ * @param {CommunicationManager } manager Gestion thecnique des appels aux serveurs
27+ * @param {string } botId identifiant du bot
28+ */
29+ constructor ( manager , botId ) {
30+ this . manager = manager ;
31+ this . botId = botId ;
32+ }
33+
34+ /**
35+ * Rotation à gauche
36+ * @returns
37+ */
38+ turnLeft ( ) {
39+ return this . turn ( TurnRequest . LEFT ) ;
40+ }
41+
42+ /**
43+ * Rotation à droite
44+ * @returns {Promise<void> }
45+ */
46+ turnRight ( ) {
47+ return this . turn ( TurnRequest . RIGHT ) ;
48+ }
49+
50+ /**
51+ * Arret rotation
52+ * @returns {Promise<void> }
53+ */
54+ turnStop ( ) {
55+ return this . turn ( TurnRequest . STOP ) ;
56+ }
57+
58+ /**
59+ * Rotation
60+ * @param {string } direction right/left/stop
61+ * @returns {Promise<void> }
62+ */
63+ turn ( direction ) {
64+ return new Promise ( ( resolve , reject ) => {
65+ let request = new TurnRequest ( direction ) ;
66+ this . manager . httpPatch ( "/bots/" + this . botId + "/action/turn" , request , ( data , response ) => {
67+ if ( data . status === 'ok' ) {
68+ resolve ( ) ;
69+ } else {
70+ console . error ( `Rotation ${ direction } : ${ data . message } ` ) ;
71+ reject ( ) ;
72+ }
73+ } ) . on ( 'error' , function ( err ) {
74+ console . error ( `Rotation ${ direction } ` , err ) ;
75+ reject ( ) ;
76+ } ) ;
77+ } ) ;
78+ }
79+
80+ /**
81+ * On avance
82+ * @returns {Promise<void> }
83+ */
84+ moveForward ( ) {
85+ return this . move ( MoveRequest . START ) ;
86+ }
87+
88+ /**
89+ * On arrete d'avancer
90+ * @returns {Promise<void> }
91+ */
92+ moveStop ( ) {
93+ return this . move ( MoveRequest . STOP ) ;
94+ }
95+
96+ /**
97+ * Déplacement
98+ * @param {string } action start/stop
99+ * @returns {Promise<void> }
100+ */
101+ move ( action ) {
102+ return new Promise ( ( resolve , reject ) => {
103+ let request = new MoveRequest ( action ) ;
104+ this . manager . httpPatch ( "/bots/" + this . botId + "/action/move" , request , ( data , response ) => {
105+ if ( data . status === 'ok' ) {
106+ resolve ( ) ;
107+ } else {
108+ console . error ( `Déplacement ${ action } : ${ data . message } ` ) ;
109+ reject ( ) ;
110+ }
111+ } ) . on ( 'error' , function ( err ) {
112+ console . error ( `Déplacement ${ action } ` , err ) ;
113+ reject ( ) ;
114+ } ) ;
115+ } ) ;
116+ }
117+
118+ /**
119+ * Tir du bot
120+ * @param {number } angle angle de tir (degres)
121+ * @returns {Promise<void> }
122+ */
123+ fire ( angle ) {
124+ return new Promise ( ( resolve , reject ) => {
125+ let request = new FireRequest ( angle ) ;
126+ this . manager . httpPatch ( "/bots/" + this . botId + "/action/shoot" , request , ( data , response ) => {
127+ if ( data . status === 'ok' ) {
128+ resolve ( ) ;
129+ } else {
130+ let message = data . internal_code ? data . internal_code + " : " + data . label
131+ : data . message ? data . message : JSON . stringify ( data ) ;
132+ console . error ( `Tir angle ${ angle } , message: ${ message } ` ) ;
133+ reject ( message ) ;
134+ }
135+ } ) . on ( 'error' , function ( err ) {
136+ console . error ( `Tir angle ${ angle } ` , err ) ;
137+ reject ( err ) ;
138+ } ) ;
139+ } ) ;
140+ }
141+ }
0 commit comments