topical media & game development

talk show tell print

game-xna-intro-XnaShooter-Game-Item.cs / cs



  // Project: XnaShooter, File: Item.cs
  // Namespace: XnaShooter.Game, Class: Item
  // Path: C:\code\XnaShooter\Game, Author: Abi
  // Code lines: 167, Size of file: 4,73 KB
  // Creation date: 27.12.2006 06:10
  // Last modified: 27.12.2006 15:14
  // Generated with Commenter by abi.exDream.com
  
  #region Using directives
  using System;
  using System.Collections.Generic;
  using System.Text;
  using XnaShooter.Shaders;
  using XnaShooter.Graphics;
  using XnaShooter.Helpers;
  using XnaShooter.GameScreens;
  using XnaShooter.Game;
  using Microsoft.Xna.Framework;
  using Microsoft.Xna.Framework.Input;
  using Microsoft.Xna.Framework.Graphics;
  using XnaShooter.Sounds;
  #endregion
  
  namespace XnaShooter.Game
  {
          public class Item
          {
                  #region Variables
  
<summary> Item types </summary> public enum ItemTypes { Health, Mg, Gattling, Plasma, Rockets, Emp, } // enum ItemTypes

  
<summary> Item type, either health or a weapon. </summary> public ItemTypes itemType;

  
<summary> Position for this item. Will not move or anything, just collect them. </summary> public Vector2 position; #endregion #region Constructor <summary> Create item of specific type at specific location. </summary> <param name="setType">Set type</param> <param name="setPosition">Set position</param> public Item(ItemTypes setType, Vector2 setPosition) { itemType = setType; position = setPosition; } // Unit(setType, setPosition) #endregion

                  #region Render
  
<summary> Render unit, returns false if we are done with it. Has to be removed then. Else it updates just position and AI. </summary> <returns>True if done, false otherwise</returns> public bool Render(Mission mission) { #region Skip if out of visible range float distance = Mission.LookAtPosition.Y - position.Y; const float MaxUnitDistance = 60;

                          // Remove unit if it is out of visible range!
                          if (distance > MaxUnitDistance)
                                  return true;
                          #endregion
  
                          #region Render
                          float itemSize = Mission.ItemModelSize;
                          float itemRotation = 0;
                          Vector3 itemPos = new Vector3(position, Mission.AllShipsZHeight);
                          mission.AddModelToRender(
                                  mission.itemModels[(int)itemType],
                                  Matrix.CreateScale(itemSize) *
                                  Matrix.CreateRotationZ(itemRotation) *
                                  Matrix.CreateTranslation(itemPos));
                          // Add glow effect
                          EffectManager.AddEffect(itemPos + new Vector3(0, 0, 1.01f),
                                  EffectManager.EffectType.LightInstant,
                                  7.5f, 0, 0);
                          EffectManager.AddEffect(itemPos + new Vector3(0, 0, 1.02f),
                                  EffectManager.EffectType.LightInstant,
                                  5.0f, 0, 0);
                          #endregion
  
                          #region Collect
                          // Collect item and give to player if colliding!
                          Vector2 distVec =
                                  new Vector2(Player.shipPos.X, Player.shipPos.Y) -
                                  new Vector2(position.X, position.Y);
                          if (distVec.Length() < 5.0f)
                          {
                                  if (itemType == ItemTypes.Health)
                                  {
                                          // Refresh health
                                          Sound.Play(Sound.Sounds.Health);
                                          Player.health = 1.0f;
                                  } // if
                                  else
                                  {
                                          Sound.Play(Sound.Sounds.NewWeapon);
                                          if (itemType == ItemTypes.Mg)
                                                  Player.currentWeapon = Player.WeaponTypes.MG;
                                          else if (itemType == ItemTypes.Plasma)
                                                  Player.currentWeapon = Player.WeaponTypes.Plasma;
                                          else if (itemType == ItemTypes.Gattling)
                                                  Player.currentWeapon = Player.WeaponTypes.Gattling;
                                          else if (itemType == ItemTypes.Rockets)
                                                  Player.currentWeapon = Player.WeaponTypes.Rockets;
                                          else if (itemType == ItemTypes.Emp &&
                                                  Player.empBombs < 3)
                                                  Player.empBombs++;
                                  } // else
                                  Player.score += 500;
  
                                  return true;
                          } // else
                          #endregion
  
                          // Don't remove unit from items list
                          return false;
                  } // Render()
                  #endregion
          } // class Item
  } // namespace XnaShooter.Game
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.