File: main.l

package info (click to toggle)
picolisp 3.1.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,100 kB
  • sloc: ansic: 14,205; lisp: 795; makefile: 290; sh: 13
file content (124 lines) | stat: -rw-r--r-- 2,131 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 24jul07abu
# (c) Software Lab. Alexander Burger

# *Sock *Panel *FocLen

(load "lib/term.l")
(load "rcsim/lib.l")


(de main ()
   (setq
      *FocLen 8000.0
      *Pilot (new '(+Pilot))
      *Scene (new '(+Scene))
      *Model (new '(+Model))
      *Panel (list
         0 " %  "
         0 " km/h  "
         0 " m/s  "
         0 " m  "
         NIL ) )
   (push1 '*Bye '(tone> *Scene 0 0)) )

(de setPanel (N X)
   (set (nth *Panel N) X)
   (prinl *Panel) )

(de go ()
   (out (setq *Sock (listen (port 8080) 120000))
      (pr 800 600) )
   (start)
   (draw)
   (task *Sock
      (in *Sock
         (case (rd)
            (`(char "o")  # ok
               (draw) )
            (`(char "c")  # clk
               (rd) (rd) ) ) ) ) )

# Key Controls
(fkey *XtIns
   (when (> 32000.0 *FocLen)
      (setq *FocLen (>> -1 *FocLen)) ) )

(fkey *XtDel
   (when (> *FocLen 2000.0)
      (setq *FocLen (>> 1 *FocLen)) ) )

(fkey *XtUp
   (down> *Model) )

(fkey *XtDown
   (up> *Model) )

(fkey *XtLeft
   (left> *Model) )

(fkey *XtRight
   (right> *Model) )

(fkey *XtHome
   (throt> *Model T) )

(fkey *XtPgDn
   (throt> *Model -1) )

(fkey *XtPgUp
   (throt> *Model +1) )

(fkey *XtEnd
   (throt> *Model) )

(fkey *XtF3 ~(get (fkey) *XtDel))
(fkey *XtF4 ~(get (fkey) *XtIns))
(fkey *XtF5 ~(get (fkey) *XtEnd))
(fkey *XtF6 ~(get (fkey) *XtPgDn))
(fkey *XtF7 ~(get (fkey) *XtPgUp))
(fkey *XtF8 ~(get (fkey) *XtHome))


# Pilot
(class +Pilot)

(dm thr> (N)
   (setPanel 1 N) )

(dm speed> (N)
   (setPanel 3 N) )

(dm climb> (N)
   (setPanel 5 N) )

(dm alt> (N)
   (setPanel 7 N) )

(dm rate> (N)
   (setPanel 9 (pack (format N 2) " s")) )


# Scene
(class +Scene)
# env tone

(dm T ()
   (load "rcsim/env.l")
   (when (call 'test "-p" "fifo/tone")
      (=: tone (open "fifo/tone")) ) )

(dm sim> ())

(dm draw> ()
   (out *Sock
      (let Dir (dir> *Model)
         (z3d:Draw *FocLen (car Dir) (cdr Dir)  0 0 *Tower  LightBlue DarkGreen)
         (z3d:Draw (get *Model 'body))
         (mapc z3d:Draw (: env))
         (z3d:Draw) ) ) )

(dm tone> (A F)
   (when (: tone)
      (out @ (pr A (*/ F 22 10))) ) )

# vi:et:ts=3:sw=3