Beispiel #1
0
        }                                                      ////@property(readonly) NoGoZone* noGoStem;

        public FlowerCliff()
        {
            //if (!base.init()) return null;

            noGoStem = new NoGoZone();
            //return this;
        }
 public void Dealloc()
 {
     if (noGoZone != null)
     {
         noGoZone.Dealloc();
         noGoZone = null;
     }
 }
        }                                                               ///@property(readwrite,assign) int crossingThingId;

//public void SetStillHasMapObject(bool inThing) {stillHasMapObject = inThing;}///@property(readwrite,assign) bool stillHasMapObject;

        public CrossingThing()
        {
            //if (!base.init()) return null;

            whichHoof = 0;
            distanceBetweenHoofSounds = 0.0f;
            distSinceCloud            = 0.0f;
            noGoZone = null;
            //return this;
        }
        public void AddToScene(CrossingThingInfo info)
        {
            numAnims = -1;
            switch ((CrossingThingType)info.crossingThingType)
            {
            case CrossingThingType.kCrossingThing_Elephant:
                xSpeed = -1.0f;
                break;

            case CrossingThingType.kCrossingThing_Snake:
                xSpeed            = -2.0f;
                animMinSubTexture = 0;                //kGTJungle_Snake1;
                numAnims          = 3;
                break;

            case CrossingThingType.kCrossingThing_Shirley:
                xSpeed            = 0.5f;
                animMinSubTexture = 0;
                numAnims          = 3;
                break;

            case CrossingThingType.kCrossingThing_Tractor:
                xSpeed            = -3.0f;
                animMinSubTexture = (short)World.Enum2.kGTMud_Tractor;
                numAnims          = 1;
                break;

            case CrossingThingType.kCrossingThing_LandRover:
                xSpeed            = 4.5f;
                animMinSubTexture = (short)World.Enum2.kGTMud_LandRover;
                numAnims          = 1;
                break;

            case CrossingThingType.kCrossingThing_Sheep:
                xSpeed = info.xSpeed;
                if (xSpeed < 0.0f)
                {
                    animMinSubTexture = (short)World.Enum3.kGTGrass_CowLeft1;
                }
                else
                {
                    animMinSubTexture = (short)World.Enum3.kGTGrass_CowRight1;
                }

                numAnims = 3;
                break;

            default:
                xSpeed = -1.0f;
                break;
            }

            framesToCrossMap  = (short)((Constants.MAP_WIDTH + (kMapEdgeBuffer * 2.0f)) / -xSpeed);
            startPosition     = info.startPosition;
            position          = info.startPosition;
            crossingThingType = info.crossingThingType;
            crossingThingId   = info.crossingThingId;
            mapObjectId       = (short)(Globals.g_world.game).AddMapObjectP1P2P3P4((TextureType)0, (int)100, (int)-300, ListType.e_RenderAbovePlayer, 0.0f);
            Globals.Assert(!(Globals.g_world.game).IsMapObjectIdInvalid(mapObjectId));
            mapObject = (Globals.g_world.game).GetMapObject(mapObjectId);
            mapObject.SetType(MapObjectType.e_CrossingThing);
            mapObject.SetSubTextureId(animMinSubTexture);
            if (((Globals.g_world.game).lBuilder).currentScene == (int)SceneType.kSceneMud)
            {
                mapObject.SetRotationScale((Globals.g_world.GetAtlas(AtlasType.kAtlas_GameThingsMud)).GetSubTextureRotationScale(animMinSubTexture));
            }
            else
            {
                mapObject.SetRotationScale((Globals.g_world.GetAtlas(AtlasType.kAtlas_GameThingsGrass)).GetSubTextureRotationScale(animMinSubTexture));
            }

            mapObject.SetIsSelfRemoving(false);
            mapObject.SetScale(Constants.SPRITE_BASE_SCALE);
            shadowMapObjectId = -1;
            if ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Elephant)
            {
                shadowMapObjectId = (short)(Globals.g_world.game).AddMapObjectP1P2P3P4((TextureType)0, (int)-100, (int)-300, ListType.e_Shadows, 0);
            }

            Globals.Assert(!(Globals.g_world.game).IsMapObjectIdInvalid(mapObjectId));
            if ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Elephant)
            {
                Globals.Assert(!(Globals.g_world.game).IsMapObjectIdInvalid(shadowMapObjectId));
                shadowMapObject = (Globals.g_world.game).GetMapObject(shadowMapObjectId);
                shadowMapObject.SetSubTextureId(1);
                shadowMapObject.SetIsSelfRemoving(false);
            }

            float noGoRadius = 0.0f;

            if ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Elephant)
            {
                shadowMapObject.SetScale(2.0f);
                noGoRadius = 42.0f;
            }
            else if ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Snake)
            {
                noGoRadius = 30.0f;
            }
            else if ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Shirley)
            {
                noGoRadius = 50.0f;
            }
            else if ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Sheep)
            {
                noGoRadius = 30.0f;
            }
            else if (((int)crossingThingType == (int)CrossingThingType.kCrossingThing_Tractor) || ((int)crossingThingType == (int)CrossingThingType.kCrossingThing_LandRover))
            {
                noGoRadius = 80.0f;
            }
            else
            {
                Globals.Assert(false);
            }

            if (noGoZone == null)
            {
                noGoZone = new NoGoZone();
            }

            noGoZone.InitialiseP1(Utilities.CGPointMake(0, 0), noGoRadius);
            noGoZone.SetType(NoGoType.e_CrossingThing);
            noGoZone.SetObjectId(crossingThingId);
            noGoZone.SetShadowObjectId(crossingThingId);
            noGoZone.SetIsBouncable(true);
            noGoZone.SetCeilingHeight(20.0f);
        }
        public void AddToFlockP1(Flock.FlockAnimalInfo info, FlockAnimal prevAnimal)
        {
            myFlock          = info.myFlock;
            xLinePosition    = info.xLinePosition;
            position.x       = info.xLinePosition;
            position.y       = myFlock.yPositionStart;
            yUndulationTimer = info.yUndulationTimer;
            yUndulationTime  = info.yUndulationTime;
            flockAnimalType  = (FlockAnimalType)info.animalType;
            flockAnimalId    = info.flockAnimalId;
            hasMarkerForAI   = info.hasMarkerForAI;
            markerOffset     = info.markerOffset;
            if (flockAnimalType == FlockAnimalType.kFlockAnimalShirley)
            {
                undulationDistance = 20.0f;
            }
            else
            {
                undulationDistance = 40.0f;
            }

            if (flockAnimalType == FlockAnimalType.kFlockAnimalPenguin)
            {
                hasShadow = false;
            }
            else
            {
                hasShadow = true;
            }

            framesForUndulationCycle = (int)(info.yUndulationTime / Constants.kFrameRate);
            if (prevAnimal == null)
            {
                yStartPosition = myFlock.yPositionStart;
                int framesAdded = (int)(info.yUndulationTimer / Constants.kFrameRate);
                undulationStartFrame = (int)(framesAdded % framesForUndulationCycle);
                if (undulationStartFrame < 0)
                {
                    undulationStartFrame += framesForUndulationCycle;
                }
            }
            else
            {
                yStartPosition = prevAnimal.yStartPosition - info.distanceToGo;
                float distanceFromStart = myFlock.yPositionStart - yStartPosition;
                int   framesSinceStart  = (int)(distanceFromStart / myFlock.speed);
                int   framesAdded       = (int)((info.yUndulationTimer) / Constants.kFrameRate);
                int   totalNewFrames    = -framesSinceStart + framesAdded;
                undulationStartFrame = (int)(totalNewFrames % framesForUndulationCycle);
                if (undulationStartFrame < 0)
                {
                    undulationStartFrame += framesForUndulationCycle;
                }
            }

            mapObjectId = (Globals.g_world.game).AddMapObjectP1P2P3P4(TextureType.kTexture_DontAddThisMapObjectToPendingList, (int)100, (int)-300,
                                                                      ListType.e_RenderAbovePlayer, 0);
            Globals.Assert(!(Globals.g_world.game).IsMapObjectIdInvalid(mapObjectId));
            mapObject = (Globals.g_world.game).GetMapObject(mapObjectId);
            mapObject.SetType(MapObjectType.e_FlockAnimal);
            mapObject.SetSubTextureId(0);
            const float kMinScale = 0.73f;
            const float kMaxScale = 1.0f;
            float       range     = kMaxScale - kMinScale;
            float       rPlus     = Utilities.GetRandBetweenP1(0.0f, range);
            float       rThing    = kMinScale + rPlus;

            mapObject.SetScale(rThing);
            mapObject.SetIsSelfRemoving(false);
            shadowMapObjectId = -1;
            if (hasShadow)
            {
                shadowMapObjectId = (Globals.g_world.game).AddMapObjectP1P2P3P4(TextureType.kTexture_DontAddThisMapObjectToPendingList, (int)-100, (int)-300,
                                                                                ListType.e_Shadows, 0);
            }

            Globals.Assert(!(Globals.g_world.game).IsMapObjectIdInvalid(mapObjectId));
            if (hasShadow)
            {
                Globals.Assert(!(Globals.g_world.game).IsMapObjectIdInvalid(shadowMapObjectId));
                shadowMapObject = (Globals.g_world.game).GetMapObject(shadowMapObjectId);
                shadowMapObject.SetIsSelfRemoving(false);

                shadowMapObject.SetAtlas(Globals.g_world.game.gameThingsAtlas);                //
                if (((Globals.g_world.game).lBuilder).currentScene == (int)SceneType.kSceneMud)
                {
                    shadowMapObject.SetSubTextureId((int)World.Enum2.kGTMud_PlayerShadow);
                    shadowMapObject.SetAtlas(Globals.g_world.game.gameThingsAtlas);// .SetSubTextureId((int)World.Enum2.kGTMud_PlayerShadow);
                }
                else
                {
                    shadowMapObject.SetSubTextureId((int)World.Enum3.kGTGrass_PlayerShadow);
                }
            }

            float noGoRadius = 0.0f;

            if (flockAnimalType == FlockAnimalType.kFlockAnimalCow)
            {
                shadowMapObject.SetScale(1.0f);
                noGoRadius = 42.0f;
            }
            else if (flockAnimalType == FlockAnimalType.kFlockAnimalSheep)
            {
                shadowMapObject.SetScale(1.7f * rThing);
                noGoRadius = 42.0f;
            }
            else if (flockAnimalType == FlockAnimalType.kFlockAnimalPenguin)
            {
                noGoRadius = 20.0f;
            }
            else if (flockAnimalType == FlockAnimalType.kFlockAnimalZebra)
            {
                shadowMapObject.SetScale(1.5f);
                noGoRadius = 35.0f;
            }
            else if (flockAnimalType == FlockAnimalType.kFlockAnimalShirley)
            {
                shadowMapObject.SetScale(2.7f);
                noGoRadius = 70.0f;
            }
            else
            {
                Globals.Assert(false);
            }

            if (noGoZone == null)
            {
                noGoZone = new NoGoZone();
            }

            noGoZone.InitialiseP1(Utilities.CGPointMake(0, 0), noGoRadius);
            noGoZone.SetType(NoGoType.e_FlockAnimal);
            noGoZone.SetObjectId(myFlock.flockId);
            noGoZone.SetShadowObjectId(flockAnimalId);
        }
Beispiel #6
0
        }                                                         ///@property(readwrite,assign) RiverType riverType;

        public void SetNoGoStem(NoGoZone inThing)
        {
            noGoStem = inThing;
        }                                                      ////@property(readonly) NoGoZone* noGoStem;