Exemple #1
0
 public bool TryCollision(Actor act, Vector2 offsetActor,Vector2 globalOffset)
 {
     if (!CollisionRect.isNear(cr, act.cr)) return false;
     foreach (Tile t in act.tiles)
         if (TryCollision(t, act.position + offsetActor + globalOffset, position + globalOffset, act.angle))
             return true;
     return false;
 }
Exemple #2
0
 public bool TryCollision(Actor act, Vector2 newPos,Vector2 globalOffset = new Vector2(),float angle = float.NaN)
 {
     foreach (Tile t in data)
     {
         if (act.TryCollision(t, globalOffset, newPos+globalOffset, (float.IsNaN(angle)) ? act.angle : angle))
             return true;
     }
     return false;
 }
Exemple #3
0
 public bool Collision(Actor p)
 {
     foreach (Tile t in p.tiles)
         if (Collision(t, p.position))
         {
             if (onCollision != null)    onCollision(this, p);
             Raise("oncollision", this, p);
             return true;
         }
     return false;
 }
Exemple #4
0
 void onSomebodyMapout(Actor act)
 {
     act.Stop();
     if (act.position.X < 0) act.position.X = 0;
     if (act.position.Y < 0) act.position.Y = 0;
     if (act.position.X + act.Width > scn.Background.WidthPix) act.position.X = scn.Background.WidthPix - act.Width;
     if (act.position.Y + act.Height > scn.Background.HeightPix) act.position.Y = scn.Background.HeightPix - act.Height;
 }
Exemple #5
0
 public bool Collision(Actor act,Vector2 offset)
 {
     foreach (Tile t in data)
         if (CollisionRect.isNear(act.cr,t.cr) &&
             act.Collision(t, offset, true))
         {
             if (onCollision != null) onCollision(this, act);
             return true;
         }
     return false;
 }
Exemple #6
0
 void makeMoveTest(Actor a)
 {
     List<Vector2> points = new List<Vector2>();
     for (int i=0;i<500;i+=10)
         for (int j = 0; j < 500; j+=10)
         {
             if (scn.TryCollision(a,new Vector2(i,j)))
                 points.Add(new Vector2(i,j));
         }
 }
Exemple #7
0
 void onActorMoved(Actor act)
 {
     int newX = 0, newY = 0;
     if (ActorPositionInScreen(act).X > 500) newX += 5;
     if (ActorPositionInScreen(act).X < 100) newX -= 5;
     if (ActorPositionInScreen(act).Y < 100) newY -= 5;
     if (ActorPositionInScreen(act).Y > 300) newY += 5;
     if (scn.window.X + newX >= 0) scn.window.X += newX;
     if (scn.window.Y + newY >=0) scn.window.Y +=newY;
 }
Exemple #8
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            uc = new UserControl();
            LuaInterfacer li = new LuaInterfacer();
            li.SetGlobal("UserControl", uc);
            li.DoFile("./Content/init.lua");
            scn = li.CreateStage(spriteBatch, "main");
            mainTheatre.AddStage(scn);
            scn.CalibrateCollisions();
            scn.Reindex();
            //ResourceLoader rsldr = new ResourceLoader("./Content/init.lua");
            mainHero = li.actorList["Hero"];
            //scn = rsldr.CreateStage(spriteBatch,"main");

            uc.onKeydown += keyDowned;
            uc.onMouseLeftDown += mouseMoved;

            IsMouseVisible = true;

            mainHero.onCollision += onCollision;
            mainHero.onMove += onActorMoved;
            mainHero.speed = 0.5f;
            mainHero.RotateSpeed = 100;
            scn.onMapOut += onSomebodyMapout;
            mainHero.Rotate((float)(Math.PI*2/3));
            //makeMoveTest(mainHero);
            systemFont = Content.Load<SpriteFont>("Courier New");
            Text t1 = new Text("main hero");
            t1.position.Y = -50;
            t1.position.X = -50;
            mainHero.AddText(t1);

            int middleDisplay = GraphicsDevice.Viewport.Width/2;
            menu = new Stage(this.spriteBatch, 1024, 768, new Rectangle(0,0,400, 400));

            Button newGameButton = new Button("New game", GraphicsDevice, spriteBatch);
            newGameButton.BackgroundImage = "Plit.png";
            newGameButton.onClick += NewGameFunc;

            Button exitButton = new Button("Exit", GraphicsDevice, spriteBatch);
            exitButton.BackgroundImage = "Plit.png";
            exitButton.onClick += ExitFunc;

            Panel p = new Panel(GraphicsDevice.Viewport.Width,GraphicsDevice.Viewport.Height);
            p.position.Y = 10;
            p.AddControl(newGameButton);
            p.AddControl(exitButton);

            menu.AddControl(p);

            mainTheatre.AddStage(menu);

            mainTheatre.Disable(scn);
            //mainTheatre.Disable(menu);
        }
Exemple #9
0
 Vector2 ActorPositionInScreen(Actor act)
 {
     return (act.position - scn.window.Location.ToVector2());
 }
Exemple #10
0
 private void ActorReindex(Actor act)
 {
     act.Reindex(new Vector2(0, 0), collisionIndexRect);
 }
Exemple #11
0
 public bool TryCollision(Actor act,Vector2 testPosition)
 {
     /*for (int i = 0; i < actors.Count; i++)
             if (act != actors[i] && actors[i].TryCollision(act,testPosition,new Vector2(window.X,window.Y))) return true;*/
     return background.TryCollision(act, testPosition , new Vector2(-window.X, -window.Y));
 }
Exemple #12
0
 public void MapOutCheck(Actor act)
 {
     if (act.position.X + act.Width > background.WidthPix ||
         act.position.Y + act.Height > background.HeightPix ||
         act.position.X < 0 ||
         act.position.Y < 0)
     {
         if (act.onMapOut != null) act.onMapOut(act);
         if (onMapOut != null) onMapOut(act);
         Raise("onmapout",act);
     }
 }
Exemple #13
0
 public void addActor(Actor act)
 {
     actors.Add(act);
     act.spriteBatch = this.spriteBatch;
     act.onMove += ActorReindex;
     act.onMove += MapOutCheck;
 }
Exemple #14
0
 public Actor CreateActor(string name, Tile fromTile,int startX, int startY)
 {
     Actor act = new Actor(name, fromTile,startX,startY);
         actorList[name] = act;
         return act;
 }