Beispiel #1
0
 public void MajorEmpireUntameKaiju(Kaiju kaiju, int instigatorEmpireIndex, bool clearMilitias = false)
 {
     if (kaiju.MajorEmpire == null || !(kaiju.MajorEmpire is MajorEmpire))
     {
         Diagnostics.LogError("Kaiju has an invalid owner.");
     }
     if (this.KaijuEmpire.Index != kaiju.KaijuEmpire.Index)
     {
         Diagnostics.LogError("KaijuCouncil KaijuEmpire must be the same as Kaiju KaijuEmpire!");
     }
     if (clearMilitias)
     {
         kaiju.ClearMilitias();
     }
     kaiju.RemoveOwner(instigatorEmpireIndex);
     this.departmentOfDefense.AddArmy(kaiju.KaijuArmy);
     kaiju.ChangeToWildState();
     this.KaijuEmpire.AddChild(kaiju.KaijuGarrison);
     if (kaiju.KaijuArmy != null)
     {
         this.KaijuEmpire.AddChild(kaiju.KaijuArmy);
     }
     this.KaijuEmpire.AddKaiju(kaiju);
     this.KaijuEmpire.Refresh(false);
     this.Kaiju = kaiju;
 }
Beispiel #2
0
    public void AddRegionalEffect(RegionalEffect effect)
    {
        this.regionalEffects.Add(effect);
        for (int i = 0; i < effect.Definition.Descriptors.Length; i++)
        {
            base.AddDescriptor(effect.Definition.Descriptors[i], true);
        }
        this.Refresh(false);
        IEventService service = Services.GetService <IEventService>();

        if (service != null)
        {
            IGameEntityRepositoryService service2 = this.gameService.Game.Services.GetService <IGameEntityRepositoryService>();
            if (service2 != null)
            {
                Kaiju kaiju = null;
                service2.TryGetValue <Kaiju>(effect.OwnerGUID, out kaiju);
                if (kaiju != null)
                {
                    EventCityAddRegionalEffects eventToNotify = new EventCityAddRegionalEffects(this.Empire, this, kaiju);
                    service.Notify(eventToNotify);
                }
            }
        }
    }
Beispiel #3
0
    private void KaijuLostEncounter(Kaiju kaiju, global::Empire stunner, bool setKaijuFree)
    {
        bool flag     = Amplitude.Unity.Runtime.Runtime.Registry.GetValue <bool>("Gameplay/Kaiju/KaijuAutoTameBeforeLoseEncounter", true);
        bool relocate = false;

        if (setKaijuFree)
        {
            flag     = false;
            relocate = true;
        }
        global::PlayerController server = this.KaijuEmpire.PlayerControllers.Server;

        if (kaiju.IsTamed())
        {
            MajorEmpire majorEmpire = kaiju.MajorEmpire;
            if (server != null)
            {
                OrderUntameKaiju order = new OrderUntameKaiju(kaiju, relocate, stunner.Index, flag);
                server.PostOrder(order);
            }
        }
        else if (flag)
        {
            if (server != null)
            {
                OrderTameKaiju order2 = new OrderTameKaiju(stunner.Index, kaiju, null);
                server.PostOrder(order2);
            }
        }
        else
        {
            this.Kaiju.ChangeToStunState(stunner);
            this.ResetRelocationETA();
        }
    }
Beispiel #4
0
    public override void ReadXml(XmlReader reader)
    {
        int num = reader.ReadVersionAttribute();

        base.ReadXml(reader);
        GameEntityGUID guid  = new GameEntityGUID(reader.GetAttribute <ulong>("GUID"));
        Kaiju          kaiju = new Kaiju(this.KaijuEmpire, guid);

        reader.ReadElementSerializable <Kaiju>(ref kaiju);
        if (kaiju != null)
        {
            this.Kaiju = kaiju;
        }
        this.relocationETA         = reader.ReadElementString <int>("relocationETA");
        this.kaijuSpawnTurn        = reader.ReadElementString <int>("kaijuSpawnTurn");
        this.lastLiceArmySpawnTurn = reader.ReadElementString <int>("lastLiceArmySpawnTurn");
        this.liceArmies.Clear();
        this.liceArmiesCache = null;
        if (num >= 2)
        {
            int attribute = reader.GetAttribute <int>("liceArmiesCount");
            reader.ReadStartElement("liceArmies");
            for (int i = 0; i < attribute; i++)
            {
                this.liceArmies.Add(new GameEntityGUID(reader.ReadElementString <ulong>("liceArmyGUID")));
            }
            reader.ReadEndElement("liceArmies");
        }
    }
Beispiel #5
0
    private void CreateObjectiveFor(int regionIndex, Kaiju kaiju)
    {
        GlobalObjectiveMessage globalObjectiveMessage = base.GenerateObjective(base.ObjectiveType, regionIndex, kaiju.GUID);

        this.globalObjectiveMessages.Add(globalObjectiveMessage);
        this.RefreshMessagePriority(globalObjectiveMessage);
    }
 public static void assignData(Kaiju aKaiju, Board aBoard, float aNumber, SkillBar aSkillBar)
 {
     currentBoard      = aBoard;
     currentKaiju      = aKaiju;
     growScoreRelation = aNumber;
     currentSkillBar   = aSkillBar;
 }
    protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
    {
        Army  army  = aiBehaviorTree.Variables[this.TargetVarName] as Army;
        Kaiju kaiju = aiBehaviorTree.Variables[this.TargetVarName] as Kaiju;

        if (army == null && kaiju != null && kaiju.OnArmyMode())
        {
            army = kaiju.KaijuArmy;
        }
        if (army != null)
        {
            return(this.ArmyExecute(army, aiBehaviorTree, parameters));
        }
        Garrison garrison = aiBehaviorTree.Variables[this.TargetVarName] as Garrison;

        if (garrison == null && kaiju != null && kaiju.OnGarrisonMode())
        {
            garrison = kaiju.KaijuGarrison;
        }
        if (garrison != null)
        {
            return(this.GeneralExecute(garrison, aiBehaviorTree, parameters));
        }
        aiBehaviorTree.ErrorCode = 10;
        return(State.Failure);
    }
 override public void destroy()
 {
     base.destroy();
     btnNextScreen.destroy();
     btnNextScreen = null;
     optionsBttn.destroy();
     optionsBttn = null;
     mBoard.destroy();
     mBoard = null;
     monster.destroy();
     monster = null;
     building.destroy();
     building = null;
     screenDim.destroy();
     screenDim = null;
     timeLeft.destroy();
     timeLeft = null;
     skills.destroy();
     skills = null;
     backMenuBttn.destroy();
     backMenuBttn = null;
     tryAgainBttn.destroy();
     tryAgainBttn = null;
     scoreText.destroy();
     scoreText = null;
 }
