File: cs_85.html

package info (click to toggle)
crystalspace 0.94-20020412-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 62,276 kB
  • ctags: 52,843
  • sloc: cpp: 274,783; ansic: 6,608; perl: 6,276; objc: 3,952; asm: 2,942; python: 2,354; php: 542; pascal: 530; sh: 430; makefile: 370; awk: 193
file content (138 lines) | stat: -rw-r--r-- 5,870 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created by texi2html 1.64 -->
<!-- 
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
            Karl Berry  <karl@freefriends.org>
            Olaf Bachmann <obachman@mathematik.uni-kl.de>
            and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
 
-->
<HTML>
<HEAD>
<TITLE>Crystal Space: Simple Loading The Map</TITLE>

<META NAME="description" CONTENT="Crystal Space: Simple Loading The Map">
<META NAME="keywords" CONTENT="Crystal Space: Simple Loading The Map">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">

</HEAD>

<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">

<A NAME="SEC183"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_84.html#SEC182"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_86.html#SEC184"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_79.html#SEC177"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_83.html#SEC181"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_87.html#SEC185"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_285.html#SEC711">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<HR SIZE=1>
<H3> 5.4.2 Loading The Map </H3>
<!--docid::SEC183::-->
<P>

Here we add the code to load a map. In this example we will load the
`<SAMP>flarge</SAMP>' map which is included with Crystal Space.
</P><P>

In the second tutorial we already mentioned VFS (see section <A HREF="cs_161.html#SEC340">7.2 Virtual File System (VFS)</A>). This
is important in this case too since we are going to load the map from
the virtual filesystem. To do this we first add the new <CODE>LoadMap()</CODE>
routine right before the <CODE>Initialize()</CODE> function:
</P><P>

<TABLE><tr><td>&nbsp;</td><td class=example><pre>bool Simple::LoadMap ()
{
  // Set VFS current directory to the level we want to load.
  iVFS* VFS = CS_QUERY_REGISTRY (object_reg, iVFS);
  VFS-&#62;ChDir ("/lev/flarge");
  VFS-&#62;DecRef ();
  // Load the level file which is called 'world'.
  if (!loader-&#62;LoadMapFile ("world"))
  {
    csReport (object_reg, CS_REPORTER_SEVERITY_ERROR,
    	"crystalspace.application.simple",
    	"Couldn't load level!");
    return false;
  }
  engine-&#62;Prepare ();

  iTextureManager* txtmgr = g3d-&#62;GetTextureManager ();
  txtmgr-&#62;SetPalette ();
  return true;
}
</pre></td></tr></table></P><P>

This code will first use <CODE>iVFS::ChDir()</CODE> to set the current
directory in the virtual file system to `<TT>/lev/flarge</TT>'. In the
case of `<SAMP>flarge</SAMP>' this MOUNT POINT is already created in the
config file `<TT>vfs.cfg</TT>'. If this is not the case for your own levels
you can either modify `<TT>vfs.cfg</TT>' or else call <CODE>iVFS::Mount()</CODE>
to map a physical file path (can be a ZIP archive file as well)
to a virtual directory.
</P><P>

The call to <CODE>iLoader::LoadMapFile()</CODE> will take the given filename
(in this case `<TT>world</TT>') and open it from the current VFS
directory. Then it will parse that file and create the geometry which
is specified there.
</P><P>

If this is succesful then you must call <CODE>iEngine::Prepare()</CODE> to
make sure that all lightmaps are correctly loaded from the cache
and other necessary setup work is done (i.e. textures are registered
and so on).
</P><P>

We additionally change the last part of <CODE>Initialize()</CODE> to
this:
</P><P>

<TABLE><tr><td>&nbsp;</td><td class=example><pre>bool Simple::Initialize (int argc, const char* const argv[])
{
  <small>...</small>

  view = new csView (engine, g3d);
  iGraphics2D* g2d = g3d-&#62;GetDriver2D ();
  view-&#62;SetRectangle (0, 0, g2d-&#62;GetWidth (), g2d-&#62;GetHeight ());

  if (!LoadMap ()) return false;
  return true;
}
</pre></td></tr></table></P><P>

So first we create our view but doesn't yet set the current sector.
<CODE>LoadMap()</CODE> will do that based on the loaded level.
</P><P>

<A NAME="Simple Locating the Camera"></A>
<HR SIZE=1>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_84.html#SEC182"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_86.html#SEC184"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_79.html#SEC177"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_83.html#SEC181"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_87.html#SEC185"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_285.html#SEC711">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>  
<FONT SIZE="-1">
This document was generated

using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>

</BODY>
</HTML>