Esempio n. 1
0
 public void removeMessage()
 {
     this.m = null;
 }
Esempio n. 2
0
 public void setMessage(Message m)
 {
     this.m = m;
 }
Esempio n. 3
0
        private void playGame(GameTime gameTime)
        {
            if(playstate != PlayState.WAITFORNPC && playstate != PlayState.MESSAGE)
                catchInput(gameTime, false);

            Tile playertile = map.getPlayerTile();
            int currenttime = (int)gameTime.TotalGameTime.TotalMilliseconds;

                if (playstate == PlayState.WAITFORNPC)
                {
                    if(DEBUG)
                    Console.WriteLine("WAITING FOR NPC!");

                    Event e = currentevent;

                    String questid = e.getProperty("questid");
                    if (!party.questInProgressOrCompleted(questid))
                    {
                        String model = e.getProperty("npctexture");
                        String spawnx = e.getProperty("x");
                        String spawny = e.getProperty("y");
                        String goalx = e.getProperty("goalx");
                        String goaly = e.getProperty("goaly");
                        int goalxint = Convert.ToInt32(goalx);
                        int goalyint = Convert.ToInt32(goaly);

                        /*
                        String questid = e.getProperty("questid");
                        String questreturnmap = e.getProperty("questret");
                        String questretx = e.getProperty("questretx");
                        String questrety = e.getProperty("questrety");
                        */

                        map.addNPC(model, Convert.ToInt32(spawnx), Convert.ToInt32(spawny), toolmap.getTool("PRINCESS"));
                        Tile npc = map.getNPC(model);
                        if (npc != null)
                        {
                            if (goalxint == npc.getMapX() && goalyint == npc.getMapY())
                            {
                                if(DEBUG)
                                    Console.WriteLine("Made it to the goal.. NPC");
                                //String questid = e.getProperty("questid");
                                String questreturnmap = e.getProperty("questret");
                                String questretx = e.getProperty("questretx");
                                String questrety = e.getProperty("questrety");

                                Event newev = new Event();
                                newev.setEventType(EventType.NPCQUEST);
                                newev.addProperty("npctexture", model);
                                newev.addProperty("questid", questid);
                                newev.addProperty("questret", questreturnmap);
                                newev.addProperty("questretx", questretx);
                                newev.addProperty("questrety", questrety);

                                addToEventQueue(newev);
                            }
                            //havent reached goal yet...
                            else if ((currenttime - lastmonstermove) > MONSTER_MOVE_DELAY)
                            {

                                Tile astartile = null;
                                Tile best = processAStar(map.getTileAt(goalxint, goalyint), npc);
                                if (best != null)
                                {
                                    astartile = best;
                                    Tile next = getNextStep(best);
                                    map.setNPCLocation(model, next);
                                    map.refreshTiles();
                                    edited = true;
                                }
                                else
                                    Console.WriteLine("Best is null!");

                                lastmonstermove = currenttime;
                            }
                        }
                        else
                        {
                            playstate = PlayState.WORLD;
                        }
                    }
                    else
                    {
                        playstate = PlayState.WORLD;
                    }
                }
                else if (playstate == PlayState.INVENTORY)
                {
                    KeyboardState kb = Keyboard.GetState();
                    if(kb.IsKeyDown(Keys.Space))
                    {
                        playstate = PlayState.WORLD;
                    }
                }
                else if (playstate == PlayState.NPCQUEST)
                {
                    if (DEBUG)
                        Console.WriteLine("Entered PlayGame NPCQUEST Section");

                    Event e = currentevent;
                    String model = e.getProperty("npctexture");
                    String questid = e.getProperty("questid");
                    String questreturnmap = e.getProperty("questret");
                    String questretx = e.getProperty("questretx");
                    String questrety = e.getProperty("questrety");

                    if (DEBUG)
                    {
                        Console.WriteLine("party already done quest??? -> " + party.questInProgressOrCompleted(questid));
                    }

                    if (quests.ContainsKey(questid) && !party.questInProgressOrCompleted(questid))
                    {
                        if (DEBUG)
                            Console.WriteLine("Quest can proceeed!");

                        Quest q = quests[questid];
                        party.addQuest(q);

                        Event x = new Event();
                        x.setEventType(EventType.MESSAGE);
                        x.addProperty("text", q.getQuestText());
                        x.addProperty("removenpconcomplete", model);
                        addToEventQueue(x);

                        TileMap returnmap = getMap(q.getReturnMap(), -1, -1);

                        Event j = new Event();
                        j.setEventType(EventType.QUESTRETURN);
                        j.addProperty("questid", q.getQuestID());
                        returnmap.addTileEvent(j, q.getReturnX(), q.getReturnY());
                    }
                }
                else if (playstate == PlayState.MESSAGE)
                {
                    if (!setmessage)
                    {
                        String text = currentevent.getProperty("text");
                        Message m = new Message(text, whitepixel, font);
                        map.setMessage(m);
                        setmessage = true;
                    }

                    KeyboardState kb = Keyboard.GetState();
                    if (kb.IsKeyDown(Keys.Space))
                    {
                        setmessage = false;
                        playstate = PlayState.WORLD;
                        map.removeMessage();

                        String removenpcid = currentevent.getProperty("removenpconcomplete");
                        if (removenpcid != null)
                            map.removeNPC(removenpcid);
                    }

                    //Console.WriteLine("Would Be Printing: " + text);
                }
                else
                {
                    map.tryMonsterSpawn(currenttime);

                    Tile[] monsters = map.getMonsters();
                    if ((currenttime - lastmonstermove) > MONSTER_MOVE_DELAY)
                    {
                        for (int i = 0; i < monsters.Length && playstate == PlayState.WORLD; i++)
                        {
                            Tile astartile = null;
                            Tile best = processAStar(playertile, monsters[i]);
                            if (best != null)
                            {
                                astartile = best;
                                Tile next = getNextStep(best);
                                map.setMonsterLocation(i, next);
                                map.refreshTiles();
                                edited = true;
                            }
                            else
                                Console.WriteLine("Best is null!");
                        }

                        lastmonstermove = currenttime;
                    }
                }
        }