Beispiel #9
0
	public void RemoveTamedKaiju(Kaiju kaiju)
	{
		if (this.TamedKaijus.Contains(kaiju))
		{
			IDatabase<SimulationDescriptor> database = Databases.GetDatabase<SimulationDescriptor>(false);
			SimulationDescriptor descriptor = null;
			if (database.TryGetValue(kaiju.KaijuEmpire.KaijuFaction.EmpireTamedKaijuDescriptor, out descriptor))
			{
				base.SimulationObject.RemoveDescriptor(descriptor);
			}
			this.TamedKaijus.Remove(kaiju);
			base.RemoveChild(kaiju);
			if (kaiju.KaijuGarrison != null)
			{
				base.RemoveChild(kaiju.KaijuGarrison);
			}
			if (kaiju.KaijuArmy != null)
			{
				base.RemoveChild(kaiju.KaijuArmy);
				base.GetAgency<DepartmentOfDefense>().RemoveArmy(kaiju.KaijuArmy, false);
			}
			kaiju.Refresh(false);
			this.Refresh(false);
			if (this.TamedKaijusCollectionChanged != null)
			{
				this.TamedKaijusCollectionChanged(this, new CollectionChangeEventArgs(CollectionChangeAction.Remove, kaiju));
			}
		}
	}
Beispiel #10
0
    protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
    {
        if (string.IsNullOrEmpty(this.TargetVarName))
        {
            return(State.Success);
        }
        Kaiju kaiju = aiBehaviorTree.Variables[this.TargetVarName] as Kaiju;

        if (kaiju == null || kaiju.IsTamed())
        {
            return(State.Success);
        }
        if (!(aiBehaviorTree.AICommander.Empire is MajorEmpire))
        {
            return(State.Success);
        }
        Army army;

        if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None)
        {
            return(State.Success);
        }
        if (this.aILayer_Trade.ArmiesThatTriedKaijuTameResourceTrading.Contains(army.GUID))
        {
            return(State.Success);
        }
        this.aILayer_Trade.ArmiesThatTriedKaijuTameResourceTrading.Add(army.GUID);
        return(State.Failure);
    }
 protected override void RefreshObjectives(StaticString context, StaticString pass)
 {
     base.RefreshObjectives(context, pass);
     for (int i = 0; i < this.MajorEmpire.TamedKaijus.Count; i++)
     {
         Kaiju kaiju = this.MajorEmpire.TamedKaijus[i];
         if (kaiju.OnArmyMode())
         {
             AICommander aicommander = this.aiCommanders.Find((AICommander match) => match.ForceArmyGUID == kaiju.KaijuArmy.GUID);
             if (aicommander == null)
             {
                 this.AddCommander(new AICommander_KaijuSupport
                 {
                     ForceArmyGUID = kaiju.KaijuArmy.GUID,
                     Empire        = base.AIEntity.Empire,
                     AIPlayer      = base.AIEntity.AIPlayer
                 });
             }
             else
             {
                 aicommander.Initialize();
                 aicommander.Load();
                 aicommander.CreateMission();
             }
         }
     }
 }
Beispiel #12
0
 private bool IsKaijuValidForTame(Army army, Kaiju kaiju, ref List <StaticString> failureFlags, bool checkNearbyKaijus = true)
 {
     if (army == null || kaiju == null)
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (checkNearbyKaijus && !this.IsKaijuNearby(kaiju, army))
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (kaiju.IsTamed())
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (kaiju.IsStunned())
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
         return(false);
     }
     if (ELCPUtilities.UseELCPSymbiosisBuffs && !ELCPUtilities.CanELCPTameKaiju(kaiju, this.TameCost, army.Empire))
     {
         failureFlags.Add(ArmyAction.NoCanDoWhileCannotAffordCosts);
         return(false);
     }
     return(true);
 }
Beispiel #13
0
    public override void Execute(Army army, global::PlayerController playerController, out Ticket ticket, EventHandler <TicketRaisedEventArgs> ticketRaisedEventHandler, params object[] parameters)
    {
        ticket = null;
        ArmyAction.FailureFlags.Clear();
        Kaiju kaiju = null;

        if (parameters != null && parameters.Length != 0)
        {
            if (parameters[0] is Kaiju)
            {
                kaiju = (parameters[0] as Kaiju);
            }
            else if (parameters[0] is KaijuGarrison)
            {
                kaiju = (parameters[0] as KaijuGarrison).Kaiju;
            }
            else if (parameters[0] is KaijuArmy)
            {
                kaiju = (parameters[0] as KaijuArmy).Kaiju;
            }
        }
        if (kaiju != null)
        {
            OrderTameUnstunnedKaiju order = new OrderTameUnstunnedKaiju(army.Empire.Index, kaiju, army);
            Diagnostics.Assert(playerController != null);
            playerController.PostOrder(order, out ticket, ticketRaisedEventHandler);
        }
    }
