Jypeli 10
The simple game programming library
Controls.cs
Siirry tämän tiedoston dokumentaatioon.
1#region MIT License
2/*
3 * Copyright (c) 2013 University of Jyväskylä, Department of Mathematical
4 * Information Technology.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 */
24#endregion
25
26/*
27 * Authors: Tero Jäntti, Tomi Karppinen, Janne Nikkanen.
28 */
29
30using System.Collections.Generic;
31using Jypeli.Controls;
32using Microsoft.Xna.Framework;
33
34namespace Jypeli
35{
36 public partial class Game : ControlContexted
37 {
39 private List<Controller> _controllers;
40
44 public Keyboard Keyboard { get; private set; }
45
49 public Mouse Mouse { get; private set; }
50
55 {
56 get { return Device.Accelerometer; }
57 }
58
62 public TouchPanel TouchPanel { get; private set; }
63
67 public BackButton PhoneBackButton { get; private set; }
68
72 public List<GamePad> GameControllers { get; private set; }
73
77 public GamePad ControllerOne { get { return GameControllers[0]; } }
78
82 public GamePad ControllerTwo { get { return GameControllers[1]; } }
83
87 public GamePad ControllerThree { get { return GameControllers[2]; } }
88
92 public GamePad ControllerFour { get { return GameControllers[3]; } }
93
98 {
99 get { return Instance._context; }
100 }
101
105 public bool IsModal
106 {
107 get { return false; }
108 }
109
110#if WINDOWS_PHONE || ANDROID
111 public new bool IsMouseVisible
112 {
113 get { return false; }
114 set { }
115 }
116#endif
117
118 private void InitControls()
119 {
120 _context = new ListenContext() { Active = true };
121
122 Keyboard = new Keyboard();
123 Mouse = new Mouse( Screen );
126
127 GameControllers = new List<GamePad>( 4 );
128 GameControllers.Add( new GamePad( PlayerIndex.One ) );
129 GameControllers.Add( new GamePad( PlayerIndex.Two ) );
130 GameControllers.Add( new GamePad( PlayerIndex.Three ) );
131 GameControllers.Add( new GamePad( PlayerIndex.Four ) );
132
133 _controllers = new List<Controller>();
134 _controllers.Add( Keyboard );
135#if !WINDOWS_PHONE && !ANDROID
136 _controllers.Add( Mouse );
137#endif
140#if WINDOWS_PHONE || ANDROID
142#endif
143#if NETCOREAPP
144 _controllers.AddRange( GameControllers );
145#endif
146
147 IsMouseVisible = true;
148 }
149
150 private void UpdateControls( Time gameTime )
151 {
152 _controllers.ForEach( c => c.Update() );
153 //_gamePads.ForEach( g => g.UpdateVibrations( gameTime ) );
154 }
155
159 public void ClearControls()
160 {
161 _controllers.ForEach( c => c.Clear() );
162 }
163
167 public void ShowControlHelp()
168 {
169 _controllers.ForEach( c => MessageDisplay.Add( c.GetHelpTexts() ) );
170 }
171
175 public void ShowControlHelp( Controller controller )
176 {
177 MessageDisplay.Add( controller.GetHelpTexts() );
178 }
179
181 {
182 obj.ControlContext.Active = true;
183
184 if ( obj.IsModal )
185 {
188
189 foreach ( Layer l in Layers )
190 {
191 foreach ( IGameObject lo in l.Objects )
192 {
194 if ( lo == obj || co == null )
195 continue;
196
198 co.ControlContext.Active = false;
199 }
200 }
201 }
202 }
203
205 {
206 obj.ControlContext.Active = false;
207
208 if ( obj.IsModal )
209 {
211
212 foreach ( Layer l in Layers )
213 {
214 foreach ( IGameObject lo in l.Objects )
215 {
217 if ( lo == obj || co == null )
218 continue;
219
221 }
222 }
223 }
224 }
225 }
226}
Puhelimen (tai peliohjaimen) takaisin-näppäin.
Definition: BackButton.cs:15
Kuuntelukonteksti ohjaimia varten
bool Active
Onko tämä konteksti tällä hetkellä aktiivinen
void InitControls()
Definition: Controls.cs:118
BackButton PhoneBackButton
Puhelimen takaisin-näppäin.
Definition: Controls.cs:67
GamePad ControllerTwo
Toinen peliohjain.
Definition: Controls.cs:82
List< Controller > _controllers
Definition: Controls.cs:39
ListenContext _context
Definition: Controls.cs:38
ListenContext ControlContext
Pelin pääohjainkonteksti.
Definition: Controls.cs:98
void ClearControls()
Poistaa kaikki ohjainkuuntelijat.
Definition: Controls.cs:159
void ShowControlHelp()
Näyttää kontrollien ohjetekstit.
Definition: Controls.cs:167
Mouse Mouse
Hiiri.
Definition: Controls.cs:49
void ActivateObject(ControlContexted obj)
Definition: Controls.cs:180
GamePad ControllerOne
Ensimmäinen peliohjain.
Definition: Controls.cs:77
GamePad ControllerThree
Kolmas peliohjain.
Definition: Controls.cs:87
GamePad ControllerFour
Neljäs peliohjain.
Definition: Controls.cs:92
void ShowControlHelp(Controller controller)
Näyttää kontrollien ohjetekstit tietylle ohjaimelle.
Definition: Controls.cs:175
bool IsModal
Onko ohjauskonteksti modaalinen (ei)
Definition: Controls.cs:106
void UpdateControls(Time gameTime)
Definition: Controls.cs:150
List< GamePad > GameControllers
Lista kaikista peliohjaimista järjestyksessä.
Definition: Controls.cs:72
void DeactivateObject(ControlContexted obj)
Definition: Controls.cs:204
SynchronousList< Layer > Layers
Kerrokset, joilla pelioliot viihtyvät.
Definition: Layers.cs:14
Keyboard Keyboard
Näppäimistö.
Definition: Controls.cs:44
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:96
TouchPanel TouchPanel
Kosketusnäyttö
Definition: Controls.cs:62
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
Definition: Graphics.cs:90
static Device Device
Laite jolla peliä pelataan.
Definition: Game.cs:101
Näppäimistö.
Definition: Keyboard.cs:41
Kerros. Vastaa olioiden piirtämisestä.
Definition: Layer.cs:32
SynchronousList< IGameObject > Objects
Kerroksen oliot
Definition: Layer.cs:79
Viestikenttä, jolla voi laittaa tekstiä ruudulle. Tätä sinun tuskin tarvitsee itse muodostaa.
void Add(string message)
Lisää uuden viestin näkymään.
Hiiri.
Definition: Mouse.cs:46
Kosketusnäyttö.
Definition: TouchPanel.cs:20
IEnumerable< string > GetHelpTexts()
Palauttaa asetettujen kuuntelijoiden ohjetekstit.
Yhteinen rajapinta kaikille peliolioille.
Definition: IGameObject.cs:11
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:14