]> Dogcows Code - chaz/carfire/blob - CarFire/leveleditor/plugin/leveleditor.vim
adding initial level editor files
[chaz/carfire] / CarFire / leveleditor / plugin / leveleditor.vim
1 " Car Fire Level Editor for Vim
2 " Last Change: 2010 Apr 09
3 " Maintainer: Charles McGarvey <mcgarvey@eng.utah.edu>
4 " License: This file is placed in the public domain.
5
6
7 "if exists("loaded_leveleditor")
8 "finish
9 "endif
10 "let loaded_leveleditor = 1
11
12 let s:save_cursorcolumn = &cursorcolumn
13 let s:save_expandtab = &expandtab
14 let s:save_statusline = &statusline
15
16
17 set statusline=%!LevelEditor_Evaluate()
18 function! LevelEditor_Evaluate()
19
20 let l:linenum = search('\m^\s*dimensions\s*=\s*\[\d\+,\d\+\]', 'bnw')
21 if l:linenum != 0
22 let l:line = getline(l:linenum)
23 let l:dimensions = matchlist(line, '\m\[\(.*\),\(.*\)\]')
24 let l:dw = get(l:dimensions, 1)
25 let l:dh = get(l:dimensions, 2)
26 let l:linenum = search('\m^\[maptable\]', 'bnW')
27 let l:current = line(".")
28 if l:linenum != 0 && l:current > l:linenum && l:current < l:linenum + l:dh + 1
29 let l:cx = col(".") - 1
30 let l:cy = line(".") - l:linenum - 1
31 setlocal cursorcolumn
32 setlocal expandtab
33 return s:save_statusline." Map: [".l:cx.",".l:cy."]"
34 else
35 return s:LevelEditor_Reset()
36 endif
37 else
38 return s:LevelEditor_Reset()
39 endif
40
41 endfunction
42
43 function! s:LevelEditor_Reset()
44 if s:save_cursorcolumn == 0
45 setlocal nocursorcolumn
46 endif
47 if s:save_expandtab == 0
48 setlocal noexpandtab
49 endif
50 return s:save_statusline
51 endfunction
52
53
54 if !hasmapto('<Plug>LeInitLevel')
55 map <unique> <Leader>ei <Plug>LeInitLevel
56 endif
57 noremap <unique> <script> <Plug>LeInitLevel <SID>InitLevel
58 noremenu <script> Plugin.Level\ Editor.Initialize\ Buffer <SID>InitLevel
59
60 noremap <SID>InitLevel :call <SID>InitLevel()<CR>
61 function! s:InitLevel()
62 setlocal filetype=dosini
63 normal ggdGa[metadata]
64 call append(line('$'), "\tauthor = " . expand("$USER"))
65 call append(line('$'), "\tlevelname = My Level")
66 call append(line('$'), "\ttype = Campaign")
67 call append(line('$'), "\tdimensions = ")
68 call append(line('$'), "\ttileset = FuturisticBuilding")
69 call append(line('$'), "\tnumplayers = <1-4>")
70 call append(line('$'), "[maptable]")
71 endfunction
72
73
74 if !hasmapto('<Plug>LeAddEntity')
75 map <unique> <Leader>ea <Plug>LeAddEntity
76 endif
77 noremap <unique> <script> <Plug>LeAddEntity <SID>AddEntity
78 noremenu <script> Plugin.Level\ Editor.Add\ Entity <SID>AddEntity
79
80 noremap <SID>AddEntity :call <SID>AddEntity()<CR>
81 function! s:AddEntity()
82 echo Cool!
83 endfunction
84
85
86 menu <silent> Plugin.Level\ Editor.-Sep- :
87 menu <script> Plugin.Level\ Editor.Help :help leveleditor-contents<CR>
88
This page took 0.039324 seconds and 4 git commands to generate.