Beispiel #14
0
    public void SetupPortrait(Kaiju kaiju, Empire playerEmpire)
    {
        this.Kaiju = kaiju;
        if (this.Portrait != null)
        {
            IGuiPanelHelper guiPanelHelper = Services.GetService <global::IGuiService>().GuiPanelHelper;
            Diagnostics.Assert(guiPanelHelper != null, "Unable to access GuiPanelHelper");
            Texture2D image;
            if (guiPanelHelper.TryGetTextureFromIcon(this.KaijuGuiElement, global::GuiPanel.IconSize.Large, out image))
            {
                this.Portrait.Image = image;
            }
        }
        Amplitude.Unity.Gui.IGuiService service = Services.GetService <global::IGuiService>();
        Diagnostics.Assert(service != null);
        KaijuTameCost kaijuTameCost = KaijuCouncil.GetKaijuTameCost();

        this.CostGroup.Visible = this.Kaiju.IsWild();
        KaijuCouncil agency = this.Kaiju.KaijuEmpire.GetAgency <KaijuCouncil>();

        this.CostValue.Text = GuiFormater.FormatGui(kaijuTameCost.GetValue(playerEmpire), false, true, false, 0) + service.FormatSymbol(ELCPUtilities.UseELCPSymbiosisBuffs ? agency.ELCPResourceName : kaijuTameCost.ResourceName);
        if (this.Background != null)
        {
            this.Background.TintColor = this.Kaiju.Empire.Color;
        }
        this.AgeTransform.AgeTooltip.Content = AgeLocalizer.Instance.LocalizeString(KaijuTechPortrait.PortraitClickTooltip);
    }
 private void Order_KaijuRisen(object sender, TicketRaisedEventArgs e)
 {
     if (e.Result == PostOrderResponse.Processed)
     {
         OrderKaijuChangeMode orderKaijuChangeMode = e.Order as OrderKaijuChangeMode;
         Kaiju kaiju = null;
         if (!this.gameEntityRepositoryService.TryGetValue <Kaiju>(orderKaijuChangeMode.KaijuGUID, out kaiju) || !this.MajorEmpire.TamedKaijus.Contains(kaiju))
         {
             return;
         }
         AICommander aicommander = this.aiCommanders.Find((AICommander match) => match.ForceArmyGUID == kaiju.KaijuArmy.GUID);
         if (aicommander == null)
         {
             this.AddCommander(new AICommander_KaijuSupport
             {
                 ForceArmyGUID = kaiju.KaijuArmy.GUID,
                 Empire        = base.AIEntity.Empire,
                 AIPlayer      = base.AIEntity.AIPlayer
             });
             return;
         }
         aicommander.Initialize();
         aicommander.Load();
         aicommander.CreateMission();
     }
 }
Beispiel #16
0
    public static bool CanELCPTameKaiju(Kaiju kaiju, KaijuTameCost tameCost, global::Empire empire)
    {
        KaijuCouncil            agency  = kaiju.KaijuEmpire.GetAgency <KaijuCouncil>();
        float                   num     = -tameCost.GetValue(empire.SimulationObject);
        DepartmentOfTheTreasury agency2 = empire.GetAgency <DepartmentOfTheTreasury>();

        return(agency2 != null && agency2.IsTransferOfResourcePossible(empire, agency.ELCPResourceName, ref num));
    }
    public CSurvivalState(CInfo stageInfo)
    {
        CGame.inst().setImage("Sprites/level_Background00");
        CurrentStageData.clearData();
        SoundList.instance.playLevelMusic();
        tryAgainInfo = stageInfo;
        switch (stageInfo.Kaiju)
        {
        case 1:
            monster = new Dinosaur(stageInfo.startStage, stageInfo.firstStage, stageInfo.secondStage);
            break;

        case 2:
            monster = new Kong(stageInfo.startStage, stageInfo.firstStage, stageInfo.secondStage);
            break;

        case 3:
            monster = new Kraken(stageInfo.startStage, stageInfo.firstStage, stageInfo.secondStage);
            break;
        }
        current_state = STATE_PLAYING;
        CurrentStageData.difficulty = 0;
        mBoard = new Board(1);

        building = new Enemy(0);


        timeLeft = new CText("Time: ", CText.alignment.TOP_CENTER);
        timeLeft.setX(0);
        timeLeft.setY(0);
        timeLeft.setColor(Color.black);

        scoreText = new CText("SCORE :", CText.alignment.TOP_CENTER);
        scoreText.setX(400);
        scoreText.setY(0);
        scoreText.setColor(Color.black);
        btnNextScreen = new CSprite();
        btnNextScreen.setSortingLayer("TextUI");

        mBoard.targetScore = stageInfo.TargetScore; // MOVE TO CLASS
        float scoreCoefficient = (float)70 / (float)mBoard.targetScore;

        skills = new SkillBar(stageInfo.Kaiju);
        mTimer = new Timer();
        CurrentStageData.assignData(monster, mBoard, scoreCoefficient, skills);
        CurrentStageData.assignTimer(mTimer);
        screenDim = new CSprite();
        screenDim.setSortingLayer("ScreenShade");
        screenDim.setName("Sombra");
        backMenuBttn = new CSprite();
        backMenuBttn.setSortingLayer("TextUI");
        tryAgainBttn = new CSprite();
        tryAgainBttn.setSortingLayer("TextUI");
        optionsBttn = new CSprite();
        optionsBttn.setImage(Resources.Load <Sprite>("Sprites/Buttons/Pause_Button"));
        optionsBttn.setXY(680, 40);
        optionsBttn.setSortingLayer("TextUI");
    }
Beispiel #18
0
    // Init all the game states
    void initLevel()
    {
        // Init Cnavas
        gameCanvas.SetActive(true);
        winCanvas.SetActive(false);
        shareSucceedCanvas.SetActive(false);
        findEggCanvas.SetActive(false);
        editEggNameCanvas.SetActive(false);

        Debug.Log("Canvas finished");
        // Init Reward
        score    = 0;
        eggIndex = -1;
        eggName  = "";

        Debug.Log("REward f");

        // Init Game States
        buildingDestroyedCount = 0;
        win               = false;
        shareStatus       = FacebookManager.ShareStatus.None;
        fallenPiecesCount = 0;

        // Shake Action
        shakeDetectionThreshold *= shakeDetectionThreshold;
        lowPassValue             = Input.acceleration;

        Debug.Log("Shake f ");
        // To Be Used GameObjects
        shakeText = gameCanvas.transform.FindChild("ShakeText").gameObject;
        shakeText.SetActive(false);
        ground      = GameObject.FindGameObjectWithTag("ground");
        progressBar = gameCanvas.transform.FindChild("FullImage").gameObject;

        Debug.Log("Progress finished");

        GetComponent <SpriteControl> ().deactivateColor();

        MainMenuScript mainMenu = mainController.GetComponent <MainMenuScript> ();

        kaiju         = GameObject.Find("Kaiju").gameObject;
        selectedKaiju = mainMenu.SelectedKaiju;
        if (selectedKaiju != null)
        {
            kaiju.GetComponent <MonsterCreator> ().
            setUpMonster(selectedKaiju.HeadType, selectedKaiju.HandType, selectedKaiju.BodyType, selectedKaiju.MonsterColor);
        }
        else
        {
            kaiju.GetComponent <MonsterCreator> ().
            setUpMonster(6, 1, 1, Color.white);
        }

        Debug.Log("Setup Kaiju");

        StartCoroutine(closeDestroyText(2.0f));
    }
