[LIB-9] Add chesshog-qrcode module
[chesshog.git] / src / main / java / org / hedgecode / chess / uci / command / from / OptionCommand.java
1 /*
2  * Copyright (c) 2018. Developed by Hedgecode.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.hedgecode.chess.uci.command.from;
18
19 import org.hedgecode.chess.uci.Acceptor;
20 import org.hedgecode.chess.uci.Engine;
21 import org.hedgecode.chess.uci.UCICommand;
22 import org.hedgecode.chess.uci.UCIConstants;
23 import org.hedgecode.chess.uci.annotation.Command;
24 import org.hedgecode.chess.uci.annotation.CommandDirection;
25 import org.hedgecode.chess.uci.command.AbstractCommand;
26 import org.hedgecode.chess.uci.command.OptionParams;
27
28 /**
29  *
30  *
31  * @author Dmitry Samoshin aka gotty
32  */
33 @Command(
34         name = UCIConstants.OPTION,
35         direction = CommandDirection.FROM_ENGINE
36 )
37 public class OptionCommand extends AbstractCommand implements UCICommand {
38
39     @Override
40     public void exec(final Engine engine, final Acceptor acceptor, String params) {
41         OptionParams optionParams = OptionParams.Factory.parse(params);
42         if (optionParams != null) {
43             switch (optionParams.getType()) {
44                 case CHECK:
45                     acceptor.setOption(
46                             optionParams.getName(),
47                             Boolean.parseBoolean(optionParams.getDefValue())
48                     );
49                     break;
50                 case SPIN:
51                     acceptor.setOption(
52                             optionParams.getName(),
53                             Integer.parseInt(optionParams.getDefValue()),
54                             optionParams.getMinValue(),
55                             optionParams.getMaxValue()
56                     );
57                     break;
58                 case COMBO:
59                     acceptor.setOption(
60                             optionParams.getName(),
61                             optionParams.getDefValue(),
62                             optionParams.getVars()
63                     );
64                     break;
65                 case BUTTON:
66                     acceptor.setOption(
67                             optionParams.getName()
68                     );
69                     break;
70                 case STRING:
71                     acceptor.setOption(
72                             optionParams.getName(),
73                             optionParams.getDefValue()
74                     );
75                     break;
76             }
77         }
78     }
79
80 }