Rev 135 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
81 | ligi | 1 | /*************************************************************** |
2 | * |
||
3 | * User Interface ( Canvas ) of DUBwise |
||
4 | * |
||
5 | * Author: Marcus -LiGi- Bueschleb |
||
6 | * |
||
7 | * see README for further Infos |
||
8 | * |
||
9 | ***************************************************************/ |
||
10 | |||
11 | import javax.microedition.lcdui.*; |
||
12 | import javax.microedition.rms.*; |
||
13 | |||
14 | import javax.microedition.media.*; |
||
15 | import javax.microedition.media.control.*; |
||
16 | |||
149 | ligi | 17 | |
18 | // for fileapi |
||
19 | import javax.microedition.io.*; |
||
20 | import javax.microedition.midlet.*; |
||
21 | import javax.microedition.io.file.*; |
||
22 | |||
23 | import java.io.*; |
||
24 | import java.util.*; |
||
25 | |||
26 | |||
27 | // end for fileapi |
||
28 | |||
81 | ligi | 29 | public class DUBwiseCanvas |
30 | extends Canvas |
||
135 | ligi | 31 | implements Runnable,DUBwiseDefinitions |
81 | ligi | 32 | { |
33 | |||
149 | ligi | 34 | // for fileapi |
35 | public final static int MAX_FILELIST_LENGTH=100; |
||
36 | public final static int MAX_PATH_DEPTH=10; |
||
37 | // String act_path=""; |
||
38 | // String last_path=""; |
||
39 | |||
40 | byte act_path_depth=0; |
||
41 | String[] act_path_arr; |
||
42 | |||
43 | |||
44 | public String act_path() |
||
45 | { |
||
46 | String res=""; |
||
47 | for (int i=0;i<act_path_depth;i++) |
||
48 | res+=act_path_arr[i]; |
||
49 | return res; |
||
50 | } |
||
51 | |||
52 | String[] file_list; |
||
53 | int file_list_length=0; |
||
54 | |||
55 | |||
56 | |||
57 | int[] act_proxy_ip={192,168,1,42,4242}; // { ip , ip , ip , ip , port } |
||
58 | int[] act_connection_ip={192,168,1,42,4242}; // { ip , ip , ip , ip , port } |
||
59 | |||
60 | |||
61 | int ipinput_pos=0; |
||
62 | // end for fileapi |
||
63 | |||
64 | public String ip_digit_zeroes(int digit) |
||
65 | { return "" + digit/100 + "" + (digit/10)%10 + "" + (digit)%10; } |
||
66 | |||
67 | public String ip_str(int[] ip,boolean with_zeroes) |
||
68 | { |
||
69 | if(with_zeroes) |
||
70 | return ip_digit_zeroes(ip[0]) + "." +ip_digit_zeroes(ip[1]) + "."+ip_digit_zeroes(ip[2]) + "."+ip_digit_zeroes(ip[3]) + ":"+ip_digit_zeroes(ip[4]) ; |
||
71 | else |
||
72 | return ip[0]+"."+ip[1]+"."+ip[2]+"."+ip[3]+":"+ip[4]; |
||
73 | |||
74 | } |
||
75 | |||
76 | int heading_offset=0; |
||
135 | ligi | 77 | int act_wp; |
78 | |||
81 | ligi | 79 | // name/handle for the recordStore to memorize some stuff |
80 | private final static String RECORD_STORE_NAME="DUBSETT"; |
||
81 | |||
82 | private BTSearcher bt_scanner; |
||
83 | public MKCommunicator mk=null; |
||
84 | private MKStatistics mk_stat=null; |
||
85 | private MKParamsEditor params_editor=null; |
||
86 | public DUBwiseDebug debug=null; |
||
87 | |||
88 | //#if voice_mode!="no_voice" |
||
89 | private MKStatusVoice status_voice; |
||
90 | //#endif |
||
91 | |||
92 | private String err=""; |
||
93 | private DUBwise root; |
||
94 | |||
135 | ligi | 95 | public UFOProber ufo_prober; |
81 | ligi | 96 | |
97 | byte[] settings_arr; |
||
98 | |||
99 | public boolean do_vibra=true; |
||
100 | public boolean do_sound=true; |
||
149 | ligi | 101 | public boolean do_scrollbg=true; |
81 | ligi | 102 | public boolean keep_lighton=false; |
103 | |||
104 | private Image bg_img; |
||
105 | private Image bt_img; |
||
106 | private Image lcd_img; |
||
107 | private Image load_img; |
||
149 | ligi | 108 | private Image symbols_img; |
81 | ligi | 109 | |
110 | |||
135 | ligi | 111 | public boolean fullscreen=false; |
112 | public int act_motor=0; |
||
113 | public int act_motor_increase=0; |
||
114 | public boolean motor_test_sel_all=false; |
||
115 | |||
116 | |||
81 | ligi | 117 | final static int SKINID_DARK= 0; |
118 | final static int SKINID_LIGHT = 1; |
||
119 | |||
120 | //holds id of actual skin |
||
121 | byte act_skin=SKINID_DARK; |
||
122 | |||
123 | |||
149 | ligi | 124 | public final static int MAX_GRAPHS=4; |
125 | |||
126 | public final static int[] graph_colors={0x156315,0xCC1315,0xf8ef02,0x19194d}; |
||
127 | |||
128 | public int[] graph_sources={0,1,2,3}; |
||
129 | public String[] graph_names={"nick int","roll int","nick acc","roll acc"}; |
||
130 | |||
131 | public int[][] graph_data; |
||
132 | |||
81 | ligi | 133 | public int[] nick_line_pos_data; |
134 | public int[] roll_line_pos_data; |
||
135 | |||
136 | public int[] accnick_line_pos_data; |
||
137 | public int[] accroll_line_pos_data; |
||
138 | |||
139 | public int lcd_char_width=0; |
||
140 | public int lcd_char_height=0; |
||
141 | |||
142 | public int frame_pos=0; |
||
135 | ligi | 143 | |
144 | public int user_intent=USER_INTENT_NONE; |
||
81 | ligi | 145 | |
146 | int line_scaler=20; |
||
147 | |||
148 | int rawdebug_cursor_y=0; |
||
149 | int rawdebug_off_y=0; |
||
150 | |||
151 | public int line_middle_y; |
||
152 | |||
153 | boolean quit=false; |
||
154 | boolean rescan=true; |
||
149 | ligi | 155 | int bg_offset=0; |
81 | ligi | 156 | |
157 | // variable to hold the current state |
||
158 | public int state=-1; |
||
159 | |||
160 | int local_max=-1; |
||
161 | |||
162 | int y_off=0; |
||
163 | int spacer=0; |
||
164 | int spacer1=0; |
||
165 | |||
166 | int[] motor_test = {0,0,0,0}; |
||
167 | |||
168 | |||
169 | String[] menu_items; |
||
149 | ligi | 170 | int[] menu_actions; |
81 | ligi | 171 | int act_menu_select=0; |
172 | |||
173 | String[] lcd_lines =null; |
||
174 | |||
175 | public void paint_menu(Graphics g) |
||
176 | { |
||
177 | for ( int i=0;i<menu_items.length;i++) |
||
178 | { |
||
179 | if ((frame_pos%3)!=0) |
||
180 | { |
||
181 | lcd_lines[i]=(act_menu_select==i?">":" ") + menu_items[i]; |
||
182 | for ( int ii=0;ii<(18-menu_items[i].length());ii++) |
||
183 | lcd_lines[i]+=" "; |
||
184 | if (act_menu_select==i) |
||
185 | lcd_lines[i]+="<"; |
||
186 | } |
||
187 | else |
||
188 | lcd_lines[i]=" " + menu_items[i]; |
||
189 | |||
190 | |||
191 | } |
||
192 | paint_lcd(g,true); |
||
193 | } |
||
194 | |||
195 | public void menu_keypress(int keyCode) |
||
196 | { |
||
149 | ligi | 197 | debug.log("KeyCode:"+keyCode); |
81 | ligi | 198 | switch (getGameAction (keyCode)) |
199 | { |
||
200 | case UP: |
||
201 | if (act_menu_select!=0) act_menu_select--; |
||
202 | else |
||
203 | act_menu_select=menu_items.length-1; |
||
204 | break; |
||
205 | |||
206 | case DOWN: |
||
207 | if (act_menu_select<(menu_items.length-1)) act_menu_select++; |
||
208 | else act_menu_select=0; |
||
209 | break; |
||
210 | |||
211 | } |
||
212 | |||
213 | } |
||
214 | |||
215 | public boolean cam_condition() |
||
216 | { |
||
217 | return (mk.stick_data.stick[5]>100); |
||
218 | |||
219 | } |
||
220 | |||
149 | ligi | 221 | // int lcd_top=25; |
222 | |||
81 | ligi | 223 | public void paint_lcd(Graphics g,boolean bottomup) |
224 | { |
||
225 | |||
226 | int y; |
||
227 | |||
149 | ligi | 228 | int lcd_top= (state==STATEID_EDIT_PARAMS?0:25); |
229 | |||
230 | int spacer_left_right=(this.getWidth()-(20*(lcd_img.getWidth()/222)))/2; |
||
231 | // for(int i=0;i<lcd_lines.length;i++) |
||
232 | int max_lines=(this.getHeight()-lcd_top)/lcd_char_height; |
||
233 | int display_lines=(lcd_lines.length>max_lines?max_lines:lcd_lines.length); |
||
234 | |||
235 | |||
236 | int lcd_off= (state==STATEID_EDIT_PARAMS?params_editor.act_y:act_menu_select)-display_lines+1; |
||
237 | if ( lcd_off<0) lcd_off=0; |
||
238 | |||
239 | for(int i=0;i<display_lines;i++) |
||
81 | ligi | 240 | for (int pos=0;pos<20;pos++) |
241 | { |
||
242 | if (bottomup) |
||
149 | ligi | 243 | y=this.getHeight()-(display_lines-i)*lcd_char_height; |
81 | ligi | 244 | else |
245 | y=i*lcd_char_height; |
||
149 | ligi | 246 | g.setClip((lcd_img.getWidth()/222)*pos+spacer_left_right,y,(lcd_img.getWidth()/222),lcd_img.getHeight()); |
247 | g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*pos-((pos<lcd_lines[i+lcd_off].length()?lcd_lines[i+lcd_off].charAt(pos):' ')-' ')*(lcd_img.getWidth()/222),y,g.TOP | g.LEFT); |
||
81 | ligi | 248 | |
249 | } |
||
250 | } |
||
251 | |||
252 | public void load_images() |
||
253 | { |
||
254 | try |
||
255 | { |
||
256 | // load all needed images |
||
257 | switch (act_skin) |
||
258 | { |
||
259 | case SKINID_DARK: |
||
260 | lcd_img=Image.createImage("/lcd_green.png"); |
||
261 | bg_img=Image.createImage("/starfield.jpg"); break; |
||
262 | |||
263 | case SKINID_LIGHT: |
||
264 | lcd_img=Image.createImage("/lcd_blue.png"); |
||
265 | bg_img=Image.createImage("/clouds.jpg"); |
||
266 | break; |
||
267 | } |
||
268 | |||
269 | |||
270 | bt_img=Image.createImage("/bt.png"); |
||
149 | ligi | 271 | symbols_img=Image.createImage("/symbols.png"); |
81 | ligi | 272 | load_img=Image.createImage("/load.png"); |
273 | |||
274 | lcd_char_width=lcd_img.getWidth()/222; |
||
275 | lcd_char_height=lcd_img.getHeight(); |
||
276 | |||
277 | |||
149 | ligi | 278 | graph_data=new int[MAX_GRAPHS][bg_img.getWidth()]; |
279 | |||
280 | for (int c=0;c<bg_img.getWidth();c++) |
||
281 | for (int d=0;d<MAX_GRAPHS;d++) |
||
282 | graph_data[d][c]=-1; |
||
283 | |||
284 | |||
285 | |||
81 | ligi | 286 | nick_line_pos_data=new int[bg_img.getWidth()]; |
287 | roll_line_pos_data=new int[bg_img.getWidth()]; |
||
288 | accnick_line_pos_data=new int[bg_img.getWidth()]; |
||
289 | accroll_line_pos_data=new int[bg_img.getWidth()]; |
||
290 | |||
291 | for (int c=0;c<bg_img.getWidth();c++) |
||
292 | { |
||
293 | nick_line_pos_data[c]=-1; |
||
294 | roll_line_pos_data[c]=-1; |
||
295 | accnick_line_pos_data[c]=-1; |
||
296 | accroll_line_pos_data[c]=-1; |
||
297 | } |
||
298 | |||
149 | ligi | 299 | |
300 | } |
||
301 | |||
302 | catch (Exception e) |
||
303 | { |
||
304 | debug.err(e.toString()); |
||
305 | } |
||
306 | |||
81 | ligi | 307 | } |
308 | |||
309 | public DUBwiseCanvas(DUBwise _root) |
||
310 | { |
||
311 | |||
312 | |||
149 | ligi | 313 | // file |
314 | file_list= new String[MAX_FILELIST_LENGTH]; |
||
315 | act_path_arr=new String[MAX_PATH_DEPTH]; |
||
316 | // end file |
||
317 | |||
318 | |||
81 | ligi | 319 | root=_root; |
320 | |||
135 | ligi | 321 | debug = new DUBwiseDebug(this); |
81 | ligi | 322 | |
149 | ligi | 323 | |
324 | |||
81 | ligi | 325 | bt_scanner = new BTSearcher(); |
326 | params_editor = new MKParamsEditor(this); |
||
327 | ufo_prober = new UFOProber(); |
||
328 | |||
329 | mk = new MKCommunicator(root,debug); |
||
330 | mk_stat = new MKStatistics(mk); |
||
331 | |||
332 | |||
333 | //#if voice_mode!="no_voice" |
||
334 | status_voice=new MKStatusVoice(mk,this); |
||
335 | //#endif |
||
336 | |||
337 | |||
338 | try |
||
339 | { |
||
340 | RecordStore recStore = RecordStore.openRecordStore(RECORD_STORE_NAME , true ); |
||
341 | |||
342 | if (recStore.getNumRecords()==3) |
||
343 | { |
||
344 | |||
345 | //byte[] recData = new byte[recStore.getRecordSize(1)]; |
||
346 | //int len = recStore.getRecord(1, recData, 0); |
||
347 | |||
348 | //byte[] recData2 = new byte[recStore.getRecordSize(2)]; |
||
349 | //int len2 = recStore.getRecord(2, recData, 0); |
||
350 | |||
351 | byte[] url_data=recStore.getRecord(1); |
||
352 | byte[] name_data=recStore.getRecord(2); |
||
353 | settings_arr=recStore.getRecord(3); |
||
354 | |||
355 | act_skin=settings_arr[0]; |
||
356 | do_sound=(settings_arr[1]==1); |
||
357 | do_vibra=(settings_arr[2]==1); |
||
149 | ligi | 358 | do_scrollbg=(settings_arr[3]==1); |
81 | ligi | 359 | fullscreen=(settings_arr[4]==1); |
360 | keep_lighton=(settings_arr[5]==1); |
||
361 | |||
362 | connect_mk(new String(url_data, 0, url_data.length),new String(name_data, 0, name_data.length)); |
||
363 | |||
364 | } |
||
365 | recStore.closeRecordStore(); |
||
366 | } |
||
367 | catch (Exception e) |
||
368 | { |
||
369 | settings_arr=new byte[10]; |
||
370 | |||
371 | err+=e.toString(); |
||
372 | } |
||
373 | |||
374 | |||
375 | load_images(); |
||
376 | |||
149 | ligi | 377 | // chg_state((mk.force_disconnect)?STATEID_SCANNING:STATEID_MAINMENU); |
378 | chg_state(STATEID_MAINMENU); |
||
81 | ligi | 379 | |
380 | |||
381 | |||
382 | new Thread(this).start(); |
||
383 | |||
384 | } |
||
385 | |||
386 | |||
387 | |||
388 | |||
389 | /****************************** Thread ******************/ |
||
390 | // ticking runnable Section |
||
391 | public void run() |
||
392 | { |
||
393 | |||
394 | |||
395 | while(true) |
||
396 | { |
||
397 | try { |
||
398 | |||
399 | |||
400 | repaint(); |
||
401 | serviceRepaints(); |
||
402 | |||
403 | long loopStartTime = System.currentTimeMillis(); |
||
404 | long sleeptime=0; |
||
405 | // ticked thing |
||
406 | |||
407 | frame_pos++; |
||
408 | |||
409 | switch(state) |
||
410 | { |
||
411 | case STATEID_CAMMODE: |
||
412 | |||
413 | try |
||
414 | { |
||
415 | if(cam_condition()) |
||
416 | { |
||
417 | cam_img=null; |
||
418 | debug.log("get snap\n"); |
||
419 | cam_raw = mVideoControl.getSnapshot(null); |
||
420 | |||
421 | try { Thread.sleep(4000); } |
||
422 | catch (Exception e) |
||
423 | { |
||
424 | err="Problem Sleeping "; |
||
425 | } |
||
426 | } |
||
427 | else |
||
428 | { |
||
429 | if (cam_img==null) |
||
430 | cam_img = Image.createImage(cam_raw, 0, cam_raw.length); |
||
431 | } |
||
432 | } |
||
433 | catch ( Exception e) |
||
434 | { |
||
435 | debug.log(e.toString()); |
||
436 | } |
||
437 | break; |
||
438 | case STATEID_KEYCONTROL: |
||
439 | mk.send_keys(keycontrol_bitfield); |
||
440 | break; |
||
441 | |||
135 | ligi | 442 | case STATEID_READ_PARAMS: |
443 | if (mk.watchdog.act_paramset==5) |
||
444 | chg_state(STATEID_SELECT_PARAMSET); |
||
445 | else |
||
446 | { |
||
447 | lcd_lines[0]="Reading Settings "; |
||
448 | lcd_lines[1]=mk.watchdog.act_paramset+"/5 |"+ (mk.watchdog.act_paramset>0?"#":"_") + (mk.watchdog.act_paramset>1?"#":"_") + (mk.watchdog.act_paramset>2?"#":"_")+ (mk.watchdog.act_paramset>3?"#":"_")+ (mk.watchdog.act_paramset>4?"#":"_") + "| "; |
||
449 | } |
||
450 | break; |
||
451 | |||
81 | ligi | 452 | case STATEID_MOTORTEST: |
453 | |||
454 | if (motor_test_sel_all) |
||
455 | for (int m=0;m<4;m++) |
||
456 | { |
||
457 | motor_test[m]+=act_motor_increase; |
||
458 | if (motor_test[m]<0)motor_test[m]=0; |
||
459 | if (motor_test[m]>255)motor_test[m]=255; |
||
460 | } |
||
461 | else |
||
462 | { |
||
463 | motor_test[act_motor]+=act_motor_increase; |
||
464 | if (motor_test[act_motor]<0) motor_test[act_motor]=0; |
||
465 | if (motor_test[act_motor]>255) motor_test[act_motor]=255; |
||
466 | } |
||
467 | |||
468 | mk.motor_test(motor_test); |
||
469 | break; |
||
470 | |||
149 | ligi | 471 | case STATEID_IPINPUT: |
472 | lcd_lines[1]=ip_str(act_proxy_ip,true); |
||
473 | |||
474 | |||
475 | lcd_lines[2]=""; |
||
476 | for(int foo=0;foo<20;foo++) |
||
477 | { |
||
478 | if (foo==ipinput_pos) |
||
479 | lcd_lines[2]+="^"; |
||
480 | else |
||
481 | lcd_lines[2]+=" "; |
||
482 | } |
||
483 | break; |
||
484 | |||
135 | ligi | 485 | case STATEID_MAINMENU: |
486 | if (ufo_prober.change_notify) |
||
487 | { |
||
488 | ufo_prober.change_notify=false; |
||
489 | chg_state(STATEID_MAINMENU); |
||
490 | } |
||
491 | break; |
||
492 | |||
81 | ligi | 493 | case STATEID_SCANNING: |
494 | intro_str_delay--; |
||
495 | if (intro_str_delay<0) |
||
496 | { |
||
497 | intro_str_delay=1; |
||
498 | if (intro_str_pos>intro_str.length()) |
||
499 | intro_str_pos=0; |
||
500 | lcd_lines[3]=intro_str.substring(intro_str_pos, (((intro_str_pos+20)>intro_str.length())?intro_str.length():intro_str_pos+20)); |
||
501 | intro_str_pos++; |
||
502 | } |
||
503 | |||
504 | if (!bt_scanner.searching) |
||
505 | chg_state(STATEID_DEVICESELECT); |
||
506 | |||
507 | |||
508 | break; |
||
509 | |||
510 | |||
511 | |||
512 | } |
||
513 | |||
514 | try { |
||
149 | ligi | 515 | |
81 | ligi | 516 | nick_line_pos_data[-bg_offset] = mk.debug_data.nick_int(); |
517 | roll_line_pos_data[-bg_offset] = mk.debug_data.roll_int(); |
||
518 | accnick_line_pos_data[-bg_offset] = mk.debug_data.accnick(); |
||
519 | accroll_line_pos_data[-bg_offset] = mk.debug_data.accroll(); |
||
520 | } |
||
521 | catch (Exception e) |
||
522 | { |
||
523 | err+=e.toString(); |
||
524 | } |
||
525 | |||
526 | |||
527 | |||
528 | |||
529 | if (quit) |
||
530 | { |
||
531 | |||
532 | try |
||
533 | { |
||
534 | RecordStore.deleteRecordStore(RECORD_STORE_NAME); |
||
535 | RecordStore recStore = RecordStore.openRecordStore(RECORD_STORE_NAME, true ); |
||
536 | recStore.addRecord(mk.mk_url.getBytes(), 0, mk.mk_url.getBytes().length); |
||
537 | recStore.addRecord(mk.name.getBytes(), 0, mk.name.getBytes().length); |
||
538 | settings_arr=new byte[10]; |
||
539 | settings_arr[0]=(byte)act_skin; |
||
540 | settings_arr[1]=(byte)(do_sound?1:0); |
||
541 | settings_arr[2]=(byte)(do_vibra?1:0); |
||
149 | ligi | 542 | settings_arr[3]=(byte)(do_scrollbg?1:0); |
81 | ligi | 543 | settings_arr[4]=(byte)(fullscreen?1:0); |
544 | settings_arr[5]=(byte)(keep_lighton?1:0); |
||
545 | |||
546 | recStore.addRecord(settings_arr, 0, settings_arr.length); |
||
547 | |||
548 | |||
549 | |||
550 | recStore.closeRecordStore(); |
||
551 | |||
552 | } |
||
553 | catch (Exception e) |
||
554 | { |
||
555 | err+=e.toString(); |
||
556 | } |
||
557 | |||
558 | root.quit(); |
||
559 | } |
||
560 | if (rescan) |
||
561 | { |
||
562 | |||
563 | rescan=false; |
||
564 | } |
||
565 | |||
566 | try { |
||
567 | //rescan=false; |
||
568 | bg_offset--; |
||
569 | if (bg_offset==-bg_img.getWidth()) |
||
570 | bg_offset=0; |
||
571 | if (keep_lighton) com.nokia.mid.ui.DeviceControl.setLights(0,100); |
||
149 | ligi | 572 | |
81 | ligi | 573 | } |
149 | ligi | 574 | catch (Exception e) { } |
81 | ligi | 575 | |
576 | |||
577 | sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime); |
||
578 | |||
579 | |||
580 | if (sleeptime<0) |
||
581 | sleeptime=100; // everyone has fi sleep |
||
582 | |||
583 | try { Thread.sleep(sleeptime); } |
||
584 | catch (Exception e) |
||
585 | { |
||
586 | err="Problem Sleeping "; |
||
587 | } |
||
588 | |||
589 | } |
||
590 | catch (Exception e) |
||
591 | { |
||
592 | err+=e.toString(); |
||
593 | } |
||
594 | } |
||
595 | } |
||
596 | |||
597 | |||
598 | |||
599 | boolean firstrun=true; |
||
600 | |||
149 | ligi | 601 | public int skin_bg_color() |
602 | { |
||
603 | |||
604 | switch (act_skin) |
||
605 | { |
||
606 | case SKINID_DARK: |
||
607 | return 0x000000; |
||
81 | ligi | 608 | |
149 | ligi | 609 | default: |
610 | case SKINID_LIGHT: |
||
611 | return 0xFFFFFF; |
||
612 | } |
||
613 | } |
||
614 | |||
615 | |||
616 | public int skin_fg_color() |
||
617 | { |
||
618 | |||
619 | switch (act_skin) |
||
620 | { |
||
621 | case SKINID_DARK: |
||
622 | return 0xFFFFFF; |
||
623 | |||
624 | default: |
||
625 | case SKINID_LIGHT: |
||
626 | return 0x000000; |
||
627 | } |
||
628 | } |
||
629 | |||
81 | ligi | 630 | // drawing section |
631 | public void paint(Graphics g) { |
||
149 | ligi | 632 | // |
81 | ligi | 633 | if (debug.showing) |
634 | { |
||
635 | debug.paint(g); |
||
636 | return; |
||
637 | } |
||
638 | |||
149 | ligi | 639 | |
81 | ligi | 640 | if (firstrun) |
641 | { |
||
642 | if (fullscreen) setFullScreenMode(fullscreen); |
||
643 | firstrun=false; |
||
644 | } |
||
645 | y_off=0; |
||
149 | ligi | 646 | |
647 | |||
648 | |||
81 | ligi | 649 | try { |
650 | |||
651 | if (mk!=null) |
||
652 | { |
||
653 | line_middle_y=this.getHeight()/2; |
||
654 | if (local_max<Math.abs(mk.debug_data.nick_int())) |
||
655 | local_max=Math.abs(mk.debug_data.nick_int()); |
||
656 | if (local_max<Math.abs(mk.debug_data.roll_int())) |
||
657 | local_max=Math.abs(mk.debug_data.roll_int()); |
||
658 | if (local_max<Math.abs(mk.debug_data.accnick())) |
||
659 | local_max=Math.abs(mk.debug_data.accnick()); |
||
660 | if (local_max<Math.abs(mk.debug_data.accroll())) |
||
661 | local_max=Math.abs(mk.debug_data.accroll()); |
||
662 | line_scaler= local_max/(this.getHeight()/2)+1; |
||
663 | } |
||
664 | |||
665 | |||
666 | Font f1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM); |
||
667 | Font f2 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); |
||
668 | |||
669 | spacer=(f1.getHeight()); |
||
670 | spacer1=(f2.getHeight()); |
||
671 | |||
672 | //default Font |
||
673 | g.setFont(f1); |
||
674 | |||
149 | ligi | 675 | |
676 | //draw background |
||
677 | if ((!do_scrollbg) || (state==STATEID_EDIT_PARAMS)) |
||
81 | ligi | 678 | { |
149 | ligi | 679 | g.setColor(0xdedfff); |
680 | g.fillRect(0,0,this.getWidth(),symbols_img.getHeight()); |
||
681 | |||
682 | g.setColor(skin_bg_color()); |
||
683 | g.fillRect(0,symbols_img.getHeight(),this.getWidth(),this.getHeight()-symbols_img.getHeight()); |
||
684 | |||
685 | |||
81 | ligi | 686 | } |
149 | ligi | 687 | else |
81 | ligi | 688 | { |
689 | g.setColor(0xFFFFFF); |
||
690 | g.fillRect(0,0,this.getWidth(),this.getHeight()); |
||
691 | g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT); |
||
149 | ligi | 692 | |
81 | ligi | 693 | if (bg_offset+bg_img.getWidth()<this.getWidth()) |
694 | g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT); |
||
695 | } |
||
696 | |||
149 | ligi | 697 | |
698 | //int bar=0; |
||
699 | // for ( int bar=0;bar<3;bar++) |
||
700 | if (do_scrollbg) |
||
701 | for ( int bar=0;bar<this.getWidth()/(symbols_img.getWidth()/10)+1;bar++) |
||
702 | { |
||
703 | g.setClip(bar*(symbols_img.getWidth()/10),0,(symbols_img.getWidth()/10),symbols_img.getHeight());; |
||
704 | g.drawImage(symbols_img,bar*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT); |
||
705 | } |
||
706 | |||
707 | |||
708 | g.setClip(0,0,(symbols_img.getWidth()/10),symbols_img.getHeight());; |
||
709 | if (mk.connected) |
||
81 | ligi | 710 | { |
149 | ligi | 711 | |
712 | if (((mk.bytes_in_count>>3)&1)==1) |
||
713 | g.drawImage(symbols_img,(-2)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT); |
||
714 | else |
||
715 | g.drawImage(symbols_img,(-3)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT); |
||
716 | |||
717 | |||
718 | int symbol_spacer=5; |
||
719 | g.setClip(symbol_spacer+(symbols_img.getWidth()/10),0,(symbols_img.getWidth()/10),symbols_img.getHeight());; |
||
720 | |||
721 | g.drawImage(symbols_img,symbol_spacer+(-3)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT); |
||
722 | g.setClip(0,0,this.getWidth(),this.getHeight()); |
||
723 | g.setColor(0x03035a); |
||
724 | g.drawString("" + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" , symbol_spacer+2+2*(symbols_img.getWidth()/10),y_off,Graphics.TOP | Graphics.LEFT); |
||
725 | // g.drawString("Sender: " + mk.debug_data.SenderOkay(),this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT); |
||
726 | g.setClip(2*symbol_spacer+2*(symbols_img.getWidth()/10) + g.getFont().stringWidth("88,8V"),0,(symbols_img.getWidth()/10),symbols_img.getHeight());; |
||
727 | g.drawImage(symbols_img,2*symbol_spacer+(-4)*(symbols_img.getWidth()/10) + g.getFont().stringWidth("88,8V"),0, g.TOP | g.LEFT); |
||
728 | |||
729 | g.setClip(0,0,this.getWidth(),this.getHeight()); |
||
730 | |||
731 | g.drawString(""+mk.debug_data.SenderOkay() , 2+2*symbol_spacer+3*(symbols_img.getWidth()/10) + g.getFont().stringWidth("88,8V"),y_off,Graphics.TOP | Graphics.LEFT); |
||
81 | ligi | 732 | } |
733 | |||
149 | ligi | 734 | else |
735 | g.drawImage(symbols_img,(-1)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT); |
||
81 | ligi | 736 | |
149 | ligi | 737 | // if (mk.connected) |
738 | |||
739 | |||
740 | // unclip |
||
741 | g.setClip(0,0,this.getWidth(),this.getHeight()); |
||
742 | |||
743 | y_off+=symbols_img.getHeight(); |
||
744 | g.setColor(skin_fg_color()); |
||
81 | ligi | 745 | |
746 | switch(state) |
||
747 | { |
||
748 | |||
135 | ligi | 749 | case STATEID_GPSVIEW: |
149 | ligi | 750 | |
751 | g.setStrokeStyle(Graphics.SOLID); |
||
752 | g.setColor(0x0000ff); |
||
753 | |||
754 | |||
755 | // g.fillArc(0, 0, this.getWidth(), this.getWidth(), 0,45); |
||
756 | |||
757 | int start_angle=(360+mk.gps_position.angle2wp(act_wp) - ((360+mk.debug_data.analog[26]-heading_offset)%360))%360; |
||
758 | // start_angle=0; |
||
759 | start_angle=(360-start_angle +90 -(45/2))%360; |
||
760 | |||
761 | g.fillArc(0, 0, this.getWidth(), this.getWidth(), start_angle,45); |
||
762 | // g.drawArc(1, 1, this.getWidth()-2, this.getWidth()-2, start_angle,45); |
||
763 | // g.drawArc(2, 2, this.getWidth()-4, this.getWidth()-4, start_angle ,45); |
||
764 | |||
765 | |||
766 | g.setColor(skin_fg_color()); |
||
767 | |||
768 | |||
769 | |||
770 | |||
771 | g.drawString("GPS-Packages: " + mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); g.drawString("GPS-Packages: " + mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); g.drawString("GPS-Packages: " + mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
135 | ligi | 772 | y_off+=spacer; |
773 | g.drawString("Used Sats: " + mk.gps_position.Used_Sat ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
774 | y_off+=spacer; |
||
775 | g.drawString("Latitude: " + mk.gps_position.Latitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
776 | y_off+=spacer; |
||
149 | ligi | 777 | |
135 | ligi | 778 | g.drawString("Longitude: " + mk.gps_position.Longitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT); |
779 | y_off+=spacer; |
||
780 | |||
149 | ligi | 781 | |
135 | ligi | 782 | g.drawString("Target-Lat: " + mk.gps_position.TargetLatitude ,0,y_off,Graphics.TOP | Graphics.LEFT); |
783 | y_off+=spacer; |
||
784 | g.drawString("Target-Long: " + mk.gps_position.TargetLongitude ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
785 | y_off+=spacer; |
||
786 | g.drawString("Distance : " + mk.gps_position.Distance2Target ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
787 | y_off+=spacer; |
||
788 | g.drawString("Angle: " + mk.gps_position.Angle2Target ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
789 | y_off+=spacer; |
||
790 | |||
791 | g.drawString("WayPoints: " + act_wp + "/" + mk.gps_position.last_wp ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
792 | y_off+=spacer; |
||
793 | |||
149 | ligi | 794 | g.drawString("" + mk.gps_position.NameWP[act_wp] ,0,y_off,Graphics.TOP | Graphics.LEFT); |
135 | ligi | 795 | y_off+=spacer; |
796 | |||
149 | ligi | 797 | g.drawString("Lat: " + mk.gps_position.WP_Latitude_str(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT); |
135 | ligi | 798 | y_off+=spacer; |
799 | |||
149 | ligi | 800 | g.drawString("Long: " + mk.gps_position.WP_Longitude_str(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT); |
801 | y_off+=spacer; |
||
135 | ligi | 802 | |
149 | ligi | 803 | |
804 | g.drawString("Distance: " + mk.gps_position.distance2wp(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
805 | y_off+=spacer; |
||
806 | |||
807 | g.drawString("Angle: " + mk.gps_position.angle2wp(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
808 | y_off+=spacer; |
||
809 | |||
810 | |||
811 | g.drawString("Compas Heading: " + ((360+mk.debug_data.analog[26]-heading_offset)%360) + "(" +mk.debug_data.analog[26] +")" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
812 | y_off+=spacer; |
||
813 | |||
814 | |||
815 | |||
135 | ligi | 816 | break; |
817 | |||
81 | ligi | 818 | case STATEID_CAMMODE: |
819 | |||
820 | if (cam_img!=null) |
||
821 | g.drawImage(cam_img,0,0,g.TOP | g.LEFT); |
||
822 | g.drawString("condition: " + cam_condition() ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
823 | y_off+=spacer; |
||
824 | g.drawString("width " + cam_img.getWidth(),0,y_off,Graphics.TOP | Graphics.LEFT); |
||
825 | y_off+=spacer; |
||
826 | g.drawString("height " + cam_img.getHeight(),0,y_off,Graphics.TOP | Graphics.LEFT); |
||
827 | y_off+=spacer; |
||
828 | break; |
||
829 | |||
830 | case STATEID_STICKVIEW: |
||
149 | ligi | 831 | |
81 | ligi | 832 | for(int tmp_y=0;tmp_y<10;tmp_y++) |
833 | { |
||
834 | g.drawString(""+tmp_y+"=>"+mk.stick_data.stick[tmp_y],0,y_off,Graphics.TOP | Graphics.LEFT); |
||
835 | y_off+=spacer; |
||
836 | } |
||
837 | break; |
||
838 | |||
839 | case STATEID_KEYCONTROL: |
||
840 | |||
841 | |||
842 | y_off+=spacer; |
||
843 | g.drawString("UP&DOWN => nick",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
844 | y_off+=spacer; |
||
845 | g.drawString("LEFT&RIGHT => roll",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
846 | y_off+=spacer; |
||
847 | g.drawString("1&4 => altitude",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
848 | |||
849 | y_off+=spacer; |
||
850 | g.drawString("2&3 => gier",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
851 | |||
852 | y_off+=spacer; |
||
853 | g.drawString("Press # and * at once",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
854 | y_off+=spacer; |
||
855 | g.drawString("to quit KeyControl",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
856 | y_off+=spacer; |
||
857 | g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
858 | g.drawString("bf2:"+ keycontrol_bitfield[1] ,this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT); |
||
859 | |||
860 | break; |
||
861 | |||
862 | case STATEID_MOTORTEST: |
||
863 | for (int bar=0;bar<4;bar++) |
||
864 | |||
865 | { |
||
866 | g.setColor(((bar==act_motor)|motor_test_sel_all)?0x44CC44:0x4444DD); |
||
149 | ligi | 867 | g.fillRect(this.getWidth()/(8*2)+bar*2*this.getWidth()/8,y_off+10,this.getWidth()/8,y_off+20+motor_test[bar]); |
81 | ligi | 868 | g.setColor(0x000000); |
149 | ligi | 869 | g.drawString(""+motor_test[bar] ,this.getWidth()/8+bar*2*this.getWidth()/8,y_off+10,Graphics.TOP | Graphics.HCENTER); |
870 | g.drawString(""+mk.debug_data.motor_val(bar) ,this.getWidth()/8+bar*2*this.getWidth()/8,y_off+25,Graphics.TOP | Graphics.HCENTER); |
||
81 | ligi | 871 | } |
872 | break; |
||
873 | |||
874 | case STATEID_EDIT_PARAMS: |
||
875 | params_editor.paint(g); |
||
876 | break; |
||
877 | |||
149 | ligi | 878 | case STATEID_FILEOPEN: |
879 | y_off+=spacer; |
||
880 | g.drawString("act_path" + act_path() ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
881 | paint_menu(g); |
||
882 | break; |
||
135 | ligi | 883 | |
149 | ligi | 884 | |
885 | case STATEID_IPINPUT: |
||
886 | paint_lcd(g,true); |
||
887 | break; |
||
888 | |||
135 | ligi | 889 | case STATEID_READ_PARAMS: |
890 | paint_lcd(g,true); |
||
891 | |||
892 | g.setClip(this.getWidth()/2-load_img.getWidth()/6+1,this.getHeight()/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);; |
||
893 | g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT); |
||
149 | ligi | 894 | // g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER); |
135 | ligi | 895 | break; |
896 | |||
897 | |||
81 | ligi | 898 | case STATEID_SCANNING: |
899 | paint_lcd(g,true); |
||
900 | |||
901 | g.setClip(this.getWidth()/2-load_img.getWidth()/6+1,this.getHeight()/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);; |
||
902 | g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT); |
||
903 | g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER); |
||
904 | break; |
||
905 | |||
906 | case STATEID_RAWDEBUG: |
||
907 | g.setFont(f2); |
||
908 | rawdebug_off_y=0; |
||
909 | if ((rawdebug_cursor_y+2)*spacer1>this.getHeight()) |
||
910 | rawdebug_off_y=((rawdebug_cursor_y+2)*spacer1-this.getHeight())/spacer1; |
||
911 | for (int i=0;i<(this.getHeight()/spacer1);i++) |
||
912 | { |
||
913 | if (i+rawdebug_off_y==rawdebug_cursor_y) |
||
914 | { |
||
915 | g.setColor(0x0000CC); |
||
916 | g.fillRect(0,y_off,this.getWidth(),spacer1); |
||
917 | |||
149 | ligi | 918 | g.setColor(skin_fg_color()); |
919 | |||
920 | |||
81 | ligi | 921 | } |
922 | if (i+rawdebug_off_y<32) //todo better style |
||
923 | g.drawString(mk.debug_data.names[i+rawdebug_off_y] + mk.debug_data.analog[i+rawdebug_off_y] ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
924 | |||
925 | y_off+=spacer1; |
||
926 | |||
927 | } |
||
928 | |||
929 | |||
930 | |||
931 | break; |
||
932 | |||
933 | |||
149 | ligi | 934 | case STATEID_CONN_DETAILS: |
935 | g.setFont(f1); |
||
936 | g.drawString("Connection::",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
937 | y_off+=spacer; |
||
81 | ligi | 938 | g.setFont(f2); |
135 | ligi | 939 | g.drawString(ufo_prober.extended_name()+ " (" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"closed")+"):",0,y_off,Graphics.TOP | Graphics.LEFT); |
940 | y_off+=spacer1; |
||
941 | g.drawString(" Version:" + mk.version.str ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
942 | y_off+=spacer1; |
||
81 | ligi | 943 | g.drawString(" Name:" + mk.name,0,y_off,Graphics.TOP | Graphics.LEFT); |
944 | y_off+=spacer1; |
||
945 | g.drawString(" URL:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
946 | y_off+=spacer1; |
||
135 | ligi | 947 | |
81 | ligi | 948 | g.setFont(f1); |
949 | g.drawString("Packet Traffic:",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
950 | y_off+=spacer; |
||
149 | ligi | 951 | g.setFont(f2); |
952 | g.drawString( " in:"+mk.bytes_in_count + " bytes => " + mk.bytes_in_count/((System.currentTimeMillis()- mk.connection_start_time)/1000) + " bytes/s",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
953 | y_off+=spacer1; |
||
954 | |||
955 | g.drawString( " out:"+mk.bytes_out_count + " bytes =>" + mk.bytes_out_count/((System.currentTimeMillis()- mk.connection_start_time)/1000) + "bytes/s", 0,y_off,Graphics.TOP | Graphics.LEFT); |
||
956 | y_off+=spacer1; |
||
957 | |||
958 | |||
81 | ligi | 959 | g.drawString( " debug:"+mk.debug_data_count+ " LCD:" + mk.lcd_data_count + " vers:" + mk.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT); |
960 | y_off+=spacer1; |
||
135 | ligi | 961 | g.drawString( " other:"+mk.other_data_count+" params:"+mk.params_data_count + " GPS:"+mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); |
962 | y_off+=spacer1; |
||
963 | g.drawString( " debug_names:" + mk.debug_names_count + " angles:" + mk.angle_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
81 | ligi | 964 | |
149 | ligi | 965 | break; |
81 | ligi | 966 | |
967 | |||
149 | ligi | 968 | case STATEID_PROXY: |
969 | g.setFont(f1); |
||
970 | g.drawString("Host:",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
971 | y_off+=spacer; |
||
972 | g.setFont(f2); |
||
973 | g.drawString(" " + mk.proxy.url + "("+((mk.proxy.connected)?"open":"closed") +")",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
974 | y_off+=spacer1; |
||
135 | ligi | 975 | |
149 | ligi | 976 | |
977 | g.setFont(f1); |
||
978 | g.drawString("Packet Traffic:",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
979 | y_off+=spacer; |
||
980 | g.setFont(f2); |
||
981 | g.drawString( " in:"+mk.bytes_in_count + " bytes => " + mk.bytes_in_count/((System.currentTimeMillis()- mk.connection_start_time)/1000) + " bytes/s",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
982 | y_off+=spacer1; |
||
983 | |||
984 | g.drawString( " out:"+mk.bytes_out_count + " bytes =>" + mk.bytes_out_count/((System.currentTimeMillis()- mk.connection_start_time)/1000) + "bytes/s", 0,y_off,Graphics.TOP | Graphics.LEFT); |
||
985 | y_off+=spacer1; |
||
986 | |||
987 | |||
988 | g.drawString( " debug:"+mk.debug_data_count+ " LCD:" + mk.lcd_data_count + " vers:" + mk.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
989 | y_off+=spacer1; |
||
990 | g.drawString( " other:"+mk.other_data_count+" params:"+mk.params_data_count + " GPS:"+mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
991 | y_off+=spacer1; |
||
992 | g.drawString( " debug_names:" + mk.debug_names_count + " angles:" + mk.angle_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
993 | |||
994 | break; |
||
995 | |||
996 | |||
997 | case STATEID_MAINMENU: |
||
81 | ligi | 998 | case STATEID_SETTINGSMENU: |
999 | // falltru wanted |
||
1000 | case STATEID_SELECT_PARAMSET: |
||
1001 | case STATEID_HANDLE_PARAMS: |
||
1002 | |||
1003 | case STATEID_DEVICESELECT: |
||
149 | ligi | 1004 | |
81 | ligi | 1005 | paint_menu(g); |
1006 | break; |
||
1007 | |||
149 | ligi | 1008 | |
1009 | case STATEID_GRAPH: |
||
1010 | |||
1011 | |||
1012 | g.setStrokeStyle(Graphics.DOTTED); |
||
1013 | g.setColor(0xe1dddd); |
||
1014 | |||
81 | ligi | 1015 | |
149 | ligi | 1016 | int scale=0; |
1017 | if (1/line_scaler< this.getHeight()/10) scale=1; |
||
1018 | if (10/line_scaler< this.getHeight()/10) scale=10; |
||
1019 | if (100/line_scaler< this.getHeight()/10) scale=100; |
||
1020 | if (1000/line_scaler< this.getHeight()/10) scale=1000; |
||
1021 | if (10000/line_scaler< this.getHeight()/10) scale=10000; |
||
81 | ligi | 1022 | |
149 | ligi | 1023 | |
1024 | /* |
||
1025 | g.drawString("scale:"+scale + "line scaler" + line_scaler,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1026 | |||
1027 | |||
1028 | int jump=0; |
||
1029 | g.drawLine(0,line_middle_y,this.getWidth(),line_middle_y); |
||
1030 | |||
1031 | while (jump<this.getHeight()/2) |
||
1032 | { |
||
1033 | g.drawLine(0,line_middle_y - jump/line_scaler,this.getWidth(),line_middle_y - jump/line_scaler); |
||
1034 | g.drawLine(0,line_middle_y + jump/line_scaler,this.getWidth(),line_middle_y + jump/line_scaler); |
||
1035 | jump+=scale; |
||
1036 | } |
||
1037 | */ |
||
1038 | |||
1039 | |||
1040 | |||
1041 | |||
1042 | for ( int x=0;x<this.getWidth();x++) |
||
1043 | { |
||
1044 | int p= (((-bg_offset+x-this.getWidth()-5))); |
||
1045 | if (p<1) |
||
1046 | p+=bg_img.getWidth(); |
||
1047 | p%=(bg_img.getWidth()-1); |
||
1048 | |||
1049 | |||
1050 | |||
1051 | try { |
||
1052 | |||
1053 | nick_line_pos_data[-bg_offset] = mk.debug_data.nick_int(); |
||
1054 | roll_line_pos_data[-bg_offset] = mk.debug_data.roll_int(); |
||
1055 | accnick_line_pos_data[-bg_offset] = mk.debug_data.accnick(); |
||
1056 | accroll_line_pos_data[-bg_offset] = mk.debug_data.accroll(); |
||
1057 | } |
||
1058 | catch (Exception e) |
||
1059 | { |
||
1060 | err+=e.toString(); |
||
1061 | } |
||
1062 | |||
1063 | g.setColor(0x156315); |
||
1064 | draw_graph_part(g,x,nick_line_pos_data[p]/line_scaler,nick_line_pos_data[p+1]/line_scaler); |
||
1065 | g.setColor(0xCC1315); |
||
1066 | draw_graph_part(g,x,roll_line_pos_data[p]/line_scaler,roll_line_pos_data[p+1]/line_scaler); |
||
1067 | g.setColor(0xf8ef02); |
||
1068 | draw_graph_part(g,x,accnick_line_pos_data[p]/line_scaler,accnick_line_pos_data[p+1]/line_scaler); |
||
1069 | g.setColor(0x19194d); |
||
1070 | draw_graph_part(g,x,accroll_line_pos_data[p]/line_scaler,accroll_line_pos_data[p+1]/line_scaler); |
||
1071 | |||
1072 | } |
||
1073 | |||
1074 | |||
1075 | |||
1076 | |||
1077 | for (int d=0;d<MAX_GRAPHS;d++) |
||
1078 | { |
||
1079 | g.setColor(graph_colors[d]); |
||
1080 | g.fillRect(0,y_off +spacer1/2-2 ,20,4); |
||
1081 | g.setColor(skin_fg_color()); |
||
1082 | g.drawString(graph_names[d],23,y_off,Graphics.TOP | Graphics.LEFT); |
||
1083 | y_off+=spacer1; |
||
1084 | |||
1085 | } |
||
1086 | |||
1087 | |||
1088 | |||
1089 | break; |
||
1090 | |||
1091 | case STATEID_FLIGHTVIEW: |
||
1092 | |||
1093 | g.setClip(this.getWidth()/2-load_img.getWidth()/6+1,this.getHeight()/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);; |
||
1094 | if (( mk.LCD.init_state!=-1)||(mk.LCD.act_mk_page!=mk.LCD.act_user_page)) g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT); |
||
1095 | |||
1096 | /* |
||
81 | ligi | 1097 | // !!TODO!! check exactly which version those Datas where introduced |
1098 | if (mk.version.compare(0,60)==mk.version.VERSION_PREVIOUS) |
||
1099 | { |
||
1100 | g.drawString("Voltage: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1101 | g.drawString("Sender: " + mk.debug_data.SenderOkay(),this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT); |
||
1102 | y_off+=spacer; |
||
1103 | } |
||
1104 | |||
1105 | g.drawString(mk.version.str+"(d"+mk.debug_data_count+ "l" + mk.lcd_data_count+ "v" + mk.version_data_count+"o"+mk.other_data_count+"p"+mk.params_data_count+")",0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1106 | |||
1107 | y_off+=spacer; |
||
1108 | |||
1109 | g.drawString("n:"+mk.debug_data.nick_int() + " r:"+mk.debug_data.roll_int() + " an:"+mk.debug_data.accnick() + " ar:"+mk.debug_data.accroll() ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1110 | y_off+=spacer; |
||
1111 | |||
1112 | |||
1113 | g.drawString("m1:"+mk.debug_data.motor_val(0) + " m2:"+mk.debug_data.motor_val(1)+" m3:"+mk.debug_data.motor_val(2) + " m4:"+mk.debug_data.motor_val(3) ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1114 | y_off+=spacer; |
||
1115 | |||
1116 | if (mk.connected) |
||
1117 | { |
||
1118 | g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1119 | y_off+=spacer; |
||
1120 | g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1121 | y_off+=spacer; |
||
1122 | g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
135 | ligi | 1123 | y_off+=spacer; |
149 | ligi | 1124 | g.drawString("lcd:" + mk.LCD.act_mk_page + "/" + mk.LCD.pages + " ( wanted: " + mk.LCD.act_user_page + "state:" + mk.LCD.init_state +")" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
135 | ligi | 1125 | |
149 | ligi | 1126 | y_off+=spacer; |
1127 | g.drawString("lcd-key:" + mk.LCD.act_key ,0,y_off,Graphics.TOP | Graphics.LEFT); |
||
1128 | |||
81 | ligi | 1129 | } |
149 | ligi | 1130 | */ |
135 | ligi | 1131 | |
149 | ligi | 1132 | int spacer_left_right=(this.getWidth()-(20*(lcd_img.getWidth()/222)))/2; |
81 | ligi | 1133 | |
1134 | y_off=this.getHeight()-4*lcd_img.getHeight(); |
||
1135 | |||
1136 | for ( int foo=0;foo<4;foo++) |
||
1137 | { |
||
1138 | for (int x=0;x<20;x++) |
||
1139 | { |
||
149 | ligi | 1140 | g.setClip(spacer_left_right+(lcd_img.getWidth()/222)*x,y_off,(lcd_img.getWidth()/222),lcd_img.getHeight()); |
1141 | g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*x-(mk.LCD.get_act_page()[foo].charAt(x)-' ')*(lcd_img.getWidth()/222),y_off, g.TOP | g.LEFT); |
||
81 | ligi | 1142 | |
1143 | } |
||
1144 | y_off+=lcd_img.getHeight(); |
||
1145 | } |
||
1146 | |||
149 | ligi | 1147 | g.setClip(0,0,this.getWidth(),this.getHeight()); |
81 | ligi | 1148 | |
1149 | |||
1150 | |||
1151 | |||
1152 | |||
1153 | |||
1154 | |||
1155 | |||
1156 | } |
||
1157 | |||
1158 | |||
1159 | |||
1160 | } catch (Exception e) {} |
||
1161 | |||
1162 | } |
||
1163 | Player mPlayer; |
||
1164 | VideoControl mVideoControl; |
||
1165 | Image cam_img; |
||
1166 | int cam_img_seq=0; |
||
1167 | byte[] cam_raw; |
||
1168 | |||
1169 | private void connect_mk(String url,String name) |
||
1170 | { |
||
1171 | // ufo_prober.bluetooth_probe(url); |
||
1172 | mk.connect_to(url,name); |
||
1173 | |||
1174 | |||
1175 | } |
||
1176 | |||
1177 | public void draw_graph_part(Graphics g,int x,int y1,int y2) |
||
1178 | { |
||
1179 | if ( this.getWidth()>200) |
||
1180 | { |
||
1181 | g.fillRect(x,line_middle_y-y1,1,1 ); |
||
1182 | if (y1>y2) |
||
1183 | g.fillRect(x,line_middle_y-y1,1,y1-y2); |
||
1184 | else |
||
1185 | g.fillRect(x,line_middle_y-y2,1,y2-y1); |
||
1186 | |||
1187 | } |
||
1188 | else |
||
1189 | { |
||
1190 | g.fillRect(x,line_middle_y-y1,1,1 ); |
||
1191 | if (y1>y2) |
||
1192 | g.fillRect(x,line_middle_y-y1,1,y1-y2); |
||
1193 | else |
||
1194 | g.fillRect(x,line_middle_y-y2,1,y2-y1); |
||
1195 | } |
||
1196 | |||
1197 | |||
1198 | |||
1199 | |||
1200 | } |
||
1201 | |||
1202 | |||
149 | ligi | 1203 | public int pow(int val,int pow) |
1204 | { |
||
1205 | int res=1; |
||
1206 | |||
1207 | for (int p=0;p<pow;p++) |
||
1208 | res*=val; |
||
1209 | |||
1210 | return res; |
||
1211 | } |
||
1212 | public int mod_decimal(int val,int mod_power,int modder,int setter,int clipper) |
||
1213 | { |
||
1214 | |||
1215 | int res=0; |
||
1216 | |||
1217 | for (int power=0;power<4;power++) |
||
1218 | { |
||
1219 | |||
1220 | int act_digit=(val/pow(10,power))%10; |
||
1221 | |||
1222 | int new_digit=act_digit; |
||
1223 | if (power==mod_power) |
||
1224 | { |
||
1225 | if (setter!=-1) |
||
1226 | new_digit=setter; |
||
1227 | |||
1228 | new_digit+=modder; |
||
1229 | |||
1230 | |||
1231 | if(new_digit<0) |
||
1232 | new_digit=0; |
||
1233 | |||
1234 | if(new_digit>clipper) |
||
1235 | new_digit=clipper; |
||
1236 | |||
1237 | } |
||
1238 | |||
1239 | // new_digit=1; |
||
1240 | res+=new_digit*pow(10,power); |
||
1241 | } |
||
1242 | |||
1243 | |||
1244 | return res; |
||
1245 | |||
1246 | |||
1247 | } |
||
1248 | |||
81 | ligi | 1249 | /*********************************************** input Section **********************************************/ |
1250 | |||
1251 | |||
1252 | public final String intro_str=" Digital Ufo Broadcasting with intelligent service equipment by Marcus -LiGi- Bueschleb ; Big Up Holger&Ingo for the MikroKopter Project (http://www.mikrokopter.de) "; |
||
1253 | |||
1254 | int intro_str_pos=0; |
||
1255 | int intro_str_delay=3; |
||
1256 | |||
149 | ligi | 1257 | |
1258 | |||
1259 | |||
81 | ligi | 1260 | public void chg_state(int next_state) |
1261 | { |
||
1262 | if (next_state!=state)act_menu_select=0; |
||
1263 | // prepare next state |
||
1264 | switch(next_state) |
||
1265 | { |
||
149 | ligi | 1266 | |
1267 | case STATEID_FILEOPEN: |
||
1268 | if (act_path_depth==0) |
||
1269 | { |
||
1270 | Enumeration drives = FileSystemRegistry.listRoots(); |
||
1271 | int tmp_i=0; |
||
1272 | while(drives.hasMoreElements()) |
||
1273 | { |
||
1274 | file_list[tmp_i]= (String) drives.nextElement(); |
||
1275 | tmp_i++; |
||
1276 | |||
1277 | if (MAX_FILELIST_LENGTH<tmp_i) |
||
1278 | break; |
||
1279 | } |
||
1280 | menu_items=new String[tmp_i]; |
||
1281 | lcd_lines=new String[tmp_i]; |
||
1282 | file_list_length=tmp_i; |
||
1283 | |||
1284 | for(tmp_i=0;tmp_i<file_list_length;tmp_i++) |
||
1285 | menu_items[tmp_i]=file_list[tmp_i]; |
||
1286 | |||
1287 | } |
||
1288 | else |
||
1289 | { |
||
1290 | |||
1291 | try { |
||
1292 | FileConnection fc = (FileConnection) Connector.open("file:///"+act_path()); |
||
1293 | Enumeration filelist = fc.list("*", true); |
||
1294 | int tmp_i=0; |
||
1295 | while(filelist.hasMoreElements()) { |
||
1296 | file_list[tmp_i] = (String) filelist.nextElement(); |
||
1297 | tmp_i++; |
||
1298 | /* fc = (FileConnection) |
||
1299 | Connector.open("file:///CFCard/" + fileName); |
||
1300 | if(fc.isDirectory()) { |
||
1301 | System.out.println("\tDirectory Name: " + fileName); |
||
1302 | } else { |
||
1303 | System.out.println |
||
1304 | ("\tFile Name: " + fileName + |
||
1305 | "\tSize: "+fc.fileSize()); |
||
1306 | }*/ |
||
1307 | |||
1308 | } |
||
1309 | |||
1310 | menu_items=new String[tmp_i+1]; |
||
1311 | lcd_lines=new String[tmp_i+1]; |
||
1312 | file_list_length=tmp_i+1; |
||
1313 | |||
1314 | menu_items[0]=".."; |
||
1315 | for(tmp_i=1;tmp_i<file_list_length;tmp_i++) |
||
1316 | menu_items[tmp_i]=file_list[tmp_i-1]; |
||
1317 | |||
1318 | |||
1319 | fc.close(); |
||
1320 | } catch (IOException ioe) { |
||
1321 | System.out.println(ioe.getMessage()); |
||
1322 | } |
||
1323 | } |
||
1324 | |||
1325 | |||
1326 | break; |
||
1327 | |||
81 | ligi | 1328 | case STATEID_CAMMODE: |
1329 | |||
1330 | if (mVideoControl==null) |
||
1331 | try |
||
1332 | { |
||
1333 | debug.log("creating player\n"); |
||
1334 | mPlayer = Manager.createPlayer("capture://video?encoding=png&width=2048&height=1536"); |
||
1335 | |||
1336 | debug.log("realizing player\n"); |
||
1337 | mPlayer.realize(); |
||
1338 | |||
1339 | debug.log("get_videocontrol\n"); |
||
1340 | |||
1341 | mVideoControl = (VideoControl)mPlayer.getControl("VideoControl"); |
||
1342 | |||
1343 | debug.log("switching Canvas\n"); |
||
1344 | mVideoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this); |
||
1345 | |||
1346 | debug.log("get snap\n"); |
||
1347 | byte[] raw = mVideoControl.getSnapshot(null); |
||
1348 | |||
1349 | } |
||
1350 | catch ( Exception e) |
||
1351 | { |
||
1352 | debug.log(e.toString()); |
||
1353 | } |
||
1354 | |||
1355 | |||
1356 | break; |
||
1357 | case STATEID_KEYCONTROL: |
||
1358 | keycontrol_exit=0; |
||
1359 | break; |
||
1360 | |||
135 | ligi | 1361 | case STATEID_READ_PARAMS: |
1362 | user_intent=USER_INTENT_PARAMS; |
||
1363 | lcd_lines=new String[2]; |
||
1364 | lcd_lines[0]="Reading Settings "; |
||
1365 | lcd_lines[1]=mk.watchdog.act_paramset+"/5 |"+ (mk.watchdog.act_paramset>0?"#":"_") + (mk.watchdog.act_paramset>1?"#":"_") + (mk.watchdog.act_paramset>2?"#":"_")+ (mk.watchdog.act_paramset>3?"#":"_")+ (mk.watchdog.act_paramset>4?"#":"_") + "| "; |
||
1366 | |||
1367 | break; |
||
1368 | |||
149 | ligi | 1369 | case STATEID_IPINPUT: |
1370 | |||
1371 | lcd_lines=new String[3]; |
||
1372 | lcd_lines[0]="Address (IP:Port): "; |
||
1373 | break; |
||
135 | ligi | 1374 | |
81 | ligi | 1375 | case STATEID_SCANNING: |
1376 | lcd_lines=new String[4]; |
||
1377 | lcd_lines[0]="Scanning for Devices"; |
||
1378 | lcd_lines[1]=" "; |
||
1379 | |||
1380 | //#expand lcd_lines[2]="DUBwise v%VERSION% "; |
||
1381 | lcd_lines[3]=intro_str.substring(0,20); |
||
1382 | mk.close_connections(true); |
||
1383 | |||
1384 | bt_scanner.search(); |
||
1385 | break; |
||
1386 | |||
1387 | case STATEID_HANDLE_PARAMS: |
||
149 | ligi | 1388 | menu_items=new String[3]; |
81 | ligi | 1389 | menu_items[0]="write to MK"; |
149 | ligi | 1390 | menu_items[1]="don't write to MK"; |
1391 | menu_items[2]="discard/read again"; |
||
1392 | lcd_lines=new String[3]; |
||
81 | ligi | 1393 | |
1394 | break; |
||
1395 | |||
1396 | case STATEID_SELECT_PARAMSET: |
||
1397 | menu_items=new String[5]; |
||
1398 | for (int i=0;i<5;i++) |
||
1399 | menu_items[i]=mk.params.names[i]; |
||
1400 | |||
1401 | lcd_lines=new String[5]; |
||
1402 | break; |
||
1403 | |||
1404 | case STATEID_DEVICESELECT: |
||
149 | ligi | 1405 | |
81 | ligi | 1406 | menu_items=new String[bt_scanner.remote_device_count+1]; |
1407 | for (int i=0;i<bt_scanner.remote_device_count;i++) |
||
1408 | menu_items[i]=bt_scanner.remote_device_name[i]; |
||
1409 | menu_items[bt_scanner.remote_device_count]="scan again"; |
||
1410 | lcd_lines=new String[bt_scanner.remote_device_count+1]; |
||
1411 | break; |
||
1412 | |||
1413 | |||
1414 | case STATEID_MAINMENU: |
||
135 | ligi | 1415 | if (ufo_prober.is_navi()) |
149 | ligi | 1416 | { |
1417 | menu_items=main_menu_items_navi; |
||
1418 | menu_actions=main_menu_actions_navi; |
||
1419 | } |
||
135 | ligi | 1420 | else if (ufo_prober.is_mk()) |
149 | ligi | 1421 | { |
1422 | menu_items=main_menu_items_mk; |
||
1423 | menu_actions=main_menu_actions_mk; |
||
1424 | } |
||
1425 | else // no connection |
||
1426 | { |
||
1427 | menu_items=main_menu_items_no_connection; |
||
1428 | menu_actions=main_menu_actions_no_connection; |
||
1429 | } |
||
135 | ligi | 1430 | |
81 | ligi | 1431 | lcd_lines=new String[menu_items.length]; |
1432 | break; |
||
1433 | |||
1434 | case STATEID_SETTINGSMENU: |
||
1435 | |||
1436 | menu_items=new String[settings_menu_items.length]; |
||
1437 | for(int cnt=0;cnt<settings_menu_items.length;cnt++) |
||
1438 | menu_items[cnt]=settings_menu_items[cnt]; |
||
1439 | |||
1440 | menu_items[0]+=(act_skin==SKINID_DARK)?"Dark":"Light"; |
||
1441 | menu_items[1]+=(!do_sound)?"Off":"On"; |
||
1442 | menu_items[2]+=(!do_vibra)?"Off":"On"; |
||
149 | ligi | 1443 | menu_items[3]+=(!do_scrollbg)?"Off":"On"; |
81 | ligi | 1444 | menu_items[4]+=(!fullscreen)?"Off":"On"; |
1445 | menu_items[5]+=(!keep_lighton)?"Off":"On"; |
||
1446 | |||
1447 | lcd_lines=new String[menu_items.length]; |
||
1448 | break; |
||
1449 | |||
135 | ligi | 1450 | case STATEID_RAWDEBUG: |
1451 | user_intent=USER_INTENT_RAWDEBUG; |
||
1452 | break; |
||
1453 | |||
149 | ligi | 1454 | |
1455 | case STATEID_GRAPH: |
||
1456 | user_intent=USER_INTENT_GRAPH; |
||
1457 | break; |
||
1458 | |||
81 | ligi | 1459 | } |
135 | ligi | 1460 | |
1461 | |||
1462 | |||
81 | ligi | 1463 | |
1464 | // switch state |
||
1465 | state=next_state; |
||
1466 | } |
||
1467 | |||
1468 | |||
1469 | public void keyReleased(int keyCode) |
||
1470 | { |
||
1471 | |||
1472 | switch(state) |
||
1473 | { |
||
1474 | case STATEID_MOTORTEST: |
||
1475 | act_motor_increase=0; |
||
1476 | break; |
||
1477 | |||
1478 | case STATEID_KEYCONTROL: |
||
1479 | if (keyCode==KEY_POUND) |
||
1480 | keycontrol_exit &= 255^1; |
||
1481 | else |
||
1482 | if (keyCode==KEY_STAR) |
||
1483 | keycontrol_exit &= 255^2; |
||
1484 | else |
||
1485 | if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8)) |
||
1486 | keycontrol_bitfield[0]&=255^( 1<<(keyCode-this.KEY_NUM0)); |
||
1487 | else |
||
1488 | if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9)) |
||
1489 | keycontrol_bitfield[1]&=255^( 1<<(keyCode-this.KEY_NUM8)); |
||
1490 | else |
||
1491 | switch (getGameAction (keyCode)) |
||
1492 | { |
||
1493 | case UP: |
||
1494 | keycontrol_bitfield[1]&=255^4; |
||
1495 | break; |
||
1496 | |||
1497 | case DOWN: |
||
1498 | keycontrol_bitfield[1]&=255^8; |
||
1499 | break; |
||
1500 | |||
1501 | |||
1502 | case LEFT: |
||
1503 | keycontrol_bitfield[1]&=255^16; |
||
1504 | break; |
||
1505 | |||
1506 | case RIGHT: |
||
1507 | keycontrol_bitfield[1]&=255^32; |
||
1508 | break; |
||
1509 | |||
1510 | case FIRE: |
||
1511 | keycontrol_bitfield[1]&=255^64; |
||
1512 | break; |
||
1513 | |||
1514 | |||
1515 | } |
||
1516 | mk.send_keys(keycontrol_bitfield); |
||
1517 | break; |
||
1518 | } |
||
1519 | |||
1520 | } |
||
1521 | |||
1522 | |||
1523 | byte keycontrol_exit=0; |
||
1524 | |||
1525 | public final static int[] keycontrol_bitfield={0,0}; |
||
1526 | |||
1527 | |||
1528 | public void pointerPressed (int pointer_x, int pointer_y) |
||
1529 | { |
||
1530 | if (pointer_x<this.getWidth()/2) |
||
1531 | { |
||
1532 | if (state==STATEID_EDIT_PARAMS) |
||
1533 | { |
||
1534 | chg_state(STATEID_HANDLE_PARAMS); |
||
1535 | return; |
||
1536 | } |
||
1537 | |||
1538 | else |
||
1539 | if (state!=STATEID_KEYCONTROL) |
||
1540 | { |
||
1541 | chg_state(STATEID_MAINMENU); |
||
1542 | return; |
||
1543 | } |
||
1544 | } |
||
1545 | else |
||
1546 | { |
||
1547 | fullscreen=!fullscreen; |
||
1548 | setFullScreenMode(fullscreen); |
||
1549 | } |
||
1550 | |||
1551 | } |
||
1552 | |||
1553 | public void keyPressed(int keyCode) |
||
1554 | { |
||
1555 | debug.process_key(keyCode); |
||
1556 | |||
1557 | |||
149 | ligi | 1558 | if ((keyCode==KEY_STAR) || (keyCode==113)) |
81 | ligi | 1559 | { |
1560 | if (state==STATEID_EDIT_PARAMS) |
||
1561 | { |
||
1562 | chg_state(STATEID_HANDLE_PARAMS); |
||
1563 | return; |
||
1564 | } |
||
1565 | else |
||
1566 | if (state!=STATEID_KEYCONTROL) |
||
1567 | { |
||
1568 | chg_state(STATEID_MAINMENU); |
||
1569 | return; |
||
1570 | } |
||
1571 | |||
1572 | } |
||
1573 | if ((keyCode==KEY_POUND)&&(state!=STATEID_KEYCONTROL)) |
||
1574 | { |
||
1575 | fullscreen=!fullscreen; |
||
1576 | setFullScreenMode(fullscreen); |
||
1577 | return; |
||
1578 | } |
||
1579 | switch(state) |
||
1580 | { |
||
149 | ligi | 1581 | case STATEID_IPINPUT: |
1582 | |||
1583 | |||
1584 | if ((keyCode>=KEY_NUM0)&&(keyCode<=KEY_NUM9)) |
||
1585 | { |
||
1586 | act_proxy_ip[ipinput_pos/4]=mod_decimal(act_proxy_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),0,(keyCode-KEY_NUM0),9); |
||
1587 | |||
1588 | if(ipinput_pos<19) ipinput_pos++; |
||
1589 | if ((ipinput_pos<18)&&(((ipinput_pos+1)%4)==0))ipinput_pos++; |
||
1590 | } |
||
1591 | else |
||
1592 | switch (getGameAction (keyCode)) |
||
1593 | { |
||
1594 | case LEFT: |
||
1595 | if(ipinput_pos>0) ipinput_pos--; |
||
1596 | if (((ipinput_pos+1)%4)==0)ipinput_pos--; |
||
1597 | break; |
||
1598 | |||
1599 | case RIGHT: |
||
1600 | if(ipinput_pos<19) ipinput_pos++; |
||
1601 | if(ipinput_pos<18)if (((ipinput_pos+1)%4)==0)ipinput_pos++; |
||
1602 | break; |
||
1603 | |||
1604 | case UP: |
||
1605 | act_proxy_ip[ipinput_pos/4]=mod_decimal(act_proxy_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),1,-1,9); |
||
1606 | |||
1607 | break; |
||
1608 | |||
1609 | case DOWN: |
||
1610 | act_proxy_ip[ipinput_pos/4]=mod_decimal(act_proxy_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),-1,-1,9); |
||
1611 | |||
1612 | |||
1613 | case FIRE: |
||
1614 | mk.do_proxy("socket://"+ip_str(act_proxy_ip,false)); |
||
1615 | chg_state(STATEID_PROXY); |
||
1616 | |||
1617 | break; |
||
1618 | |||
1619 | } |
||
1620 | break; |
||
1621 | |||
135 | ligi | 1622 | case STATEID_GPSVIEW: |
1623 | if (keyCode == this.KEY_NUM0) |
||
1624 | mk.set_gps_target(mk.gps_position.Latitude,mk.gps_position.Longitude); |
||
1625 | |||
149 | ligi | 1626 | |
1627 | |||
135 | ligi | 1628 | if (keyCode == this.KEY_NUM1) |
1629 | mk.gps_position.push_wp(); |
||
149 | ligi | 1630 | if (keyCode == this.KEY_NUM2) |
1631 | chg_state(STATEID_FILEOPEN); |
||
1632 | if (keyCode == this.KEY_NUM3) |
||
1633 | mk.set_gps_target(mk.gps_position.LatWP[act_wp],mk.gps_position.LongWP[act_wp]); |
||
135 | ligi | 1634 | |
149 | ligi | 1635 | if (keyCode == this.KEY_NUM4) |
1636 | mk.gps_position.next_gps_format(); |
||
135 | ligi | 1637 | |
149 | ligi | 1638 | if (keyCode == this.KEY_NUM5) |
1639 | heading_offset= mk.debug_data.analog[26]; |
||
1640 | |||
135 | ligi | 1641 | switch (getGameAction (keyCode)) |
1642 | { |
||
1643 | case UP: |
||
1644 | if (act_wp!=0) act_wp--; |
||
1645 | break; |
||
1646 | |||
1647 | case DOWN: |
||
1648 | if (act_wp<mk.gps_position.last_wp) act_wp++; |
||
1649 | |||
1650 | break; |
||
1651 | |||
1652 | |||
1653 | } |
||
1654 | |||
1655 | |||
1656 | break; |
||
1657 | |||
81 | ligi | 1658 | case STATEID_RAWDEBUG: |
1659 | |||
1660 | switch (getGameAction (keyCode)) |
||
1661 | { |
||
1662 | case UP: |
||
1663 | if (rawdebug_cursor_y==0) |
||
1664 | rawdebug_cursor_y=31; |
||
1665 | else |
||
1666 | rawdebug_cursor_y--; |
||
1667 | break; |
||
1668 | |||
1669 | case DOWN: |
||
1670 | if (rawdebug_cursor_y==31) |
||
1671 | rawdebug_cursor_y=0; |
||
1672 | else |
||
1673 | rawdebug_cursor_y++; |
||
1674 | break; |
||
1675 | |||
135 | ligi | 1676 | |
81 | ligi | 1677 | } |
1678 | break; |
||
1679 | case STATEID_KEYCONTROL: |
||
1680 | if (keyCode==KEY_POUND) |
||
1681 | keycontrol_exit |= 1; |
||
1682 | else |
||
1683 | if (keyCode==KEY_STAR) |
||
1684 | keycontrol_exit |= 2; |
||
1685 | else |
||
1686 | if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8)) |
||
1687 | keycontrol_bitfield[0]|=1<<(keyCode-this.KEY_NUM0); |
||
1688 | else |
||
1689 | if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9)) |
||
1690 | keycontrol_bitfield[1]|=1<<(keyCode-this.KEY_NUM8); |
||
1691 | |||
1692 | else |
||
1693 | switch (getGameAction (keyCode)) |
||
1694 | { |
||
1695 | case UP: |
||
1696 | keycontrol_bitfield[1]|=4; |
||
1697 | break; |
||
1698 | |||
1699 | case DOWN: |
||
1700 | keycontrol_bitfield[1]|=8; |
||
1701 | break; |
||
1702 | |||
1703 | |||
1704 | case LEFT: |
||
1705 | keycontrol_bitfield[1]|=16; |
||
1706 | break; |
||
1707 | |||
1708 | case RIGHT: |
||
1709 | keycontrol_bitfield[1]|=32; |
||
1710 | break; |
||
1711 | |||
1712 | case FIRE: |
||
1713 | keycontrol_bitfield[1]|=64; |
||
1714 | break; |
||
1715 | |||
1716 | } |
||
1717 | if (keycontrol_exit==3) |
||
1718 | chg_state(STATEID_MAINMENU); |
||
1719 | else |
||
1720 | mk.send_keys(keycontrol_bitfield); |
||
1721 | break; |
||
1722 | |||
1723 | |||
1724 | case STATEID_MOTORTEST: |
||
1725 | switch (getGameAction (keyCode)) |
||
1726 | { |
||
1727 | case UP: |
||
1728 | act_motor_increase=-1; |
||
1729 | break; |
||
1730 | |||
1731 | case DOWN: |
||
1732 | act_motor_increase=1; |
||
1733 | break; |
||
1734 | |||
1735 | case FIRE: |
||
1736 | motor_test_sel_all=!motor_test_sel_all; |
||
1737 | break; |
||
1738 | |||
1739 | case LEFT: |
||
1740 | act_motor--; |
||
1741 | if (act_motor<0) {act_motor=0; chg_state(STATEID_MAINMENU); } |
||
1742 | break; |
||
1743 | |||
1744 | case RIGHT: |
||
1745 | act_motor++; |
||
1746 | act_motor%=4; |
||
1747 | break; |
||
1748 | } |
||
1749 | |||
1750 | break; |
||
1751 | case STATEID_HANDLE_PARAMS: |
||
1752 | if ( getGameAction (keyCode)==FIRE ) |
||
149 | ligi | 1753 | { |
1754 | switch(act_menu_select) |
||
1755 | { |
||
1756 | case 0: |
||
1757 | |||
1758 | mk.write_params(); |
||
1759 | break; |
||
1760 | case 2: |
||
1761 | mk.params.use_backup(); |
||
1762 | break; |
||
1763 | |||
81 | ligi | 1764 | } |
149 | ligi | 1765 | chg_state(STATEID_MAINMENU); |
1766 | } |
||
81 | ligi | 1767 | else |
1768 | menu_keypress(keyCode); |
||
1769 | break; |
||
1770 | |||
149 | ligi | 1771 | case STATEID_FILEOPEN: |
1772 | if ( getGameAction (keyCode)==FIRE ) |
||
1773 | { |
||
1774 | if ((act_menu_select==0)&&(act_path_depth!=0)) |
||
1775 | { |
||
1776 | act_path_depth--; |
||
1777 | //act_path=act_path.substring(0,act_path.substring(0,act_path.length()-2).indexOf('/') ); |
||
1778 | |||
1779 | //act_path=last_path; |
||
1780 | } |
||
1781 | else |
||
1782 | { |
||
1783 | //last_path=act_path; |
||
1784 | if (act_path_depth==0) |
||
1785 | act_path_arr[act_path_depth++]=file_list[act_menu_select]; |
||
1786 | else |
||
1787 | act_path_arr[act_path_depth++]=file_list[act_menu_select-1]; |
||
1788 | } |
||
1789 | act_menu_select=0; |
||
1790 | chg_state(STATEID_FILEOPEN); |
||
1791 | |||
1792 | } |
||
1793 | else |
||
1794 | menu_keypress(keyCode); |
||
1795 | break; |
||
1796 | |||
81 | ligi | 1797 | case STATEID_SETTINGSMENU: |
1798 | if ( getGameAction (keyCode)==FIRE ) |
||
1799 | switch(act_menu_select) |
||
1800 | { |
||
1801 | case SETTINGSMENU_CHANGESKIN: |
||
1802 | act_skin++; |
||
1803 | act_skin=(byte)(act_skin%2); |
||
1804 | load_images(); |
||
1805 | chg_state(STATEID_SETTINGSMENU); |
||
1806 | break; |
||
1807 | case SETTINGSMENU_SOUNDTOGGLE: |
||
1808 | do_sound=!do_sound; |
||
1809 | chg_state(STATEID_SETTINGSMENU); |
||
1810 | break; |
||
1811 | case SETTINGSMENU_VIBRATOGGLE: |
||
1812 | do_vibra=!do_vibra; |
||
1813 | chg_state(STATEID_SETTINGSMENU); |
||
1814 | break; |
||
1815 | |||
1816 | case SETTINGSMENU_GRAPHTOGGLE: |
||
149 | ligi | 1817 | do_scrollbg=!do_scrollbg; |
81 | ligi | 1818 | chg_state(STATEID_SETTINGSMENU); |
1819 | break; |
||
1820 | |||
1821 | |||
1822 | case SETTINGSMENU_FULLSCREENTOGGLE: |
||
1823 | fullscreen=!fullscreen; |
||
1824 | setFullScreenMode(fullscreen); |
||
1825 | chg_state(STATEID_SETTINGSMENU); |
||
1826 | break; |
||
1827 | |||
1828 | case SETTINGSMENU_LIGHTTOGGLE: |
||
1829 | keep_lighton =!keep_lighton; |
||
1830 | chg_state(STATEID_SETTINGSMENU); |
||
1831 | break; |
||
1832 | |||
1833 | case SETTINGSMENU_BACK: |
||
1834 | chg_state(STATEID_MAINMENU); |
||
1835 | break; |
||
1836 | |||
1837 | } |
||
1838 | else menu_keypress(keyCode); |
||
1839 | break; |
||
1840 | |||
1841 | case STATEID_MAINMENU: |
||
149 | ligi | 1842 | if (keyCode == this.KEY_NUM2) |
1843 | chg_state(STATEID_FILEOPEN); |
||
1844 | |||
81 | ligi | 1845 | if ( getGameAction (keyCode)==FIRE ) |
135 | ligi | 1846 | { |
1847 | |||
149 | ligi | 1848 | switch(menu_actions[act_menu_select]) |
1849 | { |
||
81 | ligi | 1850 | |
1851 | |||
149 | ligi | 1852 | case ACTIONID_CONN_DETAILS: |
1853 | chg_state(STATEID_CONN_DETAILS); |
||
1854 | break; |
||
1855 | |||
1856 | case ACTIONID_QUIT: |
||
1857 | quit=true; |
||
1858 | break; |
||
81 | ligi | 1859 | |
149 | ligi | 1860 | case ACTIONID_SWITCH_NC: |
1861 | mk.switch_to_navi(); |
||
1862 | break; |
||
81 | ligi | 1863 | |
149 | ligi | 1864 | case ACTIONID_SWITCH_FC: |
1865 | mk.switch_to_fc(); |
||
1866 | break; |
||
1867 | |||
1868 | case ACTIONID_GRAPH: |
||
1869 | chg_state(STATEID_GRAPH); |
||
1870 | break; |
||
1871 | |||
1872 | case ACTIONID_KEYCONTROL: |
||
1873 | chg_state(STATEID_KEYCONTROL); |
||
1874 | break; |
||
1875 | |||
1876 | case ACTIONID_LCD : |
||
1877 | chg_state(STATEID_FLIGHTVIEW); |
||
1878 | break; |
||
81 | ligi | 1879 | |
149 | ligi | 1880 | |
1881 | case ACTIONID_PROXY: |
||
81 | ligi | 1882 | |
149 | ligi | 1883 | chg_state(STATEID_IPINPUT); |
1884 | break; |
||
1885 | |||
1886 | case ACTIONID_DEVICESELECT: |
||
1887 | chg_state(STATEID_SCANNING); |
||
1888 | break; |
||
1889 | |||
1890 | case ACTIONID_RAWDEBUG: |
||
1891 | chg_state(STATEID_RAWDEBUG); |
||
1892 | break; |
||
1893 | |||
1894 | case ACTIONID_SETTINGS: |
||
1895 | chg_state(STATEID_SETTINGSMENU); |
||
1896 | break; |
||
81 | ligi | 1897 | |
149 | ligi | 1898 | case ACTIONID_RCDATA: |
1899 | chg_state(STATEID_STICKVIEW); |
||
1900 | break; |
||
81 | ligi | 1901 | |
149 | ligi | 1902 | case ACTIONID_CAM: |
1903 | chg_state(STATEID_CAMMODE); |
||
1904 | break; |
||
81 | ligi | 1905 | |
149 | ligi | 1906 | case ACTIONID_GPSDATA: |
1907 | chg_state(STATEID_GPSVIEW); |
||
1908 | break; |
||
1909 | |||
1910 | |||
1911 | case ACTIONID_MOTORTEST : |
||
1912 | chg_state(STATEID_MOTORTEST); |
||
1913 | break; |
||
1914 | |||
1915 | |||
1916 | case ACTIONID_EDIT_PARAMS: |
||
1917 | if (mk.watchdog.act_paramset<5) |
||
1918 | chg_state(STATEID_READ_PARAMS); |
||
1919 | else |
||
1920 | chg_state(STATEID_SELECT_PARAMSET); |
||
1921 | |||
1922 | break; |
||
1923 | |||
1924 | |||
1925 | case ACTIONID_DEBUG: |
||
1926 | debug.showing=true; |
||
1927 | break; |
||
1928 | } |
||
1929 | /* |
||
1930 | if (ufo_prober.is_mk()) |
||
1931 | switch(act_menu_select) |
||
1932 | { |
||
1933 | |||
1934 | |||
1935 | |||
1936 | |||
81 | ligi | 1937 | |
1938 | } |
||
135 | ligi | 1939 | else if (ufo_prober.is_navi()) |
1940 | switch(act_menu_select) |
||
1941 | { |
||
149 | ligi | 1942 | case MAINMENU_NAVI_SWITCH_FC: |
1943 | mk.switch_to_fc(); |
||
135 | ligi | 1944 | |
149 | ligi | 1945 | break; |
135 | ligi | 1946 | |
1947 | case MAINMENU_NAVI_SETTINGS: |
||
1948 | chg_state(STATEID_SETTINGSMENU); |
||
1949 | break; |
||
1950 | |||
1951 | case MAINMENU_NAVI_TELEMETRY : |
||
1952 | chg_state(STATEID_FLIGHTVIEW); |
||
1953 | break; |
||
1954 | |||
1955 | |||
1956 | case MAINMENU_NAVI_RAWDEBUG: |
||
1957 | chg_state(STATEID_RAWDEBUG); |
||
1958 | break; |
||
1959 | |||
1960 | case MAINMENU_NAVI_GPSVIEW: |
||
1961 | chg_state(STATEID_GPSVIEW); |
||
1962 | break; |
||
1963 | |||
1964 | case MAINMENU_NAVI_DEVICESELECT: |
||
1965 | chg_state(STATEID_SCANNING); |
||
1966 | break; |
||
1967 | |||
1968 | |||
1969 | case MAINMENU_NAVI_QUIT: |
||
1970 | // set quit Flag |
||
1971 | quit=true; |
||
1972 | break; |
||
1973 | } |
||
1974 | |||
1975 | else |
||
1976 | switch(act_menu_select) |
||
1977 | { |
||
1978 | |||
1979 | |||
1980 | |||
1981 | case MAINMENU_NO_CONN_SETTINGS: |
||
1982 | chg_state(STATEID_SETTINGSMENU); |
||
1983 | break; |
||
1984 | |||
1985 | case MAINMENU_NO_CONN_DEVICESELECT: |
||
1986 | chg_state(STATEID_SCANNING); |
||
1987 | break; |
||
1988 | |||
149 | ligi | 1989 | |
1990 | case MAINMENU_NO_CONN_DEBUG: |
||
1991 | debug.showing=true; |
||
1992 | break; |
||
1993 | |||
135 | ligi | 1994 | |
1995 | case MAINMENU_NO_CONN_QUIT: |
||
1996 | // set quit Flag |
||
1997 | quit=true; |
||
1998 | break; |
||
1999 | |||
2000 | |||
149 | ligi | 2001 | } */ |
135 | ligi | 2002 | } |
149 | ligi | 2003 | |
81 | ligi | 2004 | else menu_keypress(keyCode); |
149 | ligi | 2005 | |
81 | ligi | 2006 | break; |
2007 | |||
2008 | case STATEID_SELECT_PARAMSET: |
||
2009 | if ( getGameAction (keyCode)==FIRE ) |
||
2010 | { |
||
2011 | if ( mk.params.field[act_menu_select]!=null) |
||
2012 | { |
||
2013 | mk.params.act_paramset=act_menu_select; |
||
2014 | chg_state(STATEID_EDIT_PARAMS); |
||
2015 | } |
||
2016 | } |
||
2017 | else menu_keypress(keyCode); |
||
2018 | break; |
||
2019 | case STATEID_DEVICESELECT: |
||
2020 | /* |
||
2021 | if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM0+bt_scanner.remote_device_count)) |
||
2022 | { |
||
2023 | connect_mk("btspp://"+bt_scanner.remote_device_mac[keyCode-this.KEY_NUM0] + ":1",bt_scanner.remote_device_name[keyCode-this.KEY_NUM0]); |
||
2024 | chg_state(STATEID_MAINMENU); |
||
2025 | } |
||
2026 | else |
||
2027 | */ |
||
2028 | |||
149 | ligi | 2029 | |
81 | ligi | 2030 | if ( getGameAction (keyCode)==FIRE ) |
2031 | { |
||
2032 | |||
2033 | if (bt_scanner.remote_device_count > act_menu_select) |
||
2034 | { |
||
2035 | connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]); |
||
2036 | chg_state(STATEID_MAINMENU); |
||
135 | ligi | 2037 | // keyCode=-1; |
81 | ligi | 2038 | } |
2039 | else |
||
2040 | chg_state(STATEID_SCANNING); |
||
2041 | } |
||
2042 | else menu_keypress(keyCode); |
||
2043 | |||
2044 | break; |
||
2045 | |||
2046 | case STATEID_EDIT_PARAMS: |
||
2047 | params_editor.keypress(keyCode,getGameAction (keyCode)) ; |
||
2048 | break; |
||
2049 | |||
2050 | case STATEID_FLIGHTVIEW: |
||
2051 | |||
2052 | if ((keyCode >= this.KEY_NUM0) && (keyCode <= this.KEY_NUM9)) |
||
2053 | mk.LCD.set_page(keyCode-this.KEY_NUM0); |
||
2054 | else |
||
2055 | switch (getGameAction (keyCode)) |
||
2056 | { |
||
2057 | case LEFT: |
||
2058 | case UP: |
||
2059 | mk.LCD.LCD_PREVPAGE(); |
||
2060 | break; |
||
2061 | |||
2062 | case RIGHT: |
||
2063 | case DOWN: |
||
2064 | mk.LCD.LCD_NEXTPAGE(); |
||
2065 | break; |
||
2066 | |||
2067 | |||
2068 | |||
2069 | } |
||
2070 | break; |
||
2071 | } |
||
2072 | |||
2073 | |||
2074 | |||
2075 | } |
||
2076 | |||
2077 | |||
2078 | |||
2079 | |||
2080 | |||
2081 | |||
2082 | |||
2083 | |||
2084 | } |
||
2085 | |||
2086 |