Beispiel #19
0
    void initCamera(CameraMode mode)
    {
        mainController = GameObject.Find("MainController").GetComponent <MainController>();
        startCamera();
        takingPhoto = false;
        CAMREADY    = false;

        KaijuSelfieModel.SetActive(false);
        BuildingSelfieModel.SetActive(false);
        EggSelfieModel.SetActive(false);
        EggCheckinModel.SetActive(false);

        MainMenuScript mainMenu = mainController.gameObject.GetComponent <MainMenuScript> ();

        Debug.Log(mode);
        switch (mode)
        {
        case CameraMode.BuildingDestruction:
            BuildingSelfieModel.SetActive(true);
            Kaiju kaiju = mainMenu.SelectedKaiju;
            BuildingSelfieModel.GetComponent <MonsterCreator> ().setUpMonster(kaiju.HeadType, kaiju.HandType, kaiju.BodyType, kaiju.MonsterColor);
            break;

        case CameraMode.EggHatching:
            // TODO: get egg information from spatial
            EggSelfieModel.SetActive(true);
            Debug.Log(mainController.selectedEgg.Index);
            GameObject Egg = HatchingEggs [mainController.selectedEgg.Index - 1];
            Egg.SetActive(true);
            GameObject kaijuHead = GameObject.Find("KaijuHead");
            kaijuHead.SetActive(false);
            StartCoroutine(ShowKaijuHead(kaijuHead));
            kaijuHead.GetComponent <SpriteRenderer> ().sprite = mainController.selectedEgg.KaijuEmbryo.HeadSprite;
            break;

        case CameraMode.Kaiju:
            KaijuSelfieModel.SetActive(true);
            Kaiju selectedKaiju = mainMenu.SelectedKaiju;
            KaijuSelfieModel.GetComponent <MonsterCreator> ().setUpMonster(selectedKaiju.HeadType, selectedKaiju.HandType, selectedKaiju.BodyType, selectedKaiju.MonsterColor);
            break;

        case CameraMode.EggCheckin:
            EggCheckinModel.SetActive(true);
            GameObject CheckinEgg = GameObject.Find("CheckinEgg");
            CheckinEgg.GetComponent <SpriteRenderer> ().sprite = mainController.selectedEgg.Sprite;
            //CheckinEgg.transform.localScale = new Vector3 (873.0f / mainController.selectedEgg.Sprite.texture.width, 878.0f / mainController.selectedEgg.Sprite.texture.height);
            break;

        default:
            break;
        }

        uiCanvas.SetActive(false);
        camDisplayCanvas.SetActive(false);
        shareCanvas.SetActive(false);
    }
    public CLevelState(int stageNumber)
    {
        SoundList.instance.playLevelMusic();
        CInfo stageInfo = LevelsInfo.getLevel(stageNumber);

        CGame.inst().setImage("Sprites/level_Background0" + stageInfo.building.ToString());
        CurrentStageData.currentStage = stageNumber;
        switch (stageInfo.Kaiju)
        {
        case 1:
            monster = new Dinosaur(stageInfo.startStage, stageInfo.firstStage, stageInfo.secondStage);
            break;

        case 2:
            monster = new Kong(stageInfo.startStage, stageInfo.firstStage, stageInfo.secondStage);
            break;

        case 3:
            monster = new Kraken(stageInfo.startStage, stageInfo.firstStage, stageInfo.secondStage);
            break;
        }
        current_state = STATE_PLAYING;
        CurrentStageData.difficulty = stageInfo.dif;
        mBoard = new Board(0);
        //monster = new Kong(1, 53, 76);
        building = new Enemy(stageInfo.building);
        mText    = new CText("TEST", CText.alignment.TOP_CENTER);
        mText.setX(0);
        mText.setY(0);
        mText.setColor(Color.black);



        mBoard.movementsLeft = stageInfo.movements;   // MOVE TO CLASS
        mBoard.targetScore   = stageInfo.TargetScore; // MOVE TO CLASS
        float scoreCoefficient = (float)70 / (float)mBoard.targetScore;

        skills = new SkillBar(stageInfo.Kaiju);
        CurrentStageData.assignData(monster, mBoard, scoreCoefficient, skills);
        screenDim = new CSprite();
        screenDim.setSortingLayer("ScreenShade");
        screenDim.setName("Sombra");
        backMenuBttn = new CSprite();
        backMenuBttn.setSortingLayer("TextUI");
        tryAgainBttn = new CSprite();
        tryAgainBttn.setSortingLayer("TextUI");
        btnNextScreen = new CSprite();
        btnNextScreen.setSortingLayer("TextUI");
        optionsBttn = new CSprite();
        optionsBttn.setImage(Resources.Load <Sprite>("Sprites/Buttons/Pause_Button"));
        optionsBttn.setXY(680, 40);
        optionsBttn.setSortingLayer("TextUI");
    }
Beispiel #21
0
    // TODO add other relevant fields

    private OwnedEgg(int imageIndex, string id, LocationCombination combo, string kaijuName, Kaiju kaiju)
    {
        _id                = id;
        _imageIndex        = imageIndex;
        _requests          = new IdList();
        _requiredLocations = combo;
        //_size = STARTING_EGG_SIZE;
        _checkInnableMarkers = new List <HatchLocationMarker>();
        _checkInnableLocs    = new Dictionary <BasicMarker, HashSet <GenericLocation> >();
        _hatchable           = !(PlacesToTake.Count() > 0);
        _kaiju           = kaiju;
        _kaiju.GivenName = kaijuName;
    }
