public void Update(GameTime gameTime) { //cursor.position.X = mouseState.X; //cursor.position.Y = mouseState.Y; Controls.set_cursor(); //This is totally cray cray. We change the icon, if we hover over a hotspot. foreach (HotSpot hs in Globals.current_room.hotspots) { if (hs.region.Contains(Controls.cursor.position.X, Controls.cursor.position.Y) && hs.active) { if (hs.type == HotSpot.Type.room_change) { Controls.cursor.type = Cursor.Type.go; break; } else if (hs.type == HotSpot.Type.dialogue) { Controls.cursor.type = Cursor.Type.talk; break; } else if (hs.type == HotSpot.Type.exit) { Controls.cursor.type = Cursor.Type.exit; break; } } if (Controls.cursor.type != Cursor.Type.item) { Controls.cursor.type = Cursor.Type.grab; } } if (Controls.pressed_once(Keys.I) || Controls.pressed_once(Buttons.Y)) { Game1.inventory_state.Enter(); //game_state.state = GameState.State.Inventory; //cursor.type = Cursor.Type.grab; //Should be in InventoryState.Enter() } //Click happened if (Controls.clicked_once() || Controls.pressed_once(Buttons.A)) { //Look through all hot spots in the current room foreach (HotSpot hs in Globals.current_room.hotspots) { if (Controls.cursor.position.Intersects(hs.region) && hs.active) { if (hs.type == HotSpot.Type.room_change && Controls.cursor.type == Cursor.Type.go) { //Clicked on a room change hotspot. Better do something SIC RoomChangeHS rcHS = (RoomChangeHS)hs; Globals.current_room = rcHS.leads_to; break; } else if (hs.type == HotSpot.Type.dialogue && Controls.cursor.type == Cursor.Type.talk) { //Clicked on a dialogue hot spot. Better play a CutScene DialogueHS dialogueHS = (DialogueHS)hs; Game1.cutscene_state.Enter(dialogueHS.scene); //game_state.current_cs = dialogueHS.scene; //time = 0; //stop_watch.Start(); //change_state(GameState.State.CutScene); } else if (hs.type == HotSpot.Type.exit && Controls.cursor.type == Cursor.Type.exit) { //Clicked on a room change hotspot. Better do something SIC ExitHS exitHS = (ExitHS)hs; Globals.current_room = exitHS.leads_to; break; } } } } }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { fonts = new Fonts(Content); Globals.title_safe_rect = GetTitleSafeArea(0.8f); spriteBatch = new SpriteBatch(GraphicsDevice); //THE INDEPENDANT STATES OF GRODG2 menu_state = new MenuState(spriteBatch, this); about_state = new AboutState(Content, spriteBatch); cutscene_state = new CutSceneState(spriteBatch, Content); gameplay_state = new GamePlayState(spriteBatch); chat_state = new ChatState(spriteBatch); inventory_state = new InventoryState(Content, spriteBatch, Globals.title_safe_rect); start_prompt_state = new StartPromptState(spriteBatch); current_state = start_prompt_state; //Initialise cutscenes InitialiseDialogueOptions(); InitialiseCutScenes(); AddDialogueItems(); webaddress_pos.X = Globals.title_safe_rect.Right - Fonts.SubtitleFont.MeasureString(webaddress).X; webaddress_pos.Y = Globals.title_safe_rect.Top; Globals.current_room = cell; collar_poppa_room.characters.Add(collar_poppa); collar_poppa_room.characters.Add(black_betty); cell.hotspots.Add(new RoomChangeHS(new Rectangle(527, 220, 205, 347), hallway)); hallway.hotspots.Add(new RoomChangeHS(new Rectangle(958, 246, 232, 447), yard)); hallway.hotspots.Add(new RoomChangeHS(new Rectangle(132, 310, 144, 318), cell)); hallway.characters.Add(sweepy); hallway.hotspots.Add(new DialogueHS(new Rectangle(492, 22, 191, 220), sweepy_hello)); yard.hotspots.Add(new RoomChangeHS(new Rectangle(213, 271, 57, 215), toilet)); yard.hotspots.Add(new RoomChangeHS(new Rectangle(879, 293, 71, 215), laundry)); yard.hotspots.Add(new RoomChangeHS(new Rectangle(990, 274, 119, 394), library)); yard.characters.Add(red_square); yard.hotspots.Add(new DialogueHS(new Rectangle(507, 407, 208, 244), collar_hello)); yard.hotspots.Add(new ExitHS(hallway)); professor_hs = new DialogueHS(new Rectangle(513, 32, 272, 355), prof_hello); professor_hs.active = false; laundry.hotspots.Add(professor_hs); laundry.hotspots.Add(new ExitHS(yard)); laundry.hotspots.Add(new RoomChangeHS(new Rectangle(0, 0, 404, 240), ballroom)); mc_hummus_hs = new DialogueHS(new Rectangle(389, 17, 276, 335), mc_bad_romance); toilet.hotspots.Add(new ExitHS(yard)); toilet.characters.Add(mc_hummus); toilet.hotspots.Add(mc_hummus_hs); library.hotspots.Add(new ExitHS(yard)); library.hotspots.Add(new DialogueHS(new Rectangle(473, 14, 242, 276), bs_hello)); library.characters.Add(ben_seib); ballroom.hotspots.Add(new ExitHS(laundry)); }