Beispiel #22
0
    public static bool IsPositionValidForSettleKaiju(WorldPosition worldPosition, Kaiju kaiju = null)
    {
        if (!KaijuCouncil.IgnoreRegionRequirements && !KaijuCouncil.IsRegionValidForSettleKaiju(KaijuCouncil.worldPositionService.GetRegion(worldPosition)))
        {
            return(false);
        }
        if (KaijuCouncil.worldPositionService.IsFrozenWaterTile(worldPosition) || KaijuCouncil.worldPositionService.IsWaterTile(worldPosition))
        {
            return(false);
        }
        Army armyAtPosition = KaijuCouncil.worldPositionService.GetArmyAtPosition(worldPosition);

        return(KaijuCouncil.attractivenessMap.GetValue(worldPosition) && (armyAtPosition == null || (kaiju != null && armyAtPosition.Empire.Index == kaiju.Empire.Index && armyAtPosition.GUID == kaiju.KaijuArmy.GUID)) && KaijuCouncil.worldPositionService.GetDistrict(worldPosition) == null);
    }
Beispiel #23
0
    public void SpawnKaiju(WorldPosition targetPosition, GameEntityGUID kaijuGUID, GameEntityGUID garrisonGUID, GameEntityGUID armyGUID, GameEntityGUID monsterGUID, GameEntityGUID[] licesGUIDs)
    {
        Kaiju kaiju = new Kaiju(base.Empire as KaijuEmpire, kaijuGUID);

        string[] kaijuDescriptors = this.KaijuEmpire.KaijuFaction.KaijuDescriptors;
        for (int i = 0; i < kaijuDescriptors.Length; i++)
        {
            SimulationDescriptor descriptor = null;
            if (this.descriptorsDatabase.TryGetValue(kaijuDescriptors[i], out descriptor))
            {
                kaiju.AddDescriptor(descriptor, false);
            }
        }
        KaijuGarrison        kaijuGarrison = new KaijuGarrison(garrisonGUID, targetPosition);
        SimulationDescriptor value         = this.descriptorsDatabase.GetValue(Kaiju.ClassKaijuGarrison);

        kaijuGarrison.AddDescriptor(value, false);
        kaijuGarrison.SetPropertyBaseValue(SimulationProperties.MaximumUnitSlotCount, (float)(licesGUIDs.Length + 1));
        kaiju.SetGarrison(kaijuGarrison);
        KaijuArmy            kaijuArmy = this.departmentOfDefense.CreateKaijuArmy(armyGUID, targetPosition, true);
        SimulationDescriptor value2    = this.descriptorsDatabase.GetValue(Kaiju.ClassKaijuArmy);

        kaijuArmy.AddDescriptor(value2, false);
        kaijuArmy.SetPropertyBaseValue(SimulationProperties.MaximumUnitSlotCount, (float)(licesGUIDs.Length + 1));
        kaiju.SetArmy(kaijuArmy);
        this.gameEntityRepositoryService.Register(kaijuArmy);
        this.gameEntityRepositoryService.Register(kaiju);
        kaiju.ChangeToWildState();
        kaiju.ChangeToGarrisonMode(false);
        Unit unit = DepartmentOfDefense.CreateUnitByDesign(monsterGUID, this.KaijuEmpire.FindMonsterDesign(true));

        kaiju.AddUnit(unit);
        for (int j = 0; j < licesGUIDs.Length; j++)
        {
            Unit unit2 = DepartmentOfDefense.CreateUnitByDesign(licesGUIDs[j], this.KaijuEmpire.FindLiceDesign(true));
            kaiju.AddUnit(unit2);
        }
        this.lastLiceArmySpawnTurn = (this.gameService.Game as global::Game).Turn;
        this.Kaiju = kaiju;
        this.KaijuEmpire.AddKaiju(kaiju);
        kaiju.Refresh(false);
        foreach (global::Empire empire in (this.gameService.Game as global::Game).Empires)
        {
            if (empire is MajorEmpire)
            {
                this.eventService.Notify(new EventKaijuSpawned(empire, this.Kaiju));
            }
        }
    }
Beispiel #24
0
 public static Kaiju[] GetAllKaiju(int count, string newName, int numberName, float version, int distanceOfJump = 3, int flyghtSpeed = 4, float thicknessOfTitanium = 1.1f, int levelOfLibido = 1, int lightningStrikes = 1)
 {
     if (count > 0 & numberName > 0)
     {
         int sumOfAllKaiju = count * 6;
         Kaiju[] masAllKaiju = new Kaiju[sumOfAllKaiju];
         Kaiju[] tempKaiju = GetKaiju(namesKaiju.Kaiju, numberName, version, count);
         Gorilla[] tempGorilla = GetGorilla(namesKaiju.Gorila, numberName, version, distanceOfJump, count);
         Flying[] tempFluing = GetFlying(namesKaiju.Flying, numberName, version, flyghtSpeed, count);
         Titan[] tempTitan = GetTitan(namesKaiju.Titan, numberName, version, thicknessOfTitanium, count);
         Apollon[] tempApollon = GetApollon(namesKaiju.Apollon, numberName, version, thicknessOfTitanium, levelOfLibido, count);
         Zeus[] tempZeus = GetZeus(namesKaiju.Zeus, numberName, version, thicknessOfTitanium, lightningStrikes, count);
         for (int i = 0; i < count; i++)
         {
             tempKaiju[i].Name = "Kaiju: " + newName + numberName++;
             masAllKaiju[i] = tempKaiju[i];
         }
         for (int i = count, j = 0; i < count * 2; i++, j++)
         {
             tempGorilla[j].Name = "Gorilla: " + newName + numberName++;
             masAllKaiju[i] = tempGorilla[j];
         }
         for (int i = count * 2, j = 0; i < count * 3; i++, j++)
         {
             tempFluing[j].Name = "Fluing: " + newName + numberName++;
             masAllKaiju[i] = tempFluing[j];
         }
         for (int i = count * 3, j = 0; i < count * 4; i++, j++)
         {
             tempTitan[j].Name = "Titan: " + newName + numberName++;
             masAllKaiju[i] = tempTitan[j];
         }
         for (int i = count * 4, j = 0; i < count * 5; i++, j++)
         {
             tempApollon[j].Name = "Apollon: " + newName + numberName++;
             masAllKaiju[i] = tempApollon[j];
         }
         for (int i = count * 5, j = 0; i < count * 6; i++, j++)
         {
             tempZeus[j].Name = "Zeus: " + newName + numberName++;
             masAllKaiju[i] = tempZeus[j];
         }
         return masAllKaiju;
     }
     else
     {
         throw new System.Exception("The parameter is incorrect!");
     }
 }
    public override bool CanExecute(Army army, ref List <StaticString> failureFlags, params object[] parameters)
    {
        if (!base.CanExecute(army, ref failureFlags, parameters))
        {
            return(false);
        }
        if (army.IsNaval)
        {
            failureFlags.Add(ArmyAction.NoCanDoWhileHidden);
            return(false);
        }
        KaijuArmy kaijuArmy = army as KaijuArmy;

        if (kaijuArmy == null)
        {
            return(false);
        }
        if (!base.CanAfford(army))
        {
            failureFlags.Add(ArmyAction.NoCanDoWhileCannotAffordCosts);
            return(false);
        }
        if (!base.CheckActionPointsPrerequisites(army))
        {
            failureFlags.Add(ArmyAction.NoCanDoWhileNotEnoughActionPointsLeft);
            return(false);
        }
        if (army.IsInEncounter)
        {
            if (failureFlags != null)
            {
                failureFlags.Add(ArmyAction.NoCanDoWhileLockedInBattle);
            }
            return(false);
        }
        Kaiju kaiju = kaijuArmy.Kaiju;

        if (Services.GetService <IGameService>().Game.Services.GetService <IWorldPositionningService>().IsWaterTile(kaijuArmy.WorldPosition))
        {
            failureFlags.Add(ArmyAction.NoCanDoWhileOnFrozenWaterTile);
            return(false);
        }
        if (kaiju.CanChangeToGarrisonMode())
        {
            return(true);
        }
        failureFlags.Add(ArmyAction_SettleKaiju.NoCanDoWhileRegionIsOwned);
        return(false);
    }
    private void SetupKaijuPortraits(AgeTransform tableitem, Kaiju kaiju, int index)
    {
        KaijuTechPortrait component = tableitem.GetComponent <KaijuTechPortrait>();

        component.SetupPortrait(kaiju, base.Empire);
        if (component.KaijuGuiElement != null)
        {
            component.AgeTransform.X = ((!AgeUtils.HighDefinition) ? component.KaijuGuiElement.X : (component.KaijuGuiElement.X * AgeUtils.HighDefinitionFactor));
            component.AgeTransform.Y = ((!AgeUtils.HighDefinition) ? component.KaijuGuiElement.Y : (component.KaijuGuiElement.Y * AgeUtils.HighDefinitionFactor));
            return;
        }
        Diagnostics.LogError("The Kaiju doesn't have a KaijuTechPortrait");
        component.AgeTransform.X = 0f;
        component.AgeTransform.Y = 0f;
    }
Beispiel #27
0
    public void FillTargets(Army army, List <IGameEntity> gameEntities, ref List <StaticString> failureFlags)
    {
        if (army == null)
        {
            throw new ArgumentNullException("army");
        }
        IGameService service = Services.GetService <IGameService>();

        if (service == null)
        {
            return;
        }
        global::Game x = service.Game as global::Game;

        if (x == null)
        {
            return;
        }
        IWorldPositionningService service2 = service.Game.Services.GetService <IWorldPositionningService>();

        Diagnostics.Assert(service2 != null);
        for (int i = 0; i < 6; i++)
        {
            WorldPosition neighbourTile = service2.GetNeighbourTile(army.WorldPosition, (WorldOrientation)i, 1);
            Region        region        = service2.GetRegion(neighbourTile);
            if (region != null && region.Kaiju != null)
            {
                Kaiju kaiju = region.Kaiju;
                if (this.IsKaijuValidForTame(army, kaiju, ref failureFlags, true) && !gameEntities.Contains(kaiju))
                {
                    gameEntities.Add(kaiju);
                }
            }
            Army armyAtPosition = service2.GetArmyAtPosition(neighbourTile);
            if (armyAtPosition != null && armyAtPosition is KaijuArmy)
            {
                KaijuArmy kaijuArmy = armyAtPosition as KaijuArmy;
                if (kaijuArmy != null)
                {
                    Kaiju kaiju2 = kaijuArmy.Kaiju;
                    if (kaiju2 != null && kaiju2.OnArmyMode() && !kaiju2.IsStunned() && !gameEntities.Contains(kaiju2))
                    {
                        gameEntities.Add(kaijuArmy.Kaiju);
                    }
                }
            }
        }
    }
    private void CreateRelocationNeeds()
    {
        float num = 0f;

        foreach (Kaiju kaiju in this.MajorEmpire.TamedKaijus)
        {
            if (kaiju.OnArmyMode())
            {
                num += kaiju.KaijuArmy.GetPropertyValue(SimulationProperties.LandMilitaryPower);
            }
            else
            {
                num += kaiju.KaijuGarrison.GetPropertyValue(SimulationProperties.LandMilitaryPower);
            }
        }
        this.KaijusToRise.Clear();
        this.KaijuSupport = (this.DiplomacyLayer.GetMilitaryPowerDif(false) - num <= (base.AIEntity.Empire.GetPropertyValue(SimulationProperties.LandMilitaryPower) - num) * 0.4f);
        List <Region>       list  = new List <Region>();
        List <StaticString> list2 = new List <StaticString>();

        for (int i = 0; i < this.MajorEmpire.TamedKaijus.Count; i++)
        {
            Kaiju kaiju2 = this.MajorEmpire.TamedKaijus[i];
            list2.Clear();
            if (!kaiju2.OnArmyMode() && this.garrisonAction_MigrateKaiju.CanExecute(kaiju2.KaijuGarrison, ref list2, new object[0]) && this.garrisonAction_MigrateKaiju.ComputeRemainingCooldownDuration(kaiju2.KaijuGarrison) < 1f)
            {
                if (!this.KaijuSupport || !this.IsKaijuValidForSupport(kaiju2))
                {
                    Region mostProfitableRegionForKaiju = this.GetMostProfitableRegionForKaiju(kaiju2, list);
                    if (mostProfitableRegionForKaiju != null && kaiju2.Region != mostProfitableRegionForKaiju)
                    {
                        WorldPosition bestDefensiveKaijuPosition = this.GetBestDefensiveKaijuPosition(mostProfitableRegionForKaiju);
                        if (bestDefensiveKaijuPosition.IsValid)
                        {
                            list.Add(mostProfitableRegionForKaiju);
                            KaijuRelocationMessage message = new KaijuRelocationMessage(kaiju2.GUID, bestDefensiveKaijuPosition);
                            base.AIEntity.AIPlayer.Blackboard.AddMessage(message);
                        }
                    }
                }
                else
                {
                    this.KaijusToRise.Add(kaiju2.GUID);
                }
            }
        }
    }
 protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
 {
     if (this.ticket != null)
     {
         if (!this.orderExecuted)
         {
             return(State.Running);
         }
         if (this.ticket.PostOrderResponse == PostOrderResponse.PreprocessHasFailed)
         {
             this.orderExecuted       = false;
             this.ticket              = null;
             aiBehaviorTree.ErrorCode = 1;
             return(State.Failure);
         }
         this.orderExecuted = false;
         this.ticket        = null;
         return(State.Success);
     }
     else
     {
         Army army;
         if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None)
         {
             return(State.Failure);
         }
         if (!(army is KaijuArmy))
         {
             return(State.Failure);
         }
         Kaiju kaiju = (army as KaijuArmy).Kaiju;
         if (kaiju == null || !(army.Empire is MajorEmpire) || kaiju.OnGarrisonMode() || !KaijuCouncil.IsPositionValidForSettleKaiju(army.WorldPosition, kaiju))
         {
             return(State.Failure);
         }
         this.failuresFlags.Clear();
         if (!this.armyAction_SettleKaiju.CanExecute(army, ref this.failuresFlags, new object[0]))
         {
             return(State.Failure);
         }
         this.orderExecuted = false;
         this.armyAction_SettleKaiju.Execute(army, aiBehaviorTree.AICommander.Empire.PlayerControllers.AI, out this.ticket, new EventHandler <TicketRaisedEventArgs>(this.Order_TicketRaised), new object[0]);
         return(State.Running);
     }
 }
    protected override State Execute(AIBehaviorTree aiBehaviorTree, params object[] parameters)
    {
        Army army;

        if (base.GetArmyUnlessLocked(aiBehaviorTree, "$Army", out army) != AIArmyMission.AIArmyMissionErrorCode.None)
        {
            return(State.Failure);
        }
        ArmyAction             armyAction = null;
        IDatabase <ArmyAction> database   = Databases.GetDatabase <ArmyAction>(false);

        if (database == null || !database.TryGetValue(this.ArmyActionReadOnlyName, out armyAction))
        {
            return(State.Failure);
        }
        bool flag = false;
        ArmyAction_TameUnstunnedKaiju armyAction_TameUnstunnedKaiju = armyAction as ArmyAction_TameUnstunnedKaiju;

        if (ELCPUtilities.UseELCPSymbiosisBuffs && armyAction_TameUnstunnedKaiju != null && this.TargetVarName != string.Empty)
        {
            Kaiju kaiju = (aiBehaviorTree.Variables[this.TargetVarName] as IGameEntity) as Kaiju;
            if (kaiju != null)
            {
                flag = ELCPUtilities.CanELCPTameKaiju(kaiju, armyAction_TameUnstunnedKaiju.TameCost, army.Empire);
            }
        }
        else
        {
            flag = armyAction.CanAfford(army.Empire);
        }
        if (flag)
        {
            if (aiBehaviorTree.Variables.ContainsKey(this.Output_ArmyActionVarName))
            {
                aiBehaviorTree.Variables[this.Output_ArmyActionVarName] = this.ArmyActionReadOnlyName;
            }
            else
            {
                aiBehaviorTree.Variables.Add(this.Output_ArmyActionVarName, this.ArmyActionReadOnlyName);
            }
            return(State.Success);
        }
        aiBehaviorTree.ErrorCode = 38;
        return(State.Failure);
    }
    public void addKaijuMenuItem(Kaiju k)
    {
        _lastPadding.transform.SetParent(null, false);
        GameObject kaijuMenuItem = GameObject.Instantiate(_kaijuMenuItemPrefab);

        kaijuMenuItem.transform.SetParent(_kaijuMenuContentPanel, false);
        kaijuMenuItem.GetComponent <KaijuMenuItem>().Kaiju = k;
        _kaijuMenuItems.Add(kaijuMenuItem.GetComponent <KaijuMenuItem>());
        _state.KaijuIndex = _kaijuMenuItems.Count - 1;
        if (_kaijuMenuItems.Count >= 2)
        {
            if (_kaijuMenuItems.Count == 2)
            {
                _lastPadding.GetComponent <KaijuMenuItem> ().Kaiju = _kaijuMenuItems [0].Kaiju;
            }
            _firstPaddingKaijuMenuItem.Kaiju = _kaijuMenuItems[_kaijuMenuItems.Count - 1].Kaiju;
        }
        _lastPadding.transform.SetParent(_kaijuMenuContentPanel, false);
    }
Beispiel #32
0
    // Use this for initialization
    public override void Start()
    {
        Instance = this;

        theCity = GameObject.FindGameObjectWithTag("City").GetComponent<CityManager>();

        player = GameObject.FindGameObjectWithTag("Player");

        kaiju = player.GetComponent<Kaiju>();

        cityWidth = theCity.getWidth();

        float x = theCity.gameObject.transform.position.x;

        if (x < 1)
        {
            // just incase this is 0 and messes with the math.
            x = 1;
        }

        float z = theCity.gameObject.transform.position.z;

        if (z < 1)
        {
            // just incase this is 0 and messes with the math.
            z = 1;
        }

        //X of City * width in tiles * width of tiles.

        cityBoundary.x = x + theCity.getWidth() * 2;

        cityBoundary.z = z + theCity.getDepth() * 2;

        StartCoroutine("Spawn");

        base.Start();
    }
Beispiel #33
0
        public void Add(params Kaiju[] kaiju)
        {
            if (kaiju != null & kaiju.Length != 0)
            {
                if (countKaiju + kaiju.Length > masKaiju.Length)
                {
                    Kaiju[] copyMasKaiju = new Kaiju[masKaiju.Length];
                    for (int i = 0; i < masKaiju.Length; i++)
                    {
                        copyMasKaiju[i] = masKaiju[i];
                    }
                    masKaiju = new Kaiju[countKaiju + kaiju.Length + 10];
                    for (int i = 0; i < copyMasKaiju.Length; i++)
                    {
                        masKaiju[i] = copyMasKaiju[i];
                    }
                }

                for (int i = 0; i < kaiju.Length; i++)
                {
                    masKaiju[countKaiju] = kaiju[i];
                    countKaiju++;
                }

            }
        }
Beispiel #34
0
 private Kaiju[] GetArrayForName(string name)
 {
     int countKaijuMethod = 0;
     string NameType = name;
     for (int i = 0; i < countKaiju; i++)
     {
         Type t1 = masKaiju[i].GetType();
         if (NameType == t1.Name)
         {
             countKaijuMethod++;
         }
     }
     Kaiju[] mKaiju = new Kaiju[countKaijuMethod];
     for (int iKaiju = 0, iTrueKaiju = 0; iKaiju < countKaiju; iKaiju++)
     {
         Type t1 = masKaiju[iKaiju].GetType();
         if (NameType == t1.Name)
         {
             mKaiju[iTrueKaiju++] = masKaiju[iKaiju];
         }
         if (iTrueKaiju == countKaijuMethod)
         {
             break;
         }
     }
     return mKaiju;
 }
Beispiel #35
0
 public Kaiju[] GetArrayKaiju()
 {
     Kaiju[] tempMasKaiju = new Kaiju[countKaiju];
     for (int i = 0; i < countKaiju; i++)
     {
         tempMasKaiju[i] = masKaiju[i];
     }
     return tempMasKaiju;
 }
Beispiel #36
0
 public void AddToFile(Kaiju obj)
 {
     StreamWriter sw = new StreamWriter(Resource_1.pathSaveKaiju, true);
     sw.WriteLine(obj.StringForFile());
     sw.Close();
 }
Beispiel #37
0
        public Kaiju[] ReadFile()
        {
            int counterObj = CountObjInFile();
            Kaiju[] resultArrayKaiju = new Kaiju[counterObj];
            StreamReader sr = new StreamReader(Resource_1.pathSaveKaiju);
            string[] ArrayStringData;
            string tempString;
            string name=null;
            float version = 0;
            int id;
            float thicknessOfTitanium=0;
            int levelOfLibido=0;
            int lightningStrikes=0;
            int distanceOfJump=0;
            int flightSpeed=0;

            for (int i = 0; i < counterObj; i++)
            {
                tempString = sr.ReadLine();
                ArrayStringData = ParseString(tempString);
                for (int j = 0; j < ArrayStringData.Length; j++)
                {
                    if (ArrayStringData[j].IndexOf("id") > -1)
                    {
                        Int32.TryParse(ArrayStringData[j + 1], out id);
                    }
                    if (ArrayStringData[j].IndexOf("Name") > -1)
                    {
                        name = ArrayStringData[j + 1];
                    }
                    if (ArrayStringData[j].IndexOf("Version") > -1)
                    {
                        float.TryParse(ArrayStringData[j + 1], out version);
                    }
                    if (ArrayStringData[j].IndexOf("ThicknessOfTitanium") > -1)
                    {
                        float.TryParse(ArrayStringData[j + 1], out thicknessOfTitanium);
                    }
                    if (ArrayStringData[j].IndexOf("LevelOfLibido") > -1)
                    {
                        Int32.TryParse(ArrayStringData[j + 1], out levelOfLibido);
                    }
                    if (ArrayStringData[j].IndexOf("LightningStrikes") > -1)
                    {
                        Int32.TryParse(ArrayStringData[j + 1], out lightningStrikes);
                    }
                    if (ArrayStringData[j].IndexOf("DistanceOfJump") > -1)
                    {
                        Int32.TryParse(ArrayStringData[j + 1], out distanceOfJump);
                    }
                    if (ArrayStringData[j].IndexOf("FlightSpeed") > -1)
                    {
                        Int32.TryParse(ArrayStringData[j + 1], out flightSpeed);
                    }
                }
                switch (ArrayStringData[0])
                {
                    case "Kaiju":
                        resultArrayKaiju[i] = new Kaiju(name, version);
                        break;
                    case "Titan":
                        resultArrayKaiju[i] = new Titan(thicknessOfTitanium, name, version);
                        break;
                    case "Apollon":
                        resultArrayKaiju[i] = new Apollon(levelOfLibido, thicknessOfTitanium, name, version);
                        break;
                    case "Zeus":
                        resultArrayKaiju[i] = new Zeus(lightningStrikes, thicknessOfTitanium, name, version);
                        break;
                    case "Gorilla":
                        resultArrayKaiju[i] = new Gorilla(distanceOfJump, name, version);
                        break;
                    case "Flying":
                        resultArrayKaiju[i] = new Flying(flightSpeed, name, version);
                        break;
                }
            }
            sr.Close();

            return resultArrayKaiju;
        }
Beispiel #38
0
 public static Kaiju[] GetKaiju(namesKaiju name, int numberName, float version, int count)
 {
     if (name >= namesKaiju.Kaiju & name <= namesKaiju.Zeus & numberName > 0 & count > 0)
     {
         Kaiju[] masKaiju = new Kaiju[count];
         for (int i = 0; i < masKaiju.Length; i++)
         {
             masKaiju[i] = new Kaiju(name.ToString() + numberName++, version);
         }
         return masKaiju;
     }
     else
     {
         throw new System.Exception("The parameter is incorrect!");
     